Условные операторы в дополнительных полях
Хак позволяет выводить нужный контент при определенном значении доп.поля.
Установка:
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]
Готово!
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.