Условные операторы в дополнительных полях

Условные операторы в дополнительных полях

Хак позволяет выводить нужный контент при определенном значении доп.поля.


Установка:
1. Открыть engine/modules/functions.php и найти:
if( ! defined( 'DATALIFEENGINE' ) ) {
	die( "Hacking attempt!" );
}

Добавить ниже:
function if_xfields ($fieldname, $fieldvalue, $text, $show = true) {
	global $xfieldsdata;
	
	if ($show === true) {
	
		if (count($xfieldsdata) > 0 AND isset($xfieldsdata[$fieldname]) AND $xfieldsdata[$fieldname] == $fieldvalue)
			return stripslashes(htmlspecialchars_decode($text));
		else
			return false;
	} elseif ($show === false) {
	
		if (count($xfieldsdata) > 0 AND isset($xfieldsdata[$fieldname]) AND $xfieldsdata[$fieldname] == $fieldvalue)
			return false;
		else
			return stripslashes(htmlspecialchars_decode($text));		
	
	} else
		return false;

}

2. Открыть engine/modules/show.full.php и найти в конце файла, последнее вхождение:
		$tpl->compile( 'content' );

		if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) );
		else $tpl->result['content'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $tpl->result['content'] );
		
		$news_id = $row['id'];
		$allow_comments = $row['allow_comm'];

		$allow_add = true;

		if ( $config['max_comments_days'] ) {

Добавить выше:
	$if_xf_hide = strpos($tpl->copy_template, "[if_xf_hide");
	$if_xf = strpos($tpl->copy_template, "[if_xf");
	
	if ($if_xf OR $if_xf_hide) {
	
		if (count($xfieldsdata) == 0) $xfieldsdata = xfieldsdataload( $row['xfields'] );
	
		if ($if_xf)
			$tpl->copy_template = preg_replace ( "#\\[if_xf field=['\"](.+?)['\"] value=['\"](.+?)['\"]\\]([^\[]+)\\[/if_xf\\]#ies", "if_xfields('\\1', '\\2', '\\3')", $tpl->copy_template );		
		if ($if_xf_hide)
			$tpl->copy_template = preg_replace ( "#\\[if_xf_hide field=['\"](.+?)['\"] value=['\"](.+?)['\"]\\]([^\[]+)\\[/if_xf_hide\\]#ies", "if_xfields('\\1', '\\2', '\\3', false)", $tpl->copy_template );	
	}


3. В шаблон fullstory.tpl добавить теги следующего вида:
[if_xf field="Имя поля" value="Значение которое оно должно принять"]Текст, который нужно вывести в случае, если указанное поле примет указанное значение[/if_xf]

И альтернативный ему:
[if_xf_hide field="Имя поля" value="Значение которое оно должно принять"]Текст, который будет скрыт, если указанное поле примет указанное значение[/if_xf_hide]

Пример сформированных тегов:
[if_xf field="newfield" value="Есть"]<h1>Текст Текст Текст Текст</h1>[/if_xf]
[if_xf_hide field="newfield" value="Есть"]<h1>Текст Текст Текст Текст</h1>[/if_xf_hide]

Готово!
 
Версия DLE: 10.х
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.