1. in_array($_REQUEST['serial'], array( 'cm', 'CM')); strtolower($_REQUEST['serial']) == 'cm'; mb_convert_case($_REQUEST['serial'], MB_CASE_LOWER) == 'cm'; preg_match('/^cm$/i', $_REQUEST['serial']); // И главное: strcasecmp($_REQUEST['serial'], 'cm') === 0; Плохо гуглите (нагуглить пришлось только последнее, и в первой строчке сразу).
<?php $properties = $modx->resource->getOne('Template')->getProperties(); if(!empty($properties['tpl'])){ $tpl = $properties['tpl']; } elseif($_REQUEST['serial'] == 'cm' or $_REQUEST['serial'] == 'CM') $tpl = 'index2.tpl'; else{ $tpl = 'index.tpl'; } if ($modx->resource->cacheable != '1') { $modx->smarty->caching = false; } if(!empty($properties['phptemplates.non-cached'])){ $modx->smarty->compile_check = false; $modx->smarty->force_compile = true; } return $modx->smarty->fetch("tpl/{$tpl}"); Вроде так работает, но мне прям не нравится, что пришлось использовать оператор «или\or» для того, что бы учесть регистр букв. Несколько часов гуглил, как не учитывать регистр — ничего путевого. Пробовал разные вариации: elseif($_REQUEST['serial'] == 'cm, CM') — не работает elseif($_REQUEST['serial'] == 'cm', 'CM') — не работает elseif($_REQUEST['serial'] == 'cm' or 'CM') — не работает elseif($_REQUEST['serial'] == 'cm' and 'CM') — не работает Хоть сейчас все и работает, как надо, но все же, как проще всего не учитывать регистр? Чтоб знать на будущее.

Вот уж точно не по фэншую это… и затрется при переустановке компонента modxSite. Плюс к этому, там чистый php, а значит надо юзать $_REQUEST, а не не понять откуда взявшуюся $request. В общем, учите основы php и разработки сайтов, иначе никак вообще. А то на трехколесном велике только пару метров проехали, а уже хотите тур дэ Франс выиграть.

Спасибо — это мне дало понять, что это условие надо вызывать не внутри Smarty, а в самом начале в файле base.php, где начинается подключение шаблона. <?php

$properties = $modx->resource->getOne('Template')->getProperties();

if(!empty($properties['tpl'])){ $tpl = $properties['tpl']; } elseif($request.serial == 'CM') $tpl = 'index2.tpl'; else{ $tpl = 'index.tpl'; }

if ($modx->resource->cacheable != '1') { $modx->smarty->caching = false; }

if(!empty($properties['phptemplates.non-cached'])){ $modx->smarty->compile_check = false; $modx->smarty->force_compile = true; }

return $modx->smarty->fetch("tpl/{$tpl}"); Только теперь надо копать в сторону, как правильно получить значение из поле сериал. elseif($request.serial == 'CM') $tpl = 'index2.tpl'; Потому что так, он явно не понимает, где это поле «serial».

Однако в синтаксисе Smarty я пока новичок. Так для этого документацию Smarty надо смотреть, на оффсайте Smarty. Правильней {if $request.serial == 'CM'} {include "layout2.tpl"} {else} {include "layout.tpl"} {/if}

ИМХО однозначно стоит. Я часто этим пользуюсь и считаю это сильной стороной modxSmarty. Только имейте ввиду, что конструкции типа {$doc->set('pagetitle', $value)} будут возвращать во фронт единичку (ибо успех), поэтому в таких случаях делайте {$ok = $doc->set('pagetitle', $value)}. Тогда результат будет присваиваться переменной и Смарти ничего отправлять в паблик не будет.

Здравствуйте. Стоит ли использовать процессоры для пустяковых запросов? или можно использовать запрос прям в шаблоне при условии что дальше нам данные абсолютно не нужны Запрос примерно такого характера. if ($modx->getObject('modResource', $id){ //... }

Вам что именно надо расширить? [[!smarty?tpl=shop/catalog/list.tpl]] — это никак не расширить, это есть суть строка. А вот shop/catalog/list.tpl расширить можно, все тем же способом: в своем скине создавайте расширяющий шаблон shop/catalog/list.tpl и делайте в нем что хотите.

Все верно, он и пишет: Since the MODX cache configuration settings are part of what gets cached according to those settings, we have to inform MODX of these details before it loads the system settings. For this reason, there is a $config_options array in your MODX config file where you can specify settings which are applied before the system settings are loaded.

But before we do that, let's set up all of the partition configuration settings which will tell MODX which memcached instances will store which pieces of the cache. То есть «мы и в системные настройки это забьем, и в главный конфиг-файл пропишем, чтобы MODX сразу учитывал эти настройки». Значит я все правильно сделал. У меня на одном интернет-магазине просто включение memcache без допнастроек увеличило производительность в 3 раза. Понятное дело, что производительность улучшится и без допнастроект, но все же с ними будет лучше. P.S. За ссылку спасибо.

а как расширить вот это: у документа Каталог вызов сниппета [[!smarty?tpl=shop/catalog/list.tpl]] как здесь указать tpl из скина? можно конечно рядом другой создать, но должен же быть кошерный способ брать всё из скина?