Подключение блоков в CMS

Savio

Новичок
Подключение блоков в CMS

Прав я или нет, но сам для себя понятия блока и модуля в CMS объяснил так:
блок - некий файлик, который подгружаеться по ходу загрузки "ядра" cms, и в зависимости от какихто переменных, сессий и т.д. отображает ту или инную информацию.
модуль - некий файлик, который выполняет некоторые действия предусмотренные программистом, в зависимости от того, какие значения получил он от того же блока или другим путьом.

Но вопрос вот в чем. При загрузке ядра нужно выводить блоки на страницу. В одних случаях конкретный блок должен парситься, в других нет. как бы это организовать. С модулями такой проблемы нету. Например пришло $_POST['id_modul'], в зависимости от значения выполняеться тот или инной модуль.
А вот что посоветуетет с блоками???

Самое примитивное что приходит в голову, так это парсить все блоки шаблонизатором, ну а в результате получим толька те, которые присутствуют в темплейте данной страницы
 

Andreika

"PHP for nubies" reader
>В одних случаях конкретный блок должен парситься, в других нет.
ну что значит парситься?
 

VBart

Новичок
А в чем проблема? Какой нужен для страницы - такой и вызывайте. Где и как указывать набор блоков необходимых на странице - это уже на ваше усмотрение.

В Joomla\Mamba, например, в шаблонах в нужном месте вызывается функция с названием блока в параметре.

-~{}~ 09.03.06 18:18:

Автор оригинала: Savio
блок - некий файлик, который подгружаеться по ходу загрузки "ядра" cms, и в зависимости от какихто переменных, сессий и т.д. отображает ту или инную информацию.
модуль - некий файлик, который выполняет некоторые действия предусмотренные программистом, в зависимости от того, какие значения получил он от того же блока или другим путьом.
ИМХО наплодили сущностей... Напишите, только четко, зачем вам это нужно? Зачем вам нужны "модули" и зачем "блоки"?

Какая в этом цель? Что это даст?
 

Savio

Новичок
ок. припустим ситуация. Шаблон главной страницы index.tpl должен отображать 15 блоков. например 5 блоков меню, один блок - авторизация на сайте, еще один - блок голосования или как там, ну и еще каких-то... так вот. припустим при переходе по какой-то ссылке грузиться шаблон razdel.tpl, в котором включено толька один блок главного меню сайта.
Я лично в качестве шаблонизатора использую пакет IT с PEAR'a. Под парсингом блока я подразумеваю вызов функции,
которая вместо, например, {MENU_1} выводит сам блок.
Так вот вопрос. как же знать мне функции которых блоков вызывать, в первом случаи нужно 15 функций вызвать, в другом только одну. Создавать что-ли в БД таблицу, где каждому шаблону определять какую функцию парсинга блока вызывать или нет? Или кто-то подскажет более рациональное решение?
 

VBart

Новичок
Savio
ИМХО использованием шаблонизатора вы сами себя и загнали в тупик, если он сам не может вызвать соответсвующие функции, для получения необходимых шаблону данных.
 

Savio

Новичок
Здрасти, а как это вы представляете писать проэкт без шаблонизатора, может скажете сделать смеьсь пхп с хтмл?

-~{}~ 09.03.06 19:15:

А чем плохо в этом случаи действительно завести табличку в БД, в которой каждому шаблону прописать какую функцию блока грузить. И вся проблема будет решена, неправда ли?
 

ZN

Новичок
Savio
ну во-первых пхп сам по себе может быть шаблонизатором, вопрос не в том, использовать пхп или смарти (который в конечном счете так же формирует смесь пхп+хтмл), а в разделении логики и хтмл
во-вторых - посмотрите как модули и блоки реализованы в XOOPS
 

VBart

Новичок
Savio
Зачем смесь?

На php можно спокойно вынести весь html в отдельные файл. Просто вместо {menu} писать <?=$menu?>. В чем разница?

Тогда в верху шаблона, вы могли бы подключить все необходимые для него блоки, вот так:
<?
load_block('menu');
load_block('top_menu');
?>
или даже так:
<?
load_blocks(array(
'menu',
'top_menu',
'votes'
));
?>

Вы же изобрели "PHP" на PHP, а теперь уткнулись в то, что возможностей этого в кавычках не хватает.
 

Savio

Новичок
VBart, что то я никакак не пойму причем тут
<?=$menu?>
к
<?
load_block('menu');
load_block('top_menu');
?>

???
 

VBart

Новичок
Savio
Вам нужно в зависимости от страницы подключать нужные блоки, я так понимаю? Если да, то логично, чтобы страницы сами знали какие им блоки нужны.

А <?=$menu?> просто вывод какой-то переменной, привел для сравнения с {menu}. Видимо зря я отредактировал пост, и запутал немножко.
 

Savio

Новичок
Не, не пойдет. Как бы там не было, в моей CMS шаблон от пхп-ного файла будут разделены. Тоесть дизайнер не путается ни с какими скриптами, а программиста вообще не интересует что там в шаблоне, его дело только выдать результат скрипта в зависимости от загружаемой страницы. Буду думать еще...
 

VBart

Новичок
{menu} - а это по вашему что? Это не похоже на простой html...

А что у вас в шаблонах вообще никаких управляющих конструкций нет? Получается, они совсем приметивны?

p.s. дизайнеру пофиг, что писать <?=$menu?> или {menu}... зато PHP программист вынужден изучать еще и шаблонизатор.
 

hash

Guest
если заменить HTML_Template_IT на Smarty
то получится проще и красивей...
 
Сверху