it-swarm-es.tech

Crear nuevo tipo de menú, definir campos, metadata.xml

Quiero crear un diseño personalizado de com_tags/tags, sin embargo, necesito mantener el campo parent_id para el elemento del menú.

Lo que he hecho es crear:

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

Esto muestra una entrada de "Especie" en el menú emergente de tipo de menú, sin embargo, ninguno de los campos de personalización ya está allí. Necesito el campo parent_id, que está en la entrada "Lista de todas las etiquetas".

Depuré el código y aparentemente necesito

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

que parece necesitar contener algún tipo de entrada de "menú". No puedo encontrar ningún ejemplo de cómo debería formatearse.

Este es un archivo de ejemplo de Akeeba backup https://github.com/akeeba/contactus/blob/master/component/frontend/views/item/metadata.xml pero no puedo entender cómo agregar opciones aquí?

1
jdog

Si entiendo su pregunta, está tratando de crear un tipo de menú personalizado para el componente com_tags y necesita establecer la identificación del elemento del menú cuando lo crea en el administrador de menús.

Si ese es el caso, no debe copiar el config.xml

Deberías copiar

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

que tiene los campos para la identificación principal, así como los parámetros definidos en ella.

Solo asegúrese de cambiar el nombre a species.xml y cambiar el título/texto de opción para que Joomla sepa que este es un diseño diferente.

Espero que esto ayude.

1
Mathew Lenning

Si estoy entendiendo correctamente, entonces hay otra opción, y es "ignorar" la forma normal que es difícil de lograr sin algún tipo de anulación y usar el hecho de que su anulación es un archivo php para obtener la información por separado.

Cómo obtener Itemid por URL y pasarlo a JRoute

Mi respuesta aquí muestra lo siguiente para crear un enlace a una página específica al obtener la ID del elemento del menú.

$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);

Ahora en este caso $menuItem Es en realidad un objeto que contiene la información sobre ese elemento del menú.

asi que.....

$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);

Debería obtener un enlace al elemento del menú principal.

Pero es posible que solo necesite el elemento del menú actual, así que ajustando esta línea:

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

a:

$menuItem = $menu->getActive();

Debería poder obtener el enlace del padre de la página actual solamente. La experimentación probablemente puede llevar esto mucho más allá, así como $menu->getItems() tiene muchas opciones que puede usar (aunque no he podido encontrar una buena página de documentación).

1
Jordan Ramstad