Ну, я сам разрабатывает модуль PrestaShop так в случае, если кто-то земли здесь, правильный путь.
Для корневых вкладок:
$rootTab = new Tab();
$rootTab->active = 1;
$rootTab->class_name = 'YourAdminControllerName';
$rootTab->name = array();
foreach (Language::getLanguages(true) as $lang) {
$rootTab->name[$lang['id_lang']] = $this->l("Root tab");
}
$rootTab->id_parent = 0; // No parent
$rootTab->module = $this->name;
$rootTab->add();
Примечание для версии 1.5: При создании вкладки корневая система будет искать YourAdminControllerName.gif в папке вашего модуля, как значок вкладки. Также обратите внимание, что вкладки root не работают как ссылки, несмотря на то, что им требуется имя класса.
Для некорневых закладок:
$tab = new Tab();
$tab->active = 1;
$tab->class_name = 'YourAdminControllerName';
$tab->name = array();
foreach (Language::getLanguages(true) as $lang) {
$tab->name[$lang['id_lang']] = $this->l("Non-root tab");
}
$tab->id_parent = $rootTab->id; // Set the root tab we just created as parent
$tab->module = $this->name;
$tab->add();
Если вы хотите установить существующую вкладку, как родитель, вы можете использовать функцию getIdFromClassName. Например, в вашем случае:
$tab->id_parent = (int)Tab::getIdFromClassName('AdminModules');
Надстройка() функция возвращает ложь, если это не удается, так что вы можете использовать его в случае(), как вы пытаетесь сделать с помощью функции сохранения().
Sadly PrestaShop на сегодняшний день является самой плохой документированной системой CMS, с которой мне пришлось работать, и единственный способ действительно кодировать ее - читать код, поэтому я надеюсь, что это поможет кому-то.
что такое class_name в вашем случае? вы можете привести пример, пожалуйста? –
Имя класса - это AdminNews в моем случае. Вы можете изменить его на имя класса AdminWarranty. –
Да, я получил это, но что это за класс? что он представляет? можете ли вы показать фрагмент? Заранее спасибо. –