Слишком много шаблонов/чанков
Всем доброго времени суток.
На днях столкнулся с проблемой слишком большого количества шаблонов или чанков. Дизайнеры отрисовали 30+ страниц для сайтов, причем сразу два сайта с такой ситуацией.Я попробовал 2 варианта решения такой проблемы.
1. Создаем шаблон «Стандартный», создаем гору доп полей и раскидываем их по категориям, чтобы как-то логически отделить друг от друга.
Код шаблона:
2. Создать много шаблонов, 15-20 шаблонов на сайт, выпадающий список при создании документов не радует глаз, но все же он мне показался удобнее.
Собственно вопрос: кто и как решает такие задачи, может есть поизящнее решение?
На днях столкнулся с проблемой слишком большого количества шаблонов или чанков. Дизайнеры отрисовали 30+ страниц для сайтов, причем сразу два сайта с такой ситуацией.
1. Создаем шаблон «Стандартный», создаем гору доп полей и раскидываем их по категориям, чтобы как-то логически отделить друг от друга.
Код шаблона:
[[$page_start]]
[[!pageRouter]]
[[$page_end]]
Код сниппета pageRouter:$output = $modx->getChunk('page.default');
switch($modx->resource->parent){
case 5:
$output = $modx->getChunk('page.one');
break;
case :
// ...
}
switch($modx->resource->id){
case 10:
$output = $modx->getChunk('page.two');
break;
case :
// ...
}
return $output;
Итог: получаю кучу чанков, доп поля раскиданы, какие-то используются, какие-то нет, можно запутаться даже самому и потом бегать по чанкам и вспоминать, куда какое поле выведено.2. Создать много шаблонов, 15-20 шаблонов на сайт, выпадающий список при создании документов не радует глаз, но все же он мне показался удобнее.
Собственно вопрос: кто и как решает такие задачи, может есть поизящнее решение?
Комментарии: 9
Я считаю, что лучше шаблоны.
Шаблоны типа Главная, Товар, Статья, Категория и т.п. это абсолютно правильно. В идеале таких выходит до 10-15.
А вот по шаблону на каждую страницу, например Контакты, Лендинг 1, Лендинг 2 и т.п. — попахивает ерундой.
Лучше сделать один шаблон «Стандартный», а в коде страницы уже все прописываем.
И я у себя не вижу ничего страшного, если на странице отключен визуальный редактор, а в content вбит html код. Мы же сайт делаем, это сложный продукт, наличие на сайте html кода это нормально:)
И я видел сценарии, когда заводили кучу TV, просто чтобы было удобно менеджерам… и в итоге был шаблон Контакты, а у него куча TV телефон, email, адрес, потом тоже самое для города 2 и для производства, а потом еще 3 точки самовывоза, итого 30 TV-шек, которые используются 1 раз. Вопрос: зачем? Что, менеджеры каждый день меняют это? Или настолько беспомощны, что в html разметке не смогут найти заветные цифры?
Шаблоны типа Главная, Товар, Статья, Категория и т.п. это абсолютно правильно. В идеале таких выходит до 10-15.
А вот по шаблону на каждую страницу, например Контакты, Лендинг 1, Лендинг 2 и т.п. — попахивает ерундой.
Лучше сделать один шаблон «Стандартный», а в коде страницы уже все прописываем.
И я у себя не вижу ничего страшного, если на странице отключен визуальный редактор, а в content вбит html код. Мы же сайт делаем, это сложный продукт, наличие на сайте html кода это нормально:)
И я видел сценарии, когда заводили кучу TV, просто чтобы было удобно менеджерам… и в итоге был шаблон Контакты, а у него куча TV телефон, email, адрес, потом тоже самое для города 2 и для производства, а потом еще 3 точки самовывоза, итого 30 TV-шек, которые используются 1 раз. Вопрос: зачем? Что, менеджеры каждый день меняют это? Или настолько беспомощны, что в html разметке не смогут найти заветные цифры?
Ну разумеется не на каждую страницу шаблоны. Именно по сущностям: список отелей, отдельный отель, список туров, отдельный тур, список новостей, отдельная новость и тд.
Ибо размах дизайнеров велик и на каждом есть какие-то примочки, которые обязательно надо вывести для редактирования в админку, при этом они не нужны на других, чтобы не запутаться.
Иначе я бы и не создавал эту тему :)
Спасибо за мнение.
Ибо размах дизайнеров велик и на каждом есть какие-то примочки, которые обязательно надо вывести для редактирования в админку, при этом они не нужны на других, чтобы не запутаться.
Иначе я бы и не создавал эту тему :)
Спасибо за мнение.
Если использовать наследования, то код можно снизить до минимума. Да, он все равно будет, но не так много как при стандартном шаблонизаторе
Спасибо, попробую
Я обычно делаю один базовый шаблон, в котором прописано то, что подходит для всех страниц, то есть часть head, footer, шапка, меню. А меняющиеся от шаблона к шаблону части помещаю в block:
И далее наследую от него множество шаблонов с помощью fenom, а если шаблоны похожи, то можно унаследовать уже один шаблон от другого:
Все шаблоны можно разбить по категориям и подкатегориям для удобства. Раньше тоже не нравилось, что много шаблонов и использовал способ типа [[!pageRouter]], но потом это оказалось неудобно. Во-первых TV-параметры завязаны на шаблоны, а во-вторых, очень сложно определить какой чанк подтягивается к странице. Нужно лезть сначала в сниппет, разбирать код, определять какой чанк подтягивается, потом искать этот чанк… В общем, геморрой. А шаблон сразу на виду, увидел что за шаблон, открыл его, и смотришь код. И нет мешанины с TV-параметрами. К тому же, можно пользоваться «настройкой форм» в админке. И настраивать под каждый шаблон свой уникальный вид полей редактирования ресурсов.
А вот, чтобы менеджеры не путались в шаблонах, можно создать плагин, который будет ставить нужный шаблон при создании документа:
Да, и чанки тоже надо разбивать на категории-подкатегории. Придумать какую-то систему разбивки. Есть чанки, которые относятся к вызовам различных сниппетов, а некоторые являются отдельными блоками кода. Их тоже нужно наследовать при необходимости. Считаю, что для объёмного сайта обилие шаблонов и чанков это нормально.
<!DOCTYPE html>
<html>
<head>...</head>
<body>
<header>....</header>
{block 'main'}{/block}
<footer>...</footer>
</body>
</html>
И далее наследую от него множество шаблонов с помощью fenom, а если шаблоны похожи, то можно унаследовать уже один шаблон от другого:
{extends 'template:base'}
{block 'main'}Уникальный контент шаблона{/block}
Все шаблоны можно разбить по категориям и подкатегориям для удобства. Раньше тоже не нравилось, что много шаблонов и использовал способ типа [[!pageRouter]], но потом это оказалось неудобно. Во-первых TV-параметры завязаны на шаблоны, а во-вторых, очень сложно определить какой чанк подтягивается к странице. Нужно лезть сначала в сниппет, разбирать код, определять какой чанк подтягивается, потом искать этот чанк… В общем, геморрой. А шаблон сразу на виду, увидел что за шаблон, открыл его, и смотришь код. И нет мешанины с TV-параметрами. К тому же, можно пользоваться «настройкой форм» в админке. И настраивать под каждый шаблон свой уникальный вид полей редактирования ресурсов.
А вот, чтобы менеджеры не путались в шаблонах, можно создать плагин, который будет ставить нужный шаблон при создании документа:
if ($modx->event->name == "OnDocFormRender" && $mode == "new") {
if ($parent = intval($_REQUEST['parent'])) {
if (isset($modx->controller)) {
$parents = $modx->getParentIds($parent, 10, array('context' => 'web'));
$parentRes = $modx->getObject('modResource', $parent);
// Шаблон город мероприятия
if( $parent == 3 ) {
$modx->controller->setProperty('template', '13');
}
// Шаблон мероприятия
if( $parentRes->template == 13 ) {
$modx->controller->setProperty('template', '14');
}
// Шаблон Спикер
if( $parent == 5 ) {
$modx->controller->setProperty('template', '6');
}
}
}
}
Да, и чанки тоже надо разбивать на категории-подкатегории. Придумать какую-то систему разбивки. Есть чанки, которые относятся к вызовам различных сниппетов, а некоторые являются отдельными блоками кода. Их тоже нужно наследовать при необходимости. Считаю, что для объёмного сайта обилие шаблонов и чанков это нормально.
Считаю, что для объёмного сайта обилие шаблонов и чанков это нормально.Особенно, если они хранятся в файлах и есть поиск по их содержимому в IDE.
Это надо добавить в очередь на внедрение)
Значит будем отталкиваться от шаблонов с наследованием. Всем спасибо за помощь.