Sigma и операции над блоками

SSSerj

Новичок
Sigma и операции над блоками

Хотелось бы разобраться в следующих вещах. Представим себе ситуацию. Есть шаблон template.html. Данный шаблон содержит различные блоки для разбора, к примеру 1-LeftBoxNavy, 2-LeftBoxText, 3-CenterInfo, 4-RigtBoxNavy, 5-RightBoxText. (Под блоками надо понимать <table>…</table>). Каждая генерируемая страница может содержать от одного до нескольких представлений этих блоков.

PHP:
…
$variant1 = array('foo1', 'bar1', 'baz1', 'quux1');
$variant2 = array('foo2', 'bar2', 'baz2', 'quux2');
$tpl->loadTemplateFile('template.html');
//
$tpl->setCurrentBlock('LeftBoxNavy');
for ($i = 0; $i < count($variant1); $i++) {    
    $tpl->setVariable('object', $variant1[$i]);
    $tpl->parse('block_1');
}
$str1= &$tpl->get('LeftBoxNavy'); // первое представление блока

/* далее делаю все тоже самое, но хочу лишь изменить информацию, то есть вывести массив $variant2*/

$tpl->setCurrentBlock('LeftBoxNavy');
for ($i = 0; $i < count($variant2); $i++) {    
    $tpl->setVariable('object', $variant2[$i]);
    $tpl->parse('block_1');
}
$str2= &$tpl->get('LeftBoxNavy'); // второе представление блока
… Понятное дело, что второе представление содержит элементы $variant1 + $variant2, а хотелось бы только $variant2.

№1. Как это реализовать, используя метод replaceBlock() и возможно ли это??

Вообще я преследую такую идею. Далее передавать str1 и str2 в PEAR:page используя метод addBodyContent()

№2 Логично ли содержать все текстовые блоки в одном шаблоне, а затем используя метод get(‘Название блока’), передавать его др. объекту?

№2.1 Хотя начинаю думать и так…каждый блок лучше держать в отдельном шаблоне (LeftBoxNavy.html, LeftBoxText.html и т.п.) ?

Как поступают вообще в таких ситуациях?
 

SSSerj

Новичок
Sad Spirit Спасибо. Все оказалось ОЧЕНЬ просто :))
А что по №2 скажите?
 

Ямерт

The Old One
Лично я каждый блок общего пользования храню в отдельном файле, а потом подключаю в нужных шаблонах через <!-- INCLUDE -->
 

SSSerj

Новичок
Общего пользования (статическим ?)- аналогично. Но меня более интересует подход к "динамическим" блокам. Ну например, блоки ссылок, ведь каждый раздел сайта, в общем случае, может иметь несколько блоков, причем каждый блок может иметь разное расположение на странице(ах) (position), а также иметь свой шаблон представления (view).

Двигаться к реализации хочу через OOP. Но могу ошибаться в проетировании Class'ов. Поэтому прошу советов при проектронии модели объектов.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: SSSerj
А что по №2 скажите?
Ничего определённого, тут разные подходы возможны.

Я только не понимаю смысл выдёргивания отдельных блоков через get(), фактически получается, что для окончательного вывода страницы используется не шаблонный движок, а нечто ещё?
 

SSSerj

Новичок
Вы правы...., я хочу использовать это движок на промежуточных стадиях. Результаты парсинга отдельных блоков хочу передавать другому объекту, который и будет заниматься окончательным вывыводом страницы. К примеру:
PHP:
...
//получаем результат парсинга блока
$allStructures = array($tpl->get('LeftPanel', true),
$tpl->get('RightPanel', true),
$tpl->get('CenterPanel', true));
//...
//...
$page = new HTML_Page(...);//PEAR:Page
$page-> addBodyContent($allStructures);

Что-то в таком стиле. Поэтому, думается... держать 3 блока в одном файле или 3 файла по блоку?

Как логичнее управлять этими блоками в Sigma?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: SSSerj
Поэтому, думается... держать 3 блока в одном файле или 3 файла по блоку?

Как логичнее управлять этими блоками в Sigma?
Работать будет в обоих случаях. Поэтому выбирать вариант надо по критерию субъективного удобства...
 
Сверху