[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Холивар про шаблонизатор.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
Invis1ble
Цитата
А твиг как это делает под капотом?
Arh
Добавил в свой шаблонизатор одну строчку, теперь так работает.

{$block=}
<div>
Какието данные
</div>
{/$block}

<?php
tpl
::display('index.tpl',array(
'block' => $block
));
?>


Или сразу в массив
{$data['block']=}
<div>
Какието данные
</div>
{/$data['block']}

<?php
tpl
::display('index.tpl',$data);
?>


Или сразу вывести
{$var=}
<div>
Какието данные
</div>
{/$var}

{$var}


Правда не уверен где это применять. Надо будет поиграться с наследованиями =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
Цитата
Добавил в свой шаблонизатор

он навсегда останется твоим.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Arh
Цитата (Игорь_Vasinsky @ 25.11.2014 - 15:56)
Цитата
Добавил в свой шаблонизатор

он навсегда останется твоим.

В смысле?) Он и должен остаться моим.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
chee
Invis1ble, моё решение

<?php

class
Layout
{

protected $classLayout = 'parent';
protected $layoutPath = 'tpls/layout.php';

public function parseTemplate()
{
ob_start();

require $this->layoutPath;

return ob_get_clean();
}

}


class ChildLayout extends Layout
{

protected $classLayout = 'child';

}

$view = new ChildLayout;
$view->parseTemplate();


а в tpls/layout.php

<div class="layout <?php echo $this->classLayout;?>"></div>


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
chee
неплохо, хотя я ожидал другой подход и уже подготовил критику biggrin.gif
зато в твоем случае, чтоб поменять класс, верстальщику надо лезть в php-файлы smile.gif не говоря о том, что он там натворит, если нужно будет сделать что-то сложнее смены класса
а в результате получим всё тот же шаблонизатор (очередную вариацию)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

chee
Invis1ble, для публичных CMS мой вариант не приемлем(хотя если доробатать, то впринципе приемлем), для закрытых систем, самое то.

Цитата (Invis1ble @ 25.11.2014 - 16:50)
не говоря о том, что он там натворит, если нужно будет сделать что-то сложнее смены класса
а в результате получим всё тот же шаблонизатор (очередную вариацию)

таки это и есть шаблонизатор(это же php). Мы там с твином тягаемся CMSками, когда реализую сможешь оценить возможности такого шаблонизатора wink.gif

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Переменные еще туда передать надо. Не просто верстку. А тут начнется геморрой на костылях. Для того и делаются эти приблуды, чтобы упростить такие вот нюансы.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, вы про мой код или про ваш?


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Про ваш естественно. Как передать в родительский шаблон переменные посредством этого класса?

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
twin, эм, а не нужно. В эти классы сами запрашивают данные у моделей, а потом подключают файлы отображения, в файлах отображения все эти данные подставляется. То есть такая лютая инкапсуляция. wink.gif

В итоге контролер занимается только подготовкой модели и вьюшек, а потом запускается вью, которая вытягивает данные из модели, и отображает их как хочет. MVC же.

twin, вы сможете более детально ознакомиться с этим подходом, когда я опубликую свою версию CMS.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Я знаю этот подход, это не новость. Тот же Yii так работает. Только это не шаблоны вовсе, а полноценные скрипты. А шаблонизатор как раз и помогает разделить скрипты и верстку, дабы не валить всё в одну кучу.

Потому и.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Подскажите примеров где можно использовать наследования шаблонов.

Просто пытаюсь придумать и вроде получается, а потом понимаю что я загоняюсь и всё на самом деле делается проще.

Ну есть у нас index.html, целый шаблон, скачанный с любого сайта.
Проставили мы там теги для смены имени сайта, описания, ключевых слов.
Проставили теги в нужных местах, где будет выводиться скрипты/модули/плагины в зависимости от ссылки, от контроллера.

Соответственно в каждый тег/переменную в шаблоне, будет выводиться свой скрипт, у которого есть свой мини шаблон. Например меню.
Допустим у модуля меню есть свой мини шаблон index.tpl, в нём допустим форыч и вёрстка <ul><li>
Ну и всё, модуль выполнился и передал свой результат в тег в главном шаблоне.
Где тут наследование использовать?

Ну или посложнее, модуль новостей.
Там два шаблона. Первый с форычем, который выводит новости из категории, второй выводит полную новость.
Перешли по ссылке /news/ контроллер подключил первых шаблон, передав туда массив с новостями из модели.
Перешли по ссылке /news/id/1 контроллер подключил шаблон полной новости.

Чёб еще придумать.
Допустим форум, ну или личные сообщения.
Модуль личных сообщений. Предположим у него есть шаблон всех диалогов, шаблон самих сообщений и всё это выводится в какой то общий шаблон, где сверху есть общее меню.
Хм, а вот тут вроде может пригодиться, подключаем шаблон сообщений, наследуемся от основного, и меняем в меню основного шаблона, класс кнопки "сообщения" на active.
Сам спросил - сам ответил =)




_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.