Данный хак позволяет показать работу исходного кода php, javascript, html прямо на странице размещенной новости.
Установка:
1. В файле engine/classes/parse.class.php найти:
function BB_Parse($source, $use_html = TRUE) {
global $config, $lang;
Заменить на:
function BB_Parse($source, $use_html = TRUE) {
global $config, $lang , $member_id, $user_group;
Найти далее:
if ( !$this->allow_code ) {
$source = preg_replace_callback( "#
(.+?)
#is", array( &$this, 'clear_p_tag'), $source ); }
Добавить ниже:
$source = ($user_group[$member_id['user_group']]['allow_admin']) ? preg_replace( "#[usehtml](.+?)[/usehtml]#is", "1", $source ) : preg_replace( "#[usehtml](.+?)[/usehtml]#is", "1", $source );
$source =( $user_group[$member_id['user_group']]['allow_admin']) ? preg_replace( "#[usephp](.+?)[/usephp]#is", "1", $source ) : preg_replace( "#[usephp](.+?)[/usephp]#is", "1", $source );
Найти далее:
if( $this->filter_mode ) $txt = $this->word_filter( $txt, false );
Добавить ниже:
$txt = preg_replace( "#(.+?)#is", '[usehtml]1[/usehtml]', $txt );
$txt = preg_replace( "#(.+?)#is", '[usephp]1[/usephp]', $txt );
2. В файле index.php, что в корне сайта, найти:
echo $tpl->result['main'];
Добавить выше:
$tpl->result['main'] = preg_replace_callback( "#(.+?)#is","show_this_code",$tpl->result['main']);
$tpl->result['main'] = preg_replace_callback( "#(.+?)#is","show_this_code",$tpl->result['main']);
function show_this_code($matches=array()){
$text = (preg_match("#
(.+?)
#is",$matches[2],$match)) ? html_entity_decode(preg_replace("/
|
/", "",$match[1]), ENT_QUOTES) : '' ; $type = $matches[1]; if($type == 'usehtml'){return $text; }elseif($type == 'usephp'){ ob_start(); ob_implicit_flush(0); eval($text); $con = ob_get_clean(); return $con; } return $matches[0]; }
Готово!Для вставки исходных кодов js или html используйте конструкцию вида:
[usehtml][code]ваш js или html код[/ code][/usehtml]
следует убрать пробел при закрывающем теге Сode при использовании.Для вставки исходных кодов php* используйте конструкцию вида:
[usephp][code]ваш php код[/ code][/usephp]
следует убрать пробел при закрывающем теге Сode при использовании.
*при размещении php кода открывающих тегов php:
использовать не нужно!
Версия DLE: 10.1
Автор: rocksmart