• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Как ограничить длину заголовка

Статус
В этой теме нельзя размещать новые ответы.

ANATHEM

Создатель
Регистрация
19 Авг 2007
Сообщения
56
Реакции
7
Есть необходимость ограничить длину выводимого заголовка. То есть что б отображало в заголовке записи только n симоволов, а дальше ставило троеточие (для того, что бы не переносило на следующую строку). Когда наводишь на забись выводится полное уже название. В общем нужно что то типа того, что есть на ag.ru в новостях ) Как это реализовать?
Код:
<a title="<?php the_title(); ?>" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a>
Вот на контент ограничение реализовано так:
Код:
<?php the_content_limit(350, "[ЧИтать исчо >>]"); ?>
Буду очень благодарен за ответ. Просьба расписать как для чайника )
 
ответ подробно расписан тут (английский, но все понятно)
Для просмотра ссылки Войди или Зарегистрируйся
в файле functions.php который лежит в папке тэплейта надо вставить функцию
PHP:
<?php 

function the_title2($before = '', $after = '', $echo = true, $length = false) {
         $title = get_the_title();

      if ( $length && is_numeric($length) ) {

             $title = substr( $title, 0, $length );

          }

        if ( strlen($title)> 0 ) {

             $title = apply_filters('the_title2', $before . $title . $after, $before, $after);

             if ( $echo )

                echo $title;

             else

                return $title;

          }

      }

?>
и соответственно в файле index.php темы использовать эту функцию по назначению, например:
PHP:
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title2('', '...', true, '20') ?></a></h1>
 
Спасибо)
К сожалению, выходить чуть чуть криво. То ли из-за того что в UTF кириллицу как то странно режет, не наю.

А можно как то приспособить функцию, которая есть на контент:
Код:
<?php function the_content_limit($max_char, $more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters('the_content', $content);
    $content = str_replace(']]>', ']]&gt;', $content);
    $content = strip_tags($content);

   if (strlen($_GET['p']) > 0) {
      echo "<p>";
      echo $content;
      echo "&nbsp;<a href='";
      the_permalink();
      echo "'>"."Read More &rarr;</a>";
      echo "</p>";
   }
   else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
        $content = substr($content, 0, $espacio);
        $content = $content;
        echo "<p>";
        echo $content;
        echo "...";
        echo "&nbsp;<a href='";
        the_permalink();
        echo "'>".$more_link_text."</a>";
        echo "</p>";
   }
   else {
      echo "<p>";
      echo $content;
      echo "&nbsp;<a href='";
      the_permalink();
      echo "'>"."Read More &rarr;</a>";
      echo "</p>";
   }
}

?>
Но она сильно намучено, что то там еще выискивает ))) наверное, можно её упростить и сделать для тайтл?
 
ну не знаю :) the_content_limit это совсем другая функция.... в ней все иначе - для других целей....
попробуй заменить на multi-byte safe функции - mb_substr, mb_substr
PHP:
<?php 

function the_title2($before = '', $after = '', $echo = true, $length = false) {
         $title = get_the_title();

      if ( $length && is_numeric($length) ) {

             $title = mb_substr( $title, 0, $length );

          }

        if ( mb_strlen($title)> 0 ) {

             $title = apply_filters('the_title2', $before . $title . $after, $before, $after);

             if ( $echo )

                echo $title;

             else

                return $title;

          }

      }

?>
попробуй отпишись мне не начем проверять
 
Помогло вроде бы как. Надо еще чуть шрифты покрутить, что б совсем ровно было.
Еще осталась проблема - три точки ставит везде )))) даже в необрезанных заголовках
 
Еще осталась проблема - три точки ставит везде )))) даже в необрезанных заголовках
попробуй так, если что пиши тк я не проверяю что к чему!
PHP:
<?php 

function the_title2($before = '', $after = '', $echo = true, $length = false) {
        
        $title = get_the_title();

        if ( $length && is_numeric($length) ) {

             $new_title = mb_substr( $title, 0, $length );

        }

        if ( mb_strlen($new_title)> 0 ) {

            if(mb_strlen($title) > $length) $title = apply_filters('the_title2', $before . $new_title . $after, $before, $after);
            else $title = apply_filters('the_title2', $before . $new_title . $after, $before, $after);

            if ($echo) echo $title;
            else return $title;

        }

}

?>
 
проверил работает
PHP:
function the_title2($before = '', $after = '', $echo = true, $length = false) {
        
    $title = get_the_title();

    if ( $length && is_numeric($length) ) $new_title = mb_substr( $title, 0, $length );

    if ( mb_strlen($new_title)> 0 ) {

        if(mb_strlen($title) > $length) $title = apply_filters('the_title2', $before . $new_title . $after, $before, $after);
        else $title = apply_filters('the_title2', $before . $new_title . $after = '', $before, $after);

        if ($echo) echo $title;
        else return $title;

    }

}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху