Баг показа модуля для позиции меню тип

#1 20 октября 2011 в 22:12
Описание бага:
Создаем пункт меню назовем Работа и Вакансии, делаем тип меню "ссылка" например на раздел Работа в доске объявлений. Например сайт/board/10.
Добавляем модуль(просто текст), он должен отображаться только для пункта меню "Работа и Вакансии", т.е. указываем пункт меню и позицию.
проверяем… модуль не появляется!

Я как бы решил проблему, только вот интересно это у меня так или у всех?

в багтрекер не пущает, добавить не могу!

если кому интересно, могу рассказать как!
#2 20 октября 2011 в 22:44
только теперь перестал работать переключатель в модуле — Не показывать на вложенных страницах...
но так даже лучше)
#3 20 октября 2011 в 23:23
все, теперь и переключатель работает!
#4 20 октября 2011 в 23:28
Croakerx64, сами с собой тут? :)

Видимо стоит прояснить проблему подробнее.
#5 20 октября 2011 в 23:45
ага!)

а теперь подробнее
есть в главном меню пункт Объявления
у него есть подменю — Работа и вакансии у этого пункта меню стоит linktype = ссылка например /board/10 (на подпункт работа в объявлениях)
и если теперь хочется чтобы какой-то модуль например "пользовательский" (содержит только какой-то текст), ну в принципе неважно какой модуль, хоть погода появлялся только при показе только этого подпункта меню "Работа и вакансии". — не работает
в принципе проблему решил, хочется чтоб в дистрибутиве(или в обновлении) было исправлено

P.S. кстати еще сделал возможность для модуля показаться только на вложенных страницах от текущей
(например поиск пользователей в списке пользователей не нужен, а внутри в профиле пользователя — нужен)
#6 20 октября 2011 в 23:50

кстати еще сделал возможность для модуля показаться только на вложенных страницах от текущей

Croakerx64

вы меня удивляете все больше) Ииии, дальше что?) А я сегодня полный бак бензина заправил — примерно так читаются ваши посты))

если все равно не поняли, напишу прямо: решение в студию!)
#7 20 октября 2011 в 23:57
решение
1. лечим баг прямых ссылок
в файле cms.php

делаем вот так
  1.  
  2. //полное совпадение ссылки и адреса?
  3. // СТРОЧКИ НИЖЕ ДОБАВЛЯЕМ
  4. $furi="http://".$_SERVER['HTTP_HOST'].$uri;
  5. if (($uri == $item['link'])||($furi == $item['link'])){
  6. // ЭТУ ВЫКЛЮЧАЕМ if (($uri == $item['link'])){
  7. $menuid = $item['id'];
  8. $is_strict = true; //полное совпадение
  9. break;
  10. }
  11.  
2. добавляем возможность модулю показываться только на вложенных страницах


добавляем поле show_only_on_nested со значением по умолчанию 0 в таблицу cms_modules,

  1. ALTER TABLE 'cms_modules' ADD 'show_only_on_nested' TINYINT( 4 ) DEFAULT '0' NOT NULL AFTER 'is_strict_bind'
настройка этого пункта только руками — тем модулям, которые нужно показывать только на вложенных страницах ставим в это поле значение 1. Кому надо могут сами изменить админку для настройки модулей

в файле
page.class.php

  1.  
  2. // Проверяем права доступа
  3. if (!$inCore->checkContentAccess($mod['access_list'])) { continue; }
  4. // ДОБАВЛЯЕМ 1 СТРОЧКУ НИЖЕ //////////
  5. if (($mod['show_only_on_nested']==1)&&($inCore->isMenuIdStrict()==1)) { continue; }
  6. //////////////////////////////////////
  7. $modulefile = PATH.'/modules/'.$mod['content'].'/module.php';
  8.  
  9. if (!$mod['user']) { cmsCore::loadLanguage('modules/'.$mod['content']); }
  10.  
#8 21 октября 2011 в 00:00
и все-таки это у меня проблема такая с модулями или у всех??? )
#9 21 октября 2011 в 00:01
ну вот и замечательно. Завтра детально рассмотрю данное предложение и возможно внесем в 1.8.1.
#10 22 марта 2015 в 20:41
а что если при запросе происходит ошибка?
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''cms_modules' ADD 'show_only_on_nested' TINYINT( 4 ) DEFAULT '0' NOT NULL AFTER ' at line 1
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.