Xaker1493 14 Опубликовано: 13 сентября 2018 Рассказать Опубликовано: 13 сентября 2018 (изменено) У меня есть готовый код: <?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] Помогите реализовать данную задумку. Изменено 13 сентября 2018 пользователем Xaker1493 Цитата Ссылка на сообщение Поделиться на других сайтах
alukardua 27 Опубликовано: 14 сентября 2018 Рассказать Опубликовано: 14 сентября 2018 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] Помогите реализовать данную задумку. У тебя код проверяет по дате рождения? Цитата Ссылка на сообщение Поделиться на других сайтах
Xaker1493 14 Опубликовано: 14 сентября 2018 Рассказать Опубликовано: 14 сентября 2018 (изменено) Автор 6 минут назад, alukardua сказал: У тебя код проверяет по дате рождения? Да. Изменено 14 сентября 2018 пользователем Xaker1493 Цитата Ссылка на сообщение Поделиться на других сайтах
alukardua 27 Опубликовано: 14 сентября 2018 Рассказать Опубликовано: 14 сентября 2018 (изменено) тогда из 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); } на основании этой функции делай свою Изменено 14 сентября 2018 пользователем alukardua 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Xaker1493 14 Опубликовано: 15 сентября 2018 Рассказать Опубликовано: 15 сентября 2018 Автор В 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> Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.