Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как сделать теги [category][/category][not-category][/not-category] для формы добавления новостей?

Как сделать теги [category][/category][not-category][/not-category] для формы добавления новостей?


     15.03.2020    Все вопросы » Хаки    58

вопрос
Суть проблемы такова DLE изменили логику работы страницы addnews.php раньше можно было создать страницу для разных категорий и показывать сейчас ссылка зависит от выбранных категорий. Вот так они описывают функционал:

Имеется также возможность передавать в URL браузера категории, которые необходимо сделать выбранными по умолчанию. Для этого используется URL http://вашсайт.ru/index.php?do=addnews&category=X где "X" это ID нужных вам категорий, перечисленные через запятую. Например, по адресу http://вашсайт.ru/index.php?do=addnews&category=3,4,5 в форме добавления новости на сайте будут выбраны по умолчанию категории с ID 1, 2 и 3. Данное нововведение будет полезно для сайтов, которые используют доп. поля для публикаций назначенные разным категориям, и хотят дать пользователям при добавлении публикаций несколько уже предустановленных форм добавления публикации, для различных категорий.


создал условие чтобы эти теги работали в шаблонах addnews.tpl, [not-category][/category] отрабатывает а вот [category][/category] нет. Хотя должно было вывести значение [category][/category]

Сам код


$tempo_array = $categories_default;
if (stripos ( $tpl->copy_template, "[category=" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(category)=(.+?)\\](.*?)\\[/category\\]#is",
                                                 function ($matches=array(),$tempo_array) {
	
                                                   

	$block = $matches[3];
	$category = $tempo_array;

	$temp_array = array();

	$matches[2] = str_replace(" ", "", $matches[2] );
	$matches[2] = explode (',', $matches[2]);

	foreach ($matches[2] as $value) {

		if( count(explode('-', $value)) == 2 ) $temp_array[] = get_mass_cats($value);
		else $temp_array[] = intval($value);

	}

	$temp_array = implode(',', $temp_array);
  
	if ($matches[1] == "category") $action = true; else $action = false;
	
	$cats = explode( ',', $temp_array );
	$found = false;
	
	foreach ( $category as $element ) {
		if( $action ) {
			
			if( in_array( $element, $cats ) ) {
				
				return $block;
			}
		
		} else {
			
			if( in_array( $element, $cats ) ) {
				$found = true;
			}
		
		}
	
	}

	if ( !$action AND !$found ) {	

		return $block;
	}

	return "";

}
                                                 , 
                                                 $tpl->copy_template );
}

if (stripos ( $tpl->copy_template, "[not-category=" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-category)=(.+?)\\](.*?)\\[/not-category\\]#is",
                                                 function ($matches=array(),$tempo_array) {


	$block = $matches[3];
	$category = $tempo_array;

	$temp_array = array();

	$matches[2] = str_replace(" ", "", $matches[2] );
	$matches[2] = explode (',', $matches[2]);

	foreach ($matches[2] as $value) {

		if( count(explode('-', $value)) == 2 ) $temp_array[] = get_mass_cats($value);
		else $temp_array[] = intval($value);

	}

	$temp_array = implode(',', $temp_array);

	if ($matches[1] == "category") $action = true; else $action = false;
	
	$cats = explode( ',', $temp_array );
	$found = false;
	
	foreach ( $category as $element ) {
		
		if( $action AND in_array( array($element), $cats ) ) {
			
			if( in_array( $element, $cats ) ) {
				
				return $block;
			}
		
		} else {
			
			if( in_array( $element, $cats ) ) {
				$found = true;
			}
		
		}
	
	}

	if ( !$action AND !$found ) {	

		return $block;
	}

	return "";

}, 
                                                 $tpl->copy_template );
}

Ответа пока нет


Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх