Скрытие текста от даты регистрации

Скрытие текста от даты регистрации

С помощью этого хака можно скрывать текст внутри тегов если пользователь зарегистрирован меньше указанного времени.
 
Установка, для DLE 10.0 и выше:
1. Открыть engine/classes/templates.class.php и найти:
if (strpos ( $this->template, "[aviable=" ) !== false) {

Добавить выше:
if (strpos ( $this->template, "[show_user=" ) !== false)
	$this->template = preg_replace_callback ( "#\\[(show_user)=(.+?)\\](.*?)\\[/show_user\\]#is", array( &$this, 'show_user'), $this->template );

Найти далее:
if (strpos ( $template, "[aviable=" ) !== false) {

Добавить выше:
if (strpos ( $template, "[show_user=" ) !== false)
	$template = preg_replace_callback ( "#\\[(show_user)=(.+?)\\](.*?)\\[/show_user\\]#is", array( &$this, 'show_user'), $template );

Найти далее:
function check_module( $matches=array() ) {

Добавить выше:
function show_user( $matches=array() )
{
	global $member_id;
	if($member_id['user_group'] == 5) return;
	
	$show_user = $matches[2]; $block = $matches[3];
	if(substr_count($show_user, '|') > 0)
    {
        $show_user = explode('|', $show_user);
        $show_user[0] = intval($show_user[0]);
        $show_user[1] = trim(strip_tags(stripslashes($show_user[1])));
    }
    else
        $show_user = intval($show_user);

	if ($matches[1] == "show_user") $action = true; else $action = false;
	$date = langdate("Y-m-d", $member_id['reg_date']);

	if( $action AND $member_id['user_group'] != 5)
	{
		if((floor((strtotime(date('Y-m-d'))-strtotime($date))/(3600*24))) <= (!empty($show_user[0]) ? $show_user[0] : $show_user)) return empty($show_user[1]) ? '' : $show_user[1];
		else return $block;
	} 
	else
		return empty($show_user[1]) ? '' : $show_user[1];
}

Готово!


Установка, для DLE 9.8 и ниже:
1. Открыть engine/classes/templates.class.php и найти:
if (strpos ( $this->template, "[aviable=" ) !== false) {

Добавить выше:
if (strpos ( $this->template, "[show_user=" ) !== false) {
$this->template = preg_replace ( "#\\[show_user=(.+?)\\](.*?)\\[/show_user\\]#ies", "\$this->show_user('\\1', '\\2')", $this->template );
}

Найти далее:
if (strpos ( $template, "[aviable=" ) !== false) {

Добавить выше:
if (strpos ( $template, "[show_user=" ) !== false) {
$template = preg_replace ( "#\\[show_user=(.+?)\\](.*?)\\[/show_user\\]#ies", "\$this->show_user('\\1', '\\2')", $template );
}

Найти далее:
function check_module($aviable, $block, $action = true) {

Добавить выше:
function show_user( $show_user, $block, $action = true ) {
    global $member_id;

    if(substr_count($show_user, '|') > 0)
    {
        $show_user = explode('|', $show_user);
        $show_user[0] = intval($show_user[0]);
        $show_user[1] = trim(strip_tags(stripslashes($show_user[1])));
    }
    else
        $show_user = intval($show_user);
 
    $date = langdate("Y-m-d", $member_id['reg_date']);

    if( $action AND $member_id['user_group'] != 5) {
        if((floor((strtotime(date('Y-m-d'))-strtotime($date))/(3600*24))) <= (!empty($show_user[0]) && $show_user > 0 ? $show_user[0] : $show_user)) return !empty($show_user[1]) ? $show_user[1] : '';
        else return $block;
    }
    else
        return !empty($show_user[1]) ? $show_user[1] : '';
}

Готово!

В любом tpl файле использовать тег:
[show_user=1]любой текст[/show_user]

Где 1 - сколько нужно быть зарегистрированным на сайте в днях.

Так же можно сделать вывод почему нельзя видеть, просто прописав:
[show_user=25|Вы еще мало дней на сайте]текст[/show_user]
 
Версия DLE: 9.x-10.x
Автор: PunPun
Источник:
  • Oxigen
  • 0
  • 110
Информация
Оставлять комментарии могут только зарегистрированные посетители.
  • Рейтинг@Mail.ru
  • Яндекс.Метрика