Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.
Создаем файл /modules/admin/form/controller/observer.php со следующим содержимым:
<?php
/* Добавление собственного пункта меню в выпадающее меню в ЦА HostCms v6 */
defined('HOSTCMS') || exit('HostCMS: access denied.');
class Admin_Form_Controller_Observer
{
public static function onBeforeAddEntity($controller, $args)
{
list($oAdmin_Form_Entity) = $args;
if($controller->getAdminForm()->id == 65) // Интернет-магазин, товары и группы, id нужной формы можно посмотреть в Формах центра администрирования
{
if (strpos(get_class($oAdmin_Form_Entity), 'Admin_Form_Entity_Menus') !== FALSE)
{
$aChildren = $oAdmin_Form_Entity->getChildren();
$sProperties = '/admin/shop/item/import/mymenu/index.php';
$oShop = Core_Entity::factory('Shop', Core_Array::getGet('shop_id', 0));
$oShopGroup = Core_Entity::factory('Shop_Group', Core_Array::getGet('shop_group_id', 0));
$additionalParams = "shop_id={$oShop->id}&shop_group_id={$oShopGroup->id}";
// удаление пункта меню с индексом 5 или шестой по счету
//$aChildren[0]->deleteChild(5);
// Добавляем потомка первому элементу меню
$aChildren[0]->add(
Admin_Form_Entity::factory('Menu')
->name('Мое меню')
->icon('fa fa-download icon-separator')
->href($controller->getAdminLoadHref($sProperties, NULL, NULL, $additionalParams))
->onclick($controller->getAdminLoadAjax($sProperties, NULL, NULL, $additionalParams))
);
}
}
}
}
В файле bootstrap.php в конце добавляем следующую строчку:
// Добавление собственного пункта меню в выпадающее меню в ЦА
Core_Event::attach('Admin_Form_Controller.onBeforeAddEntity', array('Admin_Form_Controller_Observer', 'onBeforeAddEntity'));