Как вызвать восстановление меню из пользовательского компонента переднего плана в Joomla? - PullRequest
6 голосов
/ 26 марта 2012

Я использую Joomla 2.5 для создания специального компонента, который выполняется из внешнего интерфейса.

Этот компонент анализирует XML-файл для создания меню Joomla, я выполняю запрос INSERT INTO #__ menu , но я оставляю 0 для полей lft и rgt .

Меню строится очень грязно, и когда я нажимаю кнопку Rebuild на заднем конце, после этого все выглядит идеально, path , lft , и rgt поля заполняются правильно.

Я потратил 2 дня, пытаясь выполнить задачу rebuild из контроллера и модуля моего интерфейсного компонента, я даже пытался использовать jimport ('joomla.database.tablenested') но мое отсутствие знаний о PHP OOP не помогает мне правильно выполнить перестроить функцию ...

Последнее, что я написал, было:

jimport('joomla.database.tablenested');
class BSImportModelBSImport extends JModel
{
  ...
  function theimport()
  {
    ...
    $db =& JFactory::getDBO();
    $menu = new JTableNested('Menu', 'id',&$db);
    return $menu->rebuild();
  }
}

Пожалуйста, не бросайте камни мне в голову, если мой вопрос выглядит глупо ... Мне действительно нужна помощь ...

1 Ответ

1 голос
/ 04 мая 2013

Я использую метод сохранения таблицы меню:

$data = array ( 
    'id' => 0 ,
    'title' => '{menu name}' ,
    'note' => '',
    'link' => '{link}',
    'menutype' => '{menutype}' ,
    'type' => 'url', 
    'published' => 1 ,
    'parent_id' => 1 ,
    'level' => 1 ,
    'component_id' => 0 ,
    'browserNav' => 0 ,
    'access' => getLevel() ,
    'template_style_id' => 0 ,
    'language' => '*' ,
    'params' => array ( 
        'menu-anchor_title' => '' ,
        'menu-anchor_css' => '' ,
        'menu_image' => '{url of logo for menu}',
        'menu_text' => 1 ) ,
);
$menuTable = JTable::getInstance('Menu', 'JTable', array());
$menuTable->save($data);

Этот метод создает новое меню и автоматически перестраивается.

...