CMS DataLife Engine - Система управления сайтами

Xaker1493

Возрастное ограничение для новостей.

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

У меня есть готовый код:

<?php
$date = explode ("||", $member_id['xfields']); //(дата виде: 12.04.1991 )
$date = explode ("|", $date[1]);
$date = explode (".", $date[1]);
if($date[1] > date('m') || $date[1] == date('m') && $date[0] > date('d'))
$Age = (date('Y') - $date[2] - 1);
else
$Age = (date('Y') - $date[2]);
if($is_logged and !empty($date[1]) and $Age>'[xfvalue_age]'){ //([xfvalue_age] - список: +0,+16,+18 )
  
}else{

}

Но я не знаю как вывести виде тегов, например:

[agelimit=age]
Если пользователь старше 18 лет.
[/agelimit=age]

[not-agelimit=age]
Если пользователь младше 18 лет.
[/not-agelimit=age]

Помогите реализовать данную задумку.

Изменено пользователем Xaker1493

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 часов назад, Xaker1493 сказал:

У меня есть готовый код:


<?php
$date = explode ("||", $member_id['xfields']); //(дата виде: 12.04.1991 )
$date = explode ("|", $date[1]);
$date = explode (".", $date[1]);
if($date[1] > date('m') || $date[1] == date('m') && $date[0] > date('d'))
$Age = (date('Y') - $date[2] - 1);
else
$Age = (date('Y') - $date[2]);
if($is_logged and !empty($date[1]) and $Age>'[xfvalue_age]'){ //([xfvalue_age] - список: +0,+16,+18 )
  
}else{

}

Но я не знаю как вывести виде тегов, например:


[agelimit=age]
Если пользователь старше 18 лет.
[/agelimit=age]

[not-agelimit=age]
Если пользователь младше 18 лет.
[/not-agelimit=age]

Помогите реализовать данную задумку.

У тебя код проверяет по дате рождения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, alukardua сказал:

У тебя код проверяет по дате рождения?

Да.

 

 

Изменено пользователем Xaker1493

Поделиться сообщением


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

тогда из template.class.php привел пример функции aviable

function check_module($matches) {
		global $dle_module;
		
		$regex = '/\[(aviable|available|not-aviable|not-available)=(.*?)\]((?>(?R)|.)*?)\[\/\1\]/is';

		if (is_array($matches)) {
			
			$aviable = $matches[2];
			$block = $matches[3];
			
			if ($matches[1] == "aviable" OR $matches[1] == "available") $action = true; else $action = false;
			
			$aviable = explode( '|', $aviable );
			
			if( $action ) {
				
				if( ! (in_array( $dle_module, $aviable )) and ($aviable[0] != "global") ) $matches = '';
				else $matches = $block;
			
			} else {
				
				if( (in_array( $dle_module, $aviable )) ) $matches = '';
				else $matches = $block;
			}		
	
		}
	
		return preg_replace_callback($regex, array( &$this, 'check_module'), $matches);
	}

на основании этой функции делай свою

Изменено пользователем alukardua
  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 14.09.2018 в 20:29, alukardua сказал:

тогда из template.class.php привел пример функции aviable

на основании этой функции делай свою

Спасибо.

Смог создать модуль.

<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Возрастное ограничение для новостей.</name>
	<description></description>
	<icon></icon>
	<version></version>
	<dleversion></dleversion>
	<versioncompare>less</versioncompare>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<file name="engine/modules/functions.php">
		<operation action="before">
			<searchcode><![CDATA[?>]]></searchcode>
			<replacecode><![CDATA[function age_limit($matches=array()){
	global $member_id, $is_logged,$member_id,$row;
  
  	if(!count($matches))return "";
   
  	if(preg_match( "#birthday=['\"](.*?)['\"]#i", $matches[2], $birthday)){
      
      if(preg_match( "#(".$birthday[1].")\|(.*)#i", $member_id['xfields'], $xfields)){
        	$birthday = $xfields[2];
      }else{
      		$birthday = $birthday[1]; 
      } 
      if(preg_match( "#([0-9]{1,2})\.([0-9]{1,2}).([0-9]{1,4})#", $birthday, $date )){  
          if($date[2] > date('m') || $date[2] == date('m') && $date[1] > date('d'))
              $age = (date('Y') - $date[3] - 1);
          else
              $age = (date('Y') - $date[3]);
      }else{
         $age = $birthday[1];
      }
    }else{
		$age = '0';
	}
	if(preg_match("#limit=['\"](.*?)['\"]#i", $matches[2], $limit_match)){	
		$xfieldsdata = xfieldsdataload($row['xfields']);
        if($xfieldsdata[$limit_match[1]])
			$limit = $xfieldsdata[$limit_match[1]];
        else
          	$limit = $limit_match[1];
    }else{
		$limit = '0';
	}
	if($matches[1] == "agelimit"){ 
      	if($is_logged and $age>=$limit) return $matches[3];  else return'';
    }elseif($matches[1] == "not-agelimit"){ 
      	if($age<=$limit) return $matches[3]; else return'';
    }    
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.short.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.full.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
	</file>
	<file name="engine/modules/show.custom.php">
		<operation action="before">
			<searchcode><![CDATA[$tpl->compile( 'content' );]]></searchcode>
			<replacecode><![CDATA[if (strpos ( $tpl->copy_template, "[agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(agelimit) (.+?)\\](.*?)\\[/agelimit\\]#is", "age_limit", $tpl->copy_template );
}
if (strpos ( $tpl->copy_template, "[not-agelimit" ) !== false) {
	$tpl->copy_template = preg_replace_callback ( "#\\[(not-agelimit) (.+?)\\](.*?)\\[/not-agelimit\\]#is", "age_limit", $tpl->copy_template );
}]]></replacecode>
		</operation>
		<operation action="after">
			<searchcode><![CDATA[$global_news_count = 0;]]></searchcode>
			<replacecode><![CDATA[global $row;]]></replacecode>
		</operation>
	</file>
</dleplugin>

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти