Убирали на своём инстанте названия категорий из урла статьи?
После этих манипуляций были замечены следующие багоглюки:
1. при открытой статье не подсвечивался пункт меню раздела, в котором статья
2. если в настройках какого-то модуля стояли галки "показывать в определённых разделах", то модуль показывался только в самих разделах, не в статьях этих разделов
Всё дело в том, что при выводе модуля хитрый код в файле core/classes/page.class.php вызывает функцию $inCore->menuId();
А эта функция menuId() получает id текущего меню. Причём, не абы как, а беря за основу текущий адрес страницы, который я успешно изменил в минихаке =)
и после строки
добавляете
и чуть ниже заменяете блок
на блок
В общем-то, всё. После этого должно работать.
Замечание 1: проверял на своём сайте, работает, но мог что-то не учесть. словите багу,- дайте знать в комментах
Замечание 2: буду несказанно рад, если кто-то подскажет менее геморный и непрозрачный способ для определения id текущего пункта меню.
Замечание 3: делалось на версии 1.10.1
После этих манипуляций были замечены следующие багоглюки:
1. при открытой статье не подсвечивался пункт меню раздела, в котором статья
2. если в настройках какого-то модуля стояли галки "показывать в определённых разделах", то модуль показывался только в самих разделах, не в статьях этих разделов
Всё дело в том, что при выводе модуля хитрый код в файле core/classes/page.class.php вызывает функцию $inCore->menuId();
А эта функция menuId() получает id текущего меню. Причём, не абы как, а беря за основу текущий адрес страницы, который я успешно изменил в минихаке =)
Внимание, фикс:
Сделайте бэкап файла core/cms.php
в файле core/cms.php находите функцию
public function menuId(){
//перевернем массив меню чтобы перебирать от последнего пункта к первому
$inPage = cmsPage::getInstance(); // генерируем адрес, включая категории, с учетом имени хоста на основе глубиномера pathway //echo VAR_DUMP($inPage->pathway); $full_uri2 = HOST; $real_uri2=""; $uri2=""; foreach($inPage->pathway as $key => $value){ $full_uri2.=$inPage->pathway[$key]['link']; $real_uri2.=$inPage->pathway[$key]['link']; $uri2.=$inPage->pathway[$key]['link']; } } } else { $full_uri2 = HOST . $uri; }
//перебираем меню в поисках текущего пункта foreach($menu as $item){ if (!$item['link']) { continue; } // uri с учетом имени хоста $full_uri = HOST . $uri; //полное совпадение ссылки и адреса? $menuid = $item['id']; $is_strict = true; //полное совпадение break; } //частичное совпадение ссылки и адреса (по началу строки)? $menuid = $item['id']; break; } }
//перебираем меню в поисках текущего пункта foreach($menu as $item){ if (!$item['link']) { continue; } // uri с учетом имени хоста //$full_uri = HOST . $uri; //полное совпадение ссылки и адреса? -- для категорий $menuid = $item['id']; $is_strict = true; //полное совпадение break; } //частичное совпадение ссылки и адреса (по началу строки)? -- для статей $menuid = $item['id']; break; } }
В общем-то, всё. После этого должно работать.
Замечание 1: проверял на своём сайте, работает, но мог что-то не учесть. словите багу,- дайте знать в комментах
Замечание 2: буду несказанно рад, если кто-то подскажет менее геморный и непрозрачный способ для определения id текущего пункта меню.
Замечание 3: делалось на версии 1.10.1
Реклама #
Майкл 11 лет назад #
Cruzka 11 лет назад #
letsgo 11 лет назад #
Cruzka 11 лет назад #
artscripts 11 лет назад #
Cruzka 11 лет назад #
а потом уже это
artscripts 11 лет назад #
Suslik 11 лет назад #
если бы правленные файлы готовые выложили, может да?
И хотелось бы что бы это все таки было в ядре, а то из за таких странностей инстанта - "человеко-понятный" УРЛ раздувается до таких длин что людям что бы сделать ссылку на наш сайт надо его через сервис сокращения ссылок пробивать и тиц-пр уходит не сайту а сервису ссылок, странно что то что и так очевидно делается с таким трудом...
Kotanol 11 лет назад #
Kotanol 11 лет назад #
Def 10 лет назад #