Как добавить таб в админ панель в модуле Prestashop 1.5 - 1.7

Категория: Главная. Дата публикации: 24 Мая 2017

Сегодня я хочу рассказать вам, как добавить в модуле таб, который будет расположен в админ панели вашего магазина. По табам вы можете отсортировать весь функционал модуля. Это удобная вещь, когда вам нужно быстро попасть в настройки модуля и изменить какую-либо опцию. Давайте посмотрим, на моем примере, как можно добавить вкладку в панели.

Откройте главный файл вашего модуля, он совпадает в названием папки модуля и добавим туда эти два метода 

	public function createTab($class_name, $parent = null, $name)
	{
		if (!is_array($name))
			$name = array('en' => $name);
		elseif (is_array($name) && !count($name))
			$name = array('en' => $class_name);
		elseif (is_array($name) && count($name) && !isset($name['en']))
			$name['en'] = current($name);

		$tab = new Tab();
		$tab->class_name = $class_name;
		$tab->module = $this->name;
		$tab->id_parent = (!is_null($parent) ? Tab::getIdFromClassName($parent) : 0);
		if (is_null($parent) && version_compare(_PS_VERSION_, '1.6.0.0', '<'))
			$this->copyTabIconInRoot($class_name);
		$tab->active = 1;
		foreach (Language::getLanguages() as $l)
			$tab->name[$l['id_lang']] = (isset($name[$l['iso_code']]) ? $name[$l['iso_code']] : $name['en']);
        return $tab->save();
	}
	
	public function copyTabIconInRoot($icon)
	{
		$icon = $icon.'.gif';
		$path = _PS_MODULE_DIR_.basename(dirname(__FILE__)).'/';
		if (!file_exists($path.$icon) && file_exists($path.'views/img/'.$icon) && _PS_VERSION_ < 1.6)
			copy($path.'views/img/'.$icon, $path.$icon);
	}

Рассмотрим метод createTab у него есть 3 параметра:

Параметр $class_name это название класса вашего контроллера таба например: AdminCustomTab. Полностью название файла с классом AdminCustomTabController, но мы Controller не пишем.
Второй параметр $parent у нас название вкладки, куда будет добавлен наш новый таб, то есть например я хочу добавить свой таб в подменю "Каталог", название этого класса контроллера AdminCatalog. Если вы укажете значение null, то вкладка будет добавлена в самый конец главного меню.
Последний параметр $name это название вашей вкладки, это может быть просто значение "Моя новая вкладка" или же массив значений, где ключ массива будет iso_code языка. В массиве обязательно должен присутствовать элемент в ключом "en", он будет служить значением по умолчанию в случае если вы не укажете перевод таба на другом языке.

В 1.5.x.x версиях Prestashop у каждой вкладки в главном меню есть своя иконка, чтобы и у вашего таба появилась своя иконка, для этого добавьте ее в папку с модулем по пути views/img/. Название картинки должно быть обязательно в таком формате AdminCustomTab.gif, то есть название класса контроллера и формат изображения gif.

Теперь, как использовать эти методы? В методе install модуля добавьте такой код.

public function install()
{
  if (!parent::install()
  || !$this->createTab('AdminCustomTab', 'AdminCatalog', array(
     'ru' => 'Мой новый таб',
     'en' => 'My custom tab'
  )))
     return false;
    
  return true;
}

Следующий вопрос, как теперь удалить таб, добавьте этот код в ваш модуль

public static function deleteTab($class_name)
{
	$tab = Tab::getInstanceFromClassName($class_name);
	return $tab->delete();
}

В качестве параметра передается название класса контроллера.  Вызовем этот метод в uninstall модуля

public function uninstall()
{
  if (!parent::uninstall()
  || $this->deleteTab('AdminCustomTab'))
    return false;
  return true;    
}

Начиная с 1.7.1.0 версии Prestashop, теперь табы модуля создаются автоматически, для этого в методе __construct в свойстве tabs модуля, пропишите конфигурацию вкладок.

public function __construct()
{   
    /*
      Some code
    */
    parent::__construct();
    
    /*
      Some code
    */
    
    $this->tabs = array(
        array(
            'class_name' => 'AdminCustomTab',
            'ParentClassName' => 'AdminCatalog',
            'name' => array(
                'en-US' => 'My custom tab',
                'ru-RU' => 'Мой таб'
            ),
            'visible' => true,
            'icon' => 'store'
        )
    );
}

Оставить сообщение
Оставлять комментарии могут только зарегистрированные пользователи. Указав email, ваше имя и комментарий вы пройдете простую регистрацию. На указанный вами email будет выслан пароль от аккаунта. Если у вас уже есть аккаунт
Нет комментариев. Но вы можете оставить его первым.