Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 Re: Новый функционал » Условные блоки. Мелкий хак » 2012-01-07 14:55:26

z41

Ну вот что тебе мешает воспользоваться:

имхо несколько неудобно. Про обновление - полностью согласен. Критика понята и принята к сведению smile

#2 Re: Новый функционал » Условные блоки. Мелкий хак » 2012-01-07 14:36:56

z41

Раньше вторым аргументов передавался массив с одним элементом - 'vars'. А теперь можно передавать как с одним ('vars'), так и с двумя ('vars', 'flags'). Т.е. в движке ничего переделывать больше не надо. Просто при необходимости использовать эту фишку в своих плагинах. Может я просто чего-то не понимаю, но у меня все пока что работает smile

#3 Re: Новый функционал » Условные блоки. Мелкий хак » 2012-01-07 14:32:05

z41

Wolverine: хм... этот момент немного не понял. Зачем еще что-то менять? Можно продолжать работать с этим классом как и раньше, не передавая массив флагов.

#4 Re: Новый функционал » Условные блоки. Мелкий хак » 2012-01-07 14:29:39

z41

Ну я же написал - это мелкий хак, а не плагин ;-) Сделано на скорую руку.

А это:

В классе tpl (старый шаблонизатор) добавлена новая возможность - условные блоки, зависящие от текущего местоположения на сайте [ifhandler:Plugin:Handler], [ifhandler:Plugin:], [ifhandler:Plugin]

- иной функционал. Мой хак я использую, например, чтобы в одном шаблоне нарисовать и форму, и вывод результатов и еще всякие плюшки и при необходимости их скрыть/показывать, а не плодить стопицот шаблонов. И чтобы не засорять программный код лишними условными блоками, т.е. в конечном счете для того, чтобы писать меньше, эффективнее и читабельнее.

#5 Новый функционал » Условные блоки. Мелкий хак » 2012-01-07 14:07:37

z41
Ответов: 10

Думаю, что многим в стандартном шаблонизаторе 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].

Критика хака всячески приветствуется big_smile

#6 Re: "У меня не работает..." » роутинг, html и htm » 2012-01-04 18:21:23

z41

Ого, спасибо за столь скорый ответ. Буду колдовать дальше.

#7 Re: "У меня не работает..." » роутинг, html и htm » 2012-01-04 18:17:30

z41

Версия CMS 0.9.3, плагин самописный (в процессе работы над ним).

#8 "У меня не работает..." » роутинг, html и htm » 2012-01-04 18:14:27

z41
Ответов: 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 все ок. В чем может быть проблема? Код роутера ковырять не очень хочется.

Подвал раздела

Работает на FluxBB