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

Xaker1493

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

Recommended Posts

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

<?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]

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

Edited by Xaker1493

Share this post


Link to post
Share on other sites
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]

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

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

Share this post


Link to post
Share on other sites
6 минут назад, alukardua сказал:

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

Да.

 

 

Edited by Xaker1493

Share this post


Link to post
Share on other sites

тогда из 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);
	}

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

Edited by alukardua
  • Like 1

Share this post


Link to post
Share on other sites
В 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>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now