Xaker1493 14 Опубликовано: 15 сентября 2018 Рассказать Опубликовано: 15 сентября 2018 (изменено) Возрастное ограничение для новостей. Для версий: DLE 13.0 Описание: Данный модуль выводить или скрывает текст если возраст пользователя не соответствует возрастному ограничению заданной определённой статье. Теги: [agelimit birthday="birthday" limit="age"] текст [/agelimit] - Выводят текст указанный в них если возраст больше или равен возрастному ограничению;[not-agelimit birthday="birthday" limit="age"] текст [/not-agelimit] - Выводят текст указанный в них если возраст меньше или равен возрастному ограничению; birthday="birthday" - Название доп. поля пользователя, обязательно дата виде: 01.04.2000. Также можно задать дату или возраст виде текста (birthday="01.04.2000" или birthday="16" ); limit="age" - Название доп. поля новостей, задаем число. Также можно задать возраст виде числа (limit="16"). Если birthday или limit не указаны или отсутствую, то будут равный нулю. Предупреждаю: Модуль сырой, если есть предложения по улучшению или исправления с удовольствием вас выслушаю. <?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 ""; $age = '0'; $limit = '0'; 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]; } } 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]; } 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> Изменено 15 сентября 2018 пользователем Xaker1493 2 Цитата Ссылка на сообщение Поделиться на других сайтах
Xaker1493 14 Опубликовано: 19 сентября 2018 Рассказать Опубликовано: 19 сентября 2018 (изменено) Автор Версия: 0.2 - мелкие исправления. <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Возрастное ограничение для новостей.</name> <description>Данный модуль выводить или скрывает текст если возраст пользователя не соответствует возрастному ограничению заданной определённой статье.</description> <icon></icon> <version>0.2</version> <dleversion>13.0</dleversion> <versioncompare>greater</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)){ $birthday = preg_match( "#(".$birthday[1].")\|(.*)#i", $member_id['xfields'], $xfields)?$xfields[2]:$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 = 0; } }else{ $age = 0; } if(preg_match("#limit=['\"](.*?)['\"]#i", $matches[2], $limit_match)){ $xfieldsdata = xfieldsdataload($row['xfields']); $limit = $xfieldsdata[$limit_match[1]]?$xfieldsdata[$limit_match[1]]:$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> Изменено 19 сентября 2018 пользователем Xaker1493 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.