Автор Тема: Вывод ссылки на модуль в сайдбаре админки  (Прочитано 115 раз)

03 Август 2019, 21:28:58
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый вечер!

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

Как я понял на примере других модулей, ссылки на модули добавляются в сайдбар админки через хук displayBackOfficeHeader.

Добавил в модуль метод в класс модуля:


    public function hookDisplayBackOfficeHeader($params)
    {
        $config = array(
            'menu_button_text' => $this->l('Тексты на Главной странице'),
            'menu_button_url' => $this->context->link->getAdminLink('AdminModules', true),
            'module_path' => $this->context->link->getAdminLink('AdminModules', true)
        );

        $this->context->smarty->assign(array('fsau_admin_css_js' => $config));
        return $this->display(__FILE__, 'css_js.tpl');
    }


tpl шаблон скопировал с другого модуля, добавил в папку к своему модулю (переименовал переменную на HTT):


<script type="text/javascript">
    var HTT = HTT || { };
    HTT.menu_button_text = '{$fsau_admin_css_js.menu_button_text|escape:'html':'UTF-8'}';
    HTT.menu_button_url = '{$fsau_admin_css_js.menu_button_url|escape:'html':'UTF-8'}';
</script>


Подключил модуль к хуку через раздел Расположение блоков.

Но ссылка выводиться в header, но не в sidebar.

Подскажите как вывести в сайдбар?
04 Август 2019, 10:48:37
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1197
  • Репутация: +8/-1
  • Сообщество PrestaShop
    • Просмотр профиля
private function installTab()
    {
        $tabId = (int) Tab::getIdFromClassName('MyModuleDemoController');
        if (!$tabId) {
            $tabId = null;
        }

        $tab = new Tab($tabId);
        $tab->active = 1;
        $tab->class_name = 'MyModuleDemoController';
        $tab->name = array();
        foreach (Language::getLanguages(true) as $lang) {
            $tab->name[$lang['id_lang']] = 'My Module Demo';
        }
        $tab->id_parent = (int) Tab::getIdFromClassName('ShopParameters');
        $tab->module = $this->name;

        return $tab->save();
    }
04 Август 2019, 10:55:49
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33195
  • Репутация: +26762/-0
    • Просмотр профиля
PrestaShop 1.6
public function installTab($className, $tabName, $tabParentName = false)
{
  $tab = new Tab();
  $tab->active = 1;
  $tab->class_name = $className;
  $tab->name = array();

  foreach (Language::getLanguages(true) as $lang) {
     $tab->name[$lang['id_lang']] = $tabName;
  }
  if ($tabParentName) {
     $tab->id_parent = (int) Tab::getIdFromClassName($tabParentName);
  } else {
     $tab->id_parent = 0;
  }
  $tab->module = $this->name;
  return $tab->add();
}

PrestaShop 1.7
$this->installTab('AdminParentTab', 'My Module');
$this->installTab('AdminModuleTab', 'Module Tab', 'AdminParentTab');
$this->installTab('AdminSubChildTab', 'Manage Tab', 'AdminModuleTab');
$this->installTab('AdminTabOne', 'Tab One', 'AdminSubChildTab');
$this->installTab('AdminTabTwo', 'Tab Two', 'AdminSubChildTab');
$this->installTab('AdminTabThree', 'Tab Three', 'AdminSubChildTab');