Николай, я жду от вас обратной связи. Уже не знаю, куда писать.
Я давно подобное реализовывал на одном проекте, но вот сейчас опять коснулось, и пришлось ресерчинг с нуля опять делать. Решил сразу заметку зафиксировать)
Хотя у меня и есть версии скинов, до необходимости искать решение для их быстрого переопределения начал доходить только сейчас :) Поэтому данное решение однозначно беру на заметку
Материал для тех, что внимательно читал вот эту статью и для тех, кто освоил переопределяющие шаблоны. В настройках modxSmarty имеется две переменных — modxSmarty.template и modxSmarty.pre_template, что позволяет иметь основной шаблон и переопределяющий его. А что делать, если нужно добавить еще один или более шаблонов? Это может быть, к примеру, персональное оформление для авторизованного пользователя, или мобильная версия сайта, или очередная версия скина (v1, v2, v3..., чтобы в новой версии только измененные файлы дописывать, а не вообще все копировать). Лично у меня здесь задача другая — добавить подключаемый скин элемента в новом компоненте, чтобы сразу шаблоны компонента подключались в систему, но чтобы эти шаблоны можно было переопределять в своем боевом шаблоне сайта. Вот такой вот плагин у меня получился: if($modx->context->key == 'mgr'){ return; }
switch($modx->event->name){
case "OnHandleRequest":
if(!empty($modx->smarty)){
$modx->smarty->addTemplateDir(MODX_CORE_PATH . "components/crosslinks/templates/default", "crosslinks");
}
break;
} Если вывести подключенные шаблоны, получается вот такая картина: print_r($modx->smarty->template_dir); Array ( [prepend] => /site/core/components/modxsite/templates/pre_template/ [main] => /site/core/components/modxsite/templates/shopmodx/ [crosslinks] => /site/core/components/crosslinks/templates/default/ ) Таким образом подключенный шаблон у нас вызывается в самую последнюю очередь и может быть переопределен в любом предыдущем шаблоне. А вот если вам надо шаблон вставить в самое начало списка (чтобы наоборот он переопределял все остальные шаблоны), тут чуть сложнее: switch($modx->event->name){
case "OnHandleRequest":
if(!empty($modx->smarty)){
$dirs = $modx->smarty->getTemplateDir();
$dirs = array_merge(array(
"crosslinks" => MODX_CORE_PATH . "components/crosslinks/templates/default",
), $dirs);
$modx->smarty->setTemplateDir($dirs);
}
break;
} В таком случае очередность будет другая. Array ( [crosslinks] => /site/core/components/crosslinks/templates/default/ [prepend] => /site/core/components/modxsite/templates/pre_template/ [main] => /site/core/components/modxsite/templates/shopmodx/ ) Здесь шаблон crosslinks идет в самом начале и его переопределить уже нельзя. Зато им можно переопределить другие шаблоны. Важно отметить, что алиасы шаблонов можно использовать для целевого расширения. К примеру, так: {extends "[crosslinks]inc/editor/crosslinks/element.tpl"}
[[+page.nav]] замени на [[!If? &subject=[[+pageCount]]
&operator=GT
&operand=1
&then=[[+page.nav]]
]]
Добрый день. Да, эта сборка перестала быть бесплатной. Время идет.
Добрый день. Такой вопрос… наткнулся на старую публикацию на хабре, где обещали полностью бесплатную готовую сборку для магазина. Однако при попытке скачать что то из репозитория, точнее хотя бы добавить его — перебрасывает на страницу, где просят оплатить 5000р за подписку… Всё, сия сборка уже не бесплатна?
Попробуйте сменить хостинг. Может версия пхп не та, может модули какие отсутствуют, может еще что. На modhostpro возьмите самый мелкий тариф, посмотрите работает там или нет, если работает, то дело в хостинге. А как отладку включить — это в саппорте хостинга спрашивайте где php-логи смотреть.
Установил modxSmarty, вызываю по вашему примеру, страница вообще не отображается… уфф… в общем, похоже придется на чистом движке заново пересоздавать сайт, больше не знаю что делать
error.log modx чистый, а при установке modxsite возникла ошибка: Update modxSmarty templates path Can not get system setting modxSmarty.template_dir Успешно установлен пакет modxsite-1.4.0-beta но вроде как установился. теперь осталось понять, как запускать его приложения…