Модератор
Юрій
(@yube)
Проблема с использованием substr, которая ничего не знает про мультибайтные кодировки. Поменять на mb_substr($content, 0, 219, 'UTF-8')
Спасибо, поменял, но теперь весь текст под заголовком и вовсе пропал. Не подскажете, как его вернуть обратно? Заранее спасибо.
Забыл, как раз его прописываю. Спасибо. Текст появился. Только сайт начал долго грузится. mb_substr не влияет на скорость сайта? или это просто совпадение и у хостинга проблемы?
Вопрос исчерпан, проблемы на хостинге. Другие сайты тоже тормозят. Спасибо за помощь. Тему считаю решенной.
Думал, что все. Оказывается, что нет. Хотел по аналогии в коде слайдера прописать, но не тут то было. Вот код:
<?php $short_title = substr(the_title('','',True),0,35);
echo $short_title; if (strlen($short_title) >50){ echo '...'; } ?>
Подскажите, пожалуйста, как здесь прописать? Заранее спасибо
Модератор
Юрій
(@yube)
Аналогично
<?php $short_title = mb_substr(the_title('','',True),0,35,'UTF-8');
echo $short_title; if (mb_strlen($short_title,'UTF-8') >50){ echo '...'; } ?>
Только не понятно, чего в одном месте 35, а в другом 50. По идее должны быть одинаковые числа.
К сожалению, данный код не помог. Ничего не изменилось.
PS. насчет разных цифр, то я экспериментировал с длиной заголовка) забыл одинаковые прописать.
Если что, вот весь код слайдера:
<?php
/**
* Theme: silverOrchid
* Theme URL: http://gazpo.com/2012/04/silverorchid
* Created: April 2012
* Author: Sami Ch.
* URL: http://gazpo.com
*
**/
$gazpo_settings = get_option( 'gazpo_options');
$slider_cat_id = $gazpo_settings['gazpo_slider_category'];
//if no category is selected for slider, show latest posts
if ( $slider_cat_id == 0 ) {
$post_query = 'posts_per_page=4';
} else {
$post_query = 'cat='.$slider_cat_id.'&posts_per_page=4';
}
?>
<div id="gazpo-slider" >
<ul class="ui-tabs-nav ui-tabs-selected">
<?php query_posts( $post_query ); ?>
<?php if( have_posts() ) : while( have_posts() ) : the_post(); ?>
<li class="ui-tabs-nav-item" id="nav-fragment-<?php echo $post->ID; ?>">
<a href="#fragment-<?php echo $post->ID; ?>">
<?php the_post_thumbnail( 'thumbnail', array('class' => 'slider_thumb') ); ?>
<span class="title">
<?php $short_title = substr(the_title('','',False),0,59);
echo $short_title; if (strlen($short_title) >50){ echo '...'; } ?>
</span>
<br />
<span class="date"><?php the_time('j F'); ?></span>
</a>
</li>
<?php endwhile; endif;?>
<?php wp_reset_query();?>
</ul>
<?php query_posts( $post_query ); ?>
<?php if( have_posts() ) : while( have_posts() ) : the_post(); ?>
<div id="fragment-<?php echo $post->ID; ?>" class="ui-tabs-panel ui-tabs-hide" style="">
<?php the_post_thumbnail( 'large', array('class' => 'slider_image') ); ?>
<div class="info" >
<h2>
<a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>">
<?php $short_title = mb_substr(the_title('','',True),0,35,'UTF-8');
echo $short_title; if (mb_strlen($short_title,'UTF-8') >35){ echo '...'; } ?>
</a>
</h2>
</div>
</div>
<?php endwhile; endif;?>
<?php wp_reset_query();?>
</div>
Продолжаю диалог сам с собой))) Разобрался со слайдером, не там прописывал, оказывается. Только теперь слово обрезается и не показывается троеточие, хотя в коде оно вроде есть. Подскажите, как его прописать? На данный момент у меня такой кусок кода:
<?php $short_title = mb_substr(the_title('','',False),0,30,'UTF-8');
echo $short_title; if (mb_strlen($short_title,'UTF-8') >30) { echo '...';} ?>
Модератор
Юрій
(@yube)
Код почитайте — поймете, почему нет трех точек (троеточие — это другой символ;)). Сначала получаем $short_title путем обрезания титлы до 30 букв, а затем проверяем, не длиннее ли $short_title 30 букв? 🙂
Можно как-то так модифицировать
<?php
$full_title = the_title('','',False);
$short_title = mb_substr($full_title,0,30,'UTF-8');
echo $short_title;
if (mb_strlen($full_title,'UTF-8') >30) echo '...';
?>