it-swarm.it

Crea un nuovo tipo di menu, definisci i campi, metadata.xml

Voglio creare un layout personalizzato com_tags/tags, tuttavia devo mantenere il campo parent_id per la voce di menu.

Quello che ho fatto è creare:

/templates/mytemplate/html/com_tags/tags/species.php
/templates/mytemplate/html/com_tags/tags/species.xml (copied from administrator/components/tags/config.xml)

Ciò mostra una voce "Specie" nel popup del tipo di menu, tuttavia nessuno dei campi di personalizzazione è più presente. Ho bisogno del campo parent_id, che si trova nella voce "Elenco di tutti i tag".

Ho eseguito il debug del codice e apparentemente ho bisogno

/templates/mytemplate/html/com_tags/metadata.xml

che sembra contenere una sorta di voce di "menu". Non riesco a trovare alcun esempio di come dovrebbe essere formattato.

Questo è un file di esempio dal backup di Akeeba https://github.com/akeeba/contactus/blob/master/component/frontend/views/item/metadata.xml ma non riesco a capire come aggiungere opzioni qui?

1
jdog

Se capisco la tua domanda, stai provando a creare un tipo di menu personalizzato per il componente com_tags e devi impostare l'id per la voce di menu quando lo crei nel menu manager.

In tal caso, non dovresti copiare config.xml

Dovresti copiare

joomlaRoot/components/com_tags/views/tags/default.xml 

che ha i campi per l'id genitore, nonché i parametri definiti in esso.

Assicurati solo di cambiare il nome in species.xml e di cambiare il testo del titolo/opzione in modo che Joomla sappia che si tratta di un layout diverso.

Spero che aiuti.

1
Mathew Lenning

Se sto capendo correttamente, allora c'è un'altra opzione, che è quella di "ignorare" il modo normale che è difficile da ottenere senza una sorta di override e usare il fatto che il tuo override è un file php per ottenere le informazioni separatamente.

Come ottenere Itemid tramite URL e passarlo a JRoute

La mia risposta qui mostra quanto segue per creare un collegamento a una pagina specifica ottenendo l'ID della voce di menu.

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->id);

Ora in questo caso $menuItem È in realtà un oggetto che contiene le informazioni su quella voce di menu.

così.....

$app = JFactory::getApplication(); 
$menu = $app->getMenu();
$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );
echo JRoute::_('index.php?Itemid='.$menuItem->parent_id);

Dovresti procurarti un collegamento alla voce di menu principale.

Ma potresti aver bisogno solo della voce di menu corrente, quindi regolando questa riga:

$menuItem = $menu->getItems( 'link', 'index.php?option=com_example&view=something', true );

a:

$menuItem = $menu->getActive();

Dovresti essere in grado di ottenere solo il link del genitore della pagina corrente. La sperimentazione probabilmente può andare molto oltre e $menu->getItems() ha molte opzioni che puoi usare (anche se non sono stato in grado di trovare una buona pagina di documentazione su di esso).

1
Jordan Ramstad