Joomla.it Forum
Non solo Joomla... => Sviluppo => : tomtomeight 16 Aug 2016, 13:44:59
-
Buongiorno
Spiego meglio l'esigenza, ho trovato un componente che aggiunge un framework esterno a joomla, poi scriverò un articolo per illustrarlo meglio. Questo componente una volta installato permette di costruire facilmente delle applicazioni a partire da tabelle db, ora io sto costruendo una applicazione per questo componente e una volta preparato tutta la struttura di file e cartelle compreso il file xml mi sono accorto che aggiunge al db joomla le tabelle necessarie ma non mi va a posizionare le cartelle aggiuntive nel posto ove servono.
Il componente ha una cartella apps per le applicazioni da costruire direttamente da backend o da aggiungere se sviluppate da altri.
Come devo strutturare il file .xml affinché non mi crea una nuova estensione ma mi aggiunge le cartelle alla cartella 'apps' esistente? Ovviamente posso inserirla manualmente ma se devo distibuire applicazioni non è la soluzione migliore.
-
Ciao tomtomeight,
come tipologia di estensione ti consiglierei quindi il package:
<extension type="package" version="3.6" method="upgrade">
e nell'xml nel tag <files> vai ad indicare la cartella dove inserire i file.
Però non hai il controllo se quella determinata estensione è già presente.
-
Grazie Alex
adotterò questo metodo.
-
Per ora ho ottenuto solo di cancellare le cartelle della estensione principale, qualcosa nel naming sbaglio.
Sono stanco ci riprovo domani.
-
puoi tentare anche il type="file"
<extension version="3.6" type="file" method="upgrade">
<files folder="extensions" target="plugins/content/xxxxx/app">
<file>xxx.php</file>
</files>
-
Sì ho fatto così, creato la cartella packages e inserito all'interno i file e cartelle aggiuntive zippati, dopo vari tentativi e aggiustamenti, mi cancella la voce di menù amministrazione della estensione principale e una volta sola mi ha aggiunto le cartelle al posto giusto. Ho seguito lo schema guardando altre estensioni in formato package, devo solo fare attenzione ai nomi dei file, domani ci riprovo.
-
io non ho ben capito cosa vuoi fare,
ma se vuoi solo caricare file e cartelle all'interno di una cartella di una estensione il tutto dovrebbe essere semplice, provo ad allegarti questa estensione che carica i file e cartelle all'interno della Ozio Gallery in components/com_oziogallery3/
-
Sì devo proprio aggiungere file e cartelle a estensione esistente, ho visto la cartella linkata e ti chiedo, posso aggiungere anche istruzioni al manifest.xml per aggiungere tabelle al db?
-
credo di si,
prima dei file nell'xml richiami un file sql:
<install>
<sql>
<file driver="mysql" charset="utf8">install.sql</file>
</sql>
</install>
e nel file install.sql riporti quello che vuoi inserire nel db:
INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES
(454, 'plg_system_stats', 'plugin', 'stats', 'system', 0, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
ma qui le cose si complicano ed è importante fare molta attenzione :)
-
Nel precedente xml cha avevo fatto il db veniva correttamente popolato aggiungendo le tabelle e togliendole in fase di disinstallazione ed anche reinstallando cancellava e ricreava le tabelle. Quello che sbagliavo era che veniva creato un nuovo componente invece di aggiungere solo i file e cartelle nel componente primario. Domani provo e ti faccio sapere. Intanto Grazie.
-
Buongiorno, riprendo questo topic:
Con l'xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="file" method="upgrade"> <fileset>
<files folder="apps-rubrica" target="components/com_datagrill/">
<folder>apps</folder>
</files>
<files folder="apps-rubrica" target="administrator/components/com_datagrill/">
<folder>sql</folder>
</files>
</fileset>
riesco a piazzare file e cartelle come voglio ma non riesco col db ad aggiungere tabelle con
<install>
<sql>
<file driver="mysql" charset="utf8">sql/rubrica.sql</file>
</sql>
</install>
Mi dice che non trova il file, anche se modifico il percorso come per i file e cartelle.
Invece prima con l'xml la sezione relativa al db
<extension type="component" version="3.6" method="upgrade">
<install>
<sql>
<file driver="mysql" charset="utf8">sql/rubrica.sql</file>
</sql>
</install>
mi popolava il db ma mi creava un componente separato invece di aggiungersi a quello esistente oltre a cancellarmi le voci menù admin del componente esistente.
-
puoi provare a richiamare uno script php nel manifest.xml sempre prima di chiamare i file
<scriptfile>file.script.php</scriptfile>
e nel file.script.php metti le istruzioni per il database.
se ti scarichi il pacchetto di installazione della Ozio Gallery puoi "spulciare" come è configurato quel file.
-
Grazie Alex
Mi sembra l'unica strada perché anche separando i pacchetti file e db non risolvo.