Не знаю у меня только эта проблема или у всех.
Описание бага:
есть в главном меню пункт Объявления
у него есть подменю — Работа и вакансии, у этого пункта меню стоит linktype = ссылка, например /board/10 (на подпункт работа в объявлениях).
И если теперь хочется, чтобы какой-то модуль, например "пользовательский" (содержит только какой-то текст), ну в принципе неважно какой модуль, хоть погода, появлялся только при показе только этого подпункта меню "Работа и вакансии" — модуль не появляется!
в принципе проблему решил, хочется чтоб в дистрибутиве(или в обновлении) было исправлено
P.S. кстати еще сделал возможность для модуля показаться только на вложенных страницах от текущей
(например поиск пользователей в списке пользователей не нужен, а внутри в профиле пользователя — нужен)
1. лечим баг прямых ссылок
в файле cms.php
функция menuId()
делаем вот так
2. добавляем возможность модулю показываться только на вложенных страницах
добавляем поле show_only_on_nested со значением по умолчанию 0 в таблицу cms_modules,
настройка этого пункта только руками — тем модулям, которые нужно показывать только на вложенных страницах ставим в это поле значение 1. Кому надо могут сами изменить админку для настройки модулей
в файле
page.class.php
функция printModules
чтобы не появлялась позиция модуля
проводим изменения функцию в том же файле
Если моя информация была для вас полезной, можно отблагодарить меня :
Yandex счет 41001684845537
Webmoney R750806594532
Описание бага:
есть в главном меню пункт Объявления
у него есть подменю — Работа и вакансии, у этого пункта меню стоит linktype = ссылка, например /board/10 (на подпункт работа в объявлениях).
И если теперь хочется, чтобы какой-то модуль, например "пользовательский" (содержит только какой-то текст), ну в принципе неважно какой модуль, хоть погода, появлялся только при показе только этого подпункта меню "Работа и вакансии" — модуль не появляется!
в принципе проблему решил, хочется чтоб в дистрибутиве(или в обновлении) было исправлено
P.S. кстати еще сделал возможность для модуля показаться только на вложенных страницах от текущей
(например поиск пользователей в списке пользователей не нужен, а внутри в профиле пользователя — нужен)
1. лечим баг прямых ссылок
в файле cms.php
функция menuId()
делаем вот так
//полное совпадение ссылки и адреса? // СТРОЧКИ НИЖЕ ДОБАВЛЯЕМ $furi="http://".$_SERVER['HTTP_HOST'].$uri; if (($uri == $item['link'])||($furi == $item['link'])){ // ЭТУ ВЫКЛЮЧАЕМ if (($uri == $item['link'])){ $menuid = $item['id']; $is_strict = true; //полное совпадение break; }
добавляем поле show_only_on_nested со значением по умолчанию 0 в таблицу cms_modules,
ALTER TABLE 'cms_modules' ADD 'show_only_on_nested' TINYINT( 4 ) DEFAULT '0' NOT NULL AFTER 'is_strict_bind'
в файле
page.class.php
функция printModules
// Проверяем права доступа if (!$inCore->checkContentAccess($mod['access_list'])) { continue; } // ДОБАВЛЯЕМ 1 СТРОЧКУ НИЖЕ ////////// if (($mod['show_only_on_nested']==1)&&($inCore->isMenuIdStrict()==1)) { continue; } ////////////////////////////////////// $modulefile = PATH.'/modules/'.$mod['content'].'/module.php'; if (!$mod['user']) { cmsCore::loadLanguage('modules/'.$mod['content']); }
проводим изменения функцию в том же файле
public function countModules($position){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); if (!$inCore->isMenuIdStrict()){ $strict_sql = "AND (m.is_strict_bind = 0)"; } else { $strict_sql = ""; } $menuid = $inCore->menuId(); /// добавили столбец m.show_only_on_nested $sql = "SELECT m.access_list,m.show_only_on_nested FROM cms_modules m, cms_modules_bind mb WHERE mb.position = '$position' AND m.published = 1 AND m.id = mb.module_id AND (mb.menu_id = '$menuid' OR mb.menu_id = 0) $strict_sql "; $result = $inDB->query($sql); if (!$inDB->num_rows($result)){ return 0; } while($mod = $inDB->fetch_assoc($result)){ if (!$inCore->checkContentAccess($mod['access_list'])) { continue; } ////////////////// новая строка if (($mod['show_only_on_nested']==1)&&($inCore->isMenuIdStrict()==1)) { continue; } //////////////// $mods[] = $mod; } }
Если моя информация была для вас полезной, можно отблагодарить меня :
Yandex счет 41001684845537
Webmoney R750806594532
Реклама #
artlab 13 лет назад #
Крот 13 лет назад #
Yandex счет 41001684845537
Webmoney R750806594532
artlab 13 лет назад #
prosis 12 лет назад #
RooKee 12 лет назад #
RooKee 12 лет назад #
Крот 12 лет назад #
RooKee 12 лет назад #
Крот 12 лет назад #
спасибо за мотивацию) продолжу искать улучшения и баги
Юрий 7 лет назад #