• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Хак Количество символов {title} в короткой новости

Когда делаешь все по инструкции
Код:
1. Открыть index.php
---------------------
#найти
 
if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
    $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$dle_module}')", $tpl->copy_template );
}
 
#заменить на
 
if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
    $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] title=['\"](.+?)['\"] story=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '\\7', '\\8', '{$dle_module}')", $tpl->copy_template );
}
 
2. Открыть engine/modules/functions.php
---------------------
#найти
 
function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $do)
 
#заменить на
function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit,
$custom_title, $custom_story, $custom_cache, $do)
 
#найти
$custom_limit = intval( $custom_limit );
 
#ниже добавить
$custom_title = intval( $custom_title );
$custom_story = intval( $custom_story );
 
3. Открыть engine/modules/show.custom.php
---------------------
#найти
$tpl->set( '{title}', stripslashes( $row['title'] ) );
 
#заменить на
if ( $custom_story > 0 and strlen ( $row['title'] ) > $custom_title )
    $tpl->set( '{title}', substr ( stripslashes( $row['title'] ) , 0, $custom_title ) . '…' );
else
    $tpl->set( '{title}', stripslashes( $row['title'] ) );
 
#найти
    $tpl->set( '{short-story}', stripslashes( $row['short_story'] ) );
 
#заменить на
if ( $custom_story > 0 and strlen ( $row['short_story'] ) > $custom_story )
    $tpl->set( '{short-story}', substr ( stripslashes( $row['short_story'] ) , 0, $custom_story ) . '…' );
else
    $tpl->set( '{short-story}', stripslashes( $row['short_story'] ) );
 
4. Теперь в тег {custom} можно добавлять новые аргументы title и story, для контролирования длины заголовка и короткой новости соответственно.
 
#например
{custom category="1" template="custom" aviable="global" from="0" limit="5" title="45" story="300" cache="no"}
то сайт вообще не открывается, просто чистый лист на индексной странице, видимо все дело в коде
Код:
#заменить на
if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
 
    $tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] title=['\"](.+?)['\"] story=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '\\7', '\\8', '{$dle_module}')", $tpl->copy_template );
 
}
который меняешь в index.php, так как вернув его в прежнее состояние, индексная страница открывается, но сам функционал не работает.

Помогите решить проблему, очень нужно!!!
 
Я в php не силен, как сие чудо установить? Мне главное в custom научиться обрезать длину заголовка
я не верстал шаблоны под дле, мне сразу трудно сказать что и где надо изменить... но вкратце берем функцию и вставляем в файл .php
PHP:
function content_cut($str,$maxlen=0,$suffix='...') {
  $str=preg_replace('/\s+/',' ',
      trim(strip_tags(str_replace(
        array('&nbsp;','<li>'),// если надо
        array(' ',' '),
        $str))));
  if ($maxlen && strlen($str)>$maxlen) {
    $str=substr($str,0,$maxlen+1);
    if (strlen($str)>$maxlen && ($i=strrpos($str,' '))) $str=substr($str,0,$i);
    $str=rtrim($str,'.,;:!?').$suffix;
    }
  return $str;
  }

применительно к первому сообщению ессно перед
PHP:
$tpl->set( '{title}', stripslashes( $row['title'] ) );
выходит
PHP:
$tpl->set( '{title}', stripslashes( content_cut($row["title"],$maxlen=20,$suffix='...') ) );

если текст в базе чистый, не надо проверять на тэги или еще какой нибудь мусор, то можно удалить preg_replace соотв функция еще проще станет ;-) как я написал Для просмотра ссылки Войди или Зарегистрируйся
PHP:
function content_cut($str,$maxlen=0,$suffix='...') {
  if ($maxlen && strlen(trim($str))>$maxlen) {
    $str=substr($str,0,$maxlen+1);
    if (strlen($str)>$maxlen && ($i=strrpos($str,' '))) $str=substr($str,0,$i);
    $str=rtrim($str,'.,;:!?').$suffix;
    }
  return $str;
  }
можно ее добавить в файл с остальными функциями и использовать в несколькоих местах если надо - это оптимально...
 
Назад
Сверху