Morozov&Pimnev blog

Полезные решения, шпаргалки и примеры по html, css, js, jQuery, MySQL, PHP, HostCMS, ssh.

Добавление собственного пункта меню в выпадающее меню в ЦА HostCMS v6

Создаем файл /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'));

php, hostcms6, хуки, core_event


Комментарии

Попытался воспользоваться. Все внес. Пункт - "Мое меню" появился, при нажатии выдает AJAX error;error, HOSTCMs file not found
Если будет время может подскажете что нужно доделать?

Михаил 17.01.2019 16:37:37 #