Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Выборочное наполнение сайдбара
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Всем привет!
Такое дело... нужен совет наверное не в смысле кода, а всмысле идей.
Пишу блог, попутно практикуя. Все хорошо и прекрасно, вроде как. Соорудил роутер, все работает. Однако вчера вдруг понял, что у меня совершенно нет идей о том, как динамически, то есть выборочро наполнять сайдбар.
Роутер работает так:
// если роутер ничего не нашел в строке запроса, то он кинет на 404
// если нашел, то он дернет нужную функцию, она получит все данные и роутер вернет путь к файлу, который нужно подключить
//далее подключается шаблон
include_once ROOT .'/template/tmpl.php';
//а в шаблоне, где выводится контент пишу
include_once$CONTENT;
Все отлично работает - нужный контент выводится в зависимости от запроса.
Но что делать с сайдбаром ума не приложу. По идее, контент сайдбара тоже зависит от строки запроса. Например при выборе одной категории, в сайдбар выводится меню этой категории. При выборе другой категории, в сайдбаре нужно вывести меню этой категории. Если скажем перешел на главную страницу, то там можно вывести меню с последними статьями.
Делать статичную боковую колонку не хочется. Но не писать же второй роутер для сайдбара.
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
teddy
Отправлено: 15 Ноября, 2013 - 12:45:02
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Hapson пишет:
По идее, контент сайдбара тоже зависит от строки запроса. Например при выборе одной категории, в сайдбар выводится меню этой категории.
Можно создать таблицу в БД, где будут храниться менюшки + поле category
Ну а потом по параметру смотрим, SELECT column FROM `menu` WHERE `category`='$params[0]'
как то так
Hapson
Отправлено: 15 Ноября, 2013 - 12:56:16
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
teddy пишет:
Hapson пишет:
По идее, контент сайдбара тоже зависит от строки запроса. Например при выборе одной категории, в сайдбар выводится меню этой категории.
Можно создать таблицу в БД, где будут храниться менюшки + поле category
Ну а потом по параметру смотрим, SELECT column FROM `menu` WHERE `category`='$params[0]'
как то так
Ну да, наверно как-то так. Короче все же придется делать роутер для сайдбара, так как все зависит от строки запроса.
Хочется гибкости, но и усложнять не хочется.
Наверное можно сделать так, чтобы основной роутер дергал контроллер сайдбара и передавал ему имя модуля, который сейчас формирует контент.
Спасибо за наводку!
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
etoYA
Отправлено: 15 Ноября, 2013 - 23:50:00
Участник
Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011 Откуда: Крым
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
у меня модули (модуль в моей терминологии - небольшой блок на странице сайта) состоят из модели и представления. Вывод на страницу по принципу позиций, как в джумле. Т.е. В шаблоне страницы обозначены позиции, а уже в них выводятся модули. Далее просто - контроллер страницы сам добавляет нужные на этой странице модули, примерно так
Во время добавления срабатывает модель модуля, собирает и обрабатывает данные.
Представление вызывается н этапе рендеринга всего шаблона страницы, уже после отработки всей бизнес-логики.
Получается немного избыточно, в каждом действии контроллера приходится прописывать необходимые модули, но зато просто. Однако я все еще ище более оптимальную схему вывод модулей.
----- Чем больше узнаю, тем больше я не знаю.
Hapson
Отправлено: 17 Ноября, 2013 - 22:59:11
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
etoYA
Не, я пока без классов обхожусь. DelphinPRO
Ну да, как-то так. Вчера написал некое подобие контроллера модулей. В шаблоне оказалось это
Сделал таблицу:
mod_name | activation | position | param
В папке каждого модуля есть файл run.php, в файле есть функция runModName()
Контроллер смотрит в таблицу и выбирает имена модулей, у которых activation = 1. Далее контроллер проверяет наличие функции runModName() (runUsers, runLastArt, runMenu...) и дергает в цикле все эти функции. Стартовые функции модулей отрабатывают и возвращают имена функций для вывода их данных. Контроллер собирает имена функций для вывода и складывает их в массив $SIDEBAR.
В шаблоне эти функции дергаются в цикле и выводят че у них есть. То есть контроллер передает так сказать представления с готовыми данными в шаблон, где все это остается только нарисовать.
Короче работает, но допиливаю еще, как-то пока не очень нравится. (Добавление)
С позициями пока тоже не определился. Пока все отрисовывается в колонке сайдбара в соответствии с позициями из поля position.
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.