Перейти к публикации

Критерии [category] и [not-category] для подключаемых tpl файлов


Рекомендованные сообщения

Довольно странно, почему этого нет в движке. Критерии [aviable] и [group] в подключаемых инклюдом tpl-файлах работают, а [category] - нет. Чтобы добавить такую возможность, нам придётся отредактировать engine/classes/templates.class.php, поэтому как обычно, предупреждаю, что внесение изменений в исходный код движка - это плохо и нарушает парадигму работы с фреймворком. Но, мне эта возможность была крайне необходима, поэтому:

Находим:


if (strpos ( $this->template, "[group=" ) !== false) {

	$this->template = preg_replace ( "#\[group=(.+?)\](.*?)\[/group\]#ies", "$this->check_group('\1', '\2')", $this->template );

}


После добавляем:

if (strpos ( $this->template, "[category=" ) !== false) {																								

	$this->template = preg_replace ( "#\[category=(.+?)\](.*?)\[/category\]#ies", "$this->check_cat('\1', '\2')", $this->template );			  

}																																						


if (strpos ( $this->template, "[not-category=" ) !== false) {																							

	$this->template = preg_replace ( "#\[not-category=(.+?)\](.*?)\[/not-category\]#ies", "$this->check_cat('\1', '\2', false)", $this->template );

}																																						

Находим:

function load_file( $name, $include_file = "tpl" ) {

Перед добавляем:

function check_cat($categories, $block, $action = true) {												  

	global $cat_info, $category_id;																		


	$categories = explode( ',', $categories );															  


	if( $action ) {																						

		if( !array_key_exists($category_id, $cat_info) || !in_array($category_id, $categories) ) return "";

	}																										  

	else {																								  

		if( in_array($category_id, $categories) ) return "";												

	}																									  


	$block = str_replace( '\"', '"', $block );																


	return $block;																							


}

Находим:

if (strpos ( $template, "[group=" ) !== false) {																		  

	$template = preg_replace ( "#\[group=(.+?)\](.*?)\[/group\]#ies", "$this->check_group('\1', '\2')", $template );  

}																														

После добавляем:

if (strpos ( $template, "[not-category=" ) !== false) {																					  

	$template = preg_replace ( "#\[not-category=(.+?)\](.*?)\[/not-category\]#ies", "$this->check_cat('\1', '\2', false)", $template );  

}																																			


if (strpos ( $template, "[category=" ) !== false) {																						  

	$template = preg_replace ( "#\[category=(.+?)\](.*?)\[/category\]#ies", "$this->check_cat('\1', '\2')", $template );				

}																																			

Всё, теперь можно использовать [category] и [not-category] для подключаемых tpl файлов. Хорошо бы эта возможность была в движке в оригинальном комплекте поставки.

Ррр... сделайте хотя бы в этом форуме возможность редактировать свои сообщения по истечении 5 минут...

Изменено пользователем Haran
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

Единственная мелочь неверное экранирование.

Опа-чки... То ли форумный парсер сожрал, то ли я как-то криво скопировал. Пропустил и пост не могу отредактировать. Спасибо за внимательность. Вынесу-ка в отдельный файл:

http://www.multiupload.com/GO6GQKIY1O

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...