Вы не зашли.
Ну вот что тебе мешает воспользоваться:
имхо несколько неудобно. Про обновление - полностью согласен. Критика понята и принята к сведению
Раньше вторым аргументов передавался массив с одним элементом - 'vars'. А теперь можно передавать как с одним ('vars'), так и с двумя ('vars', 'flags'). Т.е. в движке ничего переделывать больше не надо. Просто при необходимости использовать эту фишку в своих плагинах. Может я просто чего-то не понимаю, но у меня все пока что работает
Wolverine: хм... этот момент немного не понял. Зачем еще что-то менять? Можно продолжать работать с этим классом как и раньше, не передавая массив флагов.
Ну я же написал - это мелкий хак, а не плагин ;-) Сделано на скорую руку.
А это:
В классе tpl (старый шаблонизатор) добавлена новая возможность - условные блоки, зависящие от текущего местоположения на сайте [ifhandler:Plugin:Handler], [ifhandler:Plugin:], [ifhandler:Plugin]
- иной функционал. Мой хак я использую, например, чтобы в одном шаблоне нарисовать и форму, и вывод результатов и еще всякие плюшки и при необходимости их скрыть/показывать, а не плодить стопицот шаблонов. И чтобы не засорять программный код лишними условными блоками, т.е. в конечном счете для того, чтобы писать меньше, эффективнее и читабельнее.
Думаю, что многим в стандартном шаблонизаторе NGCMS не хватало условных блоков. Одной из причин появления нового шаблонизатора являлся как раз этот факт, если я правильно понимаю. Я его не ковырял пока что, зато сделал мелкий хак стандартного класса, держите:
// Process logic blocks
if ( isset($vars['flags']) && is_array($vars['flags']) )
{
if (preg_match_all('/\[flag (.+?)\](.+?)\[\/flag\]/is', $data, $parr))
{
foreach ($parr[0] as $k => $v)
{
$data = str_replace($v, (isset( $vars['flags'][$parr[1][$k]] ) && ($vars['flags'][$parr[1][$k]] ) ) ?$parr[2][$k]:'', $data);
}
}
}
Этот код надо вставить в engine\includes\classes\templates.class.php, где-нибудь перед обработкой переменных, т.е. перед строкой 189 (до строки // Process variables)
Использовать следующим образом:
вместо обычного вызова
$tpl->vars('tpl', array('vars' => $vars) );
пишем
$tpl->vars('tpl', array('vars' => $vars, 'flags' => $flags) );
Где $vars и $flags - массивы переменных и условных флагов соответственно. Можно использовать и как обычно, это само собой разумеется.
В шаблоне пишем:
[flag myFlag] text [/flag].
Критика хака всячески приветствуется
Ого, спасибо за столь скорый ответ. Буду колдовать дальше.
Версия CMS 0.9.3, плагин самописный (в процессе работы над ним).
Добрый день. Ковыряюсь с роутингом, столкнулся с проблемой:
Есть плагин. Я добавил в urlconf.php примерно такую запись
'apart' =>
array (
'search' =>
array (
'vars' => array(),
'descr' => array('russian' =>'Поиск объявлений'),
),
'details' =>
array(
'vars' => array(
'postid' =>
array (
'matchRegex' => '\\d{1,4}',
'descr' =>
array (
'russian' => 'ID объявления',
),
),
),
'descr' => array('russian' => 'Просмотр объявления')
),
)
В настройках формата ссылок для хэндлера details указал следующий url: /details/{postid}.html. При открытии страницы /details/1.html я получаю ошибку 404. Если укажу url /details/{postid}.htm, то при открытии страницы /details/1.htm все ок. В чем может быть проблема? Код роутера ковырять не очень хочется.