wake-up-neo.com

Adicionar programaticamente item de menu no componente

Estou tentando criar um componente em que o usuário pode adicionar um item de menu a um menu existente depois de criar o artigo (ou selecionar em uma lista de artigos). O mais próximo que pude encontrar de um exemplo de tipo foi a resposta abaixo, mas era para o 2.x e parece o caminho a seguir. Mas uma coisa que notei foi que não havia nada para mostrar que ele adicionava dados à tabela #__assets.

Estou faltando alguma coisa aqui, mas lembro que quando um item de menu é criado quando adiciono um no back-end, ele também insere um registro na tabela de ativos. Portanto, se eu quisesse inserir um novo item de menu, precisaria inserir os dados relevantes na tabela #_assets separadamente?

https://stackoverflow.com/questions/12651075/programatically-create-menu-item-in-joomla?lq=1

6
sifu

em primeiro lugar - os itens de menu não são colocados na tabela de ativos; portanto, essa pergunta é sobre um problema inexistente. O link fornecido na pergunta fornece a resposta correta para o joom 2.5 e 3.x. mas para referência, aqui está um exemplo na tabela de preparação de um modelo.

$menuTable = JTableNested::getInstance('Menu');

// which menu you want to add to - 
$menutype = 'thisismymenusname';

// this is heading menu item but what data you have and require will vary per case - just look at an appropriate row in yr menu table
$menuData = array(
  'menutype' => $menutype,
  'title' => $table->alias,
  'alias' => $table->alias,
  'path' => $table->alias,
  'type' => 'heading',
  'component_id' => 0,                  
  'language' => '*',
  'published' => 1,
);

// this item is at the root so the parent id needs to be 1
$parent_id = 1;
$menuTable->setLocation($parent_id, 'last-child');

// save is the shortcut method for bind, check and store
if (!$menuTable->save($menuData))
{
  $this->setError($menuTable->getError());
  return false;
}
5
jamesgarrett

Não é realmente uma solução, mas uma ideia:

Recentemente, aprendi sobre o Kazaam! , um plug-in que cria um menu com base na sua estrutura de categoria e artigo.

Como o site afirma, All code is open source, and you are completely free to make changes.. Observando o código-fonte, você poderá ver como ele funciona e talvez usar partes do código em seu próprio projeto.

3
johanpw

O código mais fácil e legível que funcionou para mim é aqui => https://webkul.com/blog/menu-item-joomla-rebuild-automatically/

0
Pratyush