Олег Власов
logo
Магазин контента WordPress

Коллекция Wordpress

темы и плагины wordpress: установка wordpress, настройка wordpress, использование wordpress, авторский перевод на русский язык шаблонов и плагинов Wordpress

Как-то, переводя очередной шаблон китаянки Chiq Montes, столкнулся с проблемой неправильной кодировки русского текста в анонсах статьи на главной странице. Проблема была в том, что фраза обрезалась на неожиданном месте и в конце стоял вот такой символ – черный ромб с вопросом внутри:

excerpt

При этом обратил внимание, что английский текст отображался корректно. Я понял, что проблема лежит в том, что функция, которую использовал автор, некорректно работает с таблицей кириллицы. Во-первых, сначала я посмотрел на функцию, которую автор поставил в файле index.php для вывода анонса статьи. Выглядит она вот так:

<?php echo dp_clean($post-&gt;post_content, 250); ?>

Я решил, что число 250 – это количество символов, которое выводится на главной и стал методом “тыка” его менять, чтобы получить в результате нормальное отображение текста, без черного ромба. Конечно, у меня ничего не получилось :)

После этого я не стал листать книги по PHP и MySQL, а просто загуглил вопрос в поиске и стал кропотливо искать пояснения, как мне обойти эту проблему. Нашел достаточно много информации, но все было не то. И только в одной статье нашел прямую подсказку, какую функцию можно использовать для вывода анонсов статьи на главной – the_excerpt (). Я решил попробовать и заменил ту, которую поставил автор, на эту. Кстати, советую вам прежде, чем вы что-то решили поменять в коде, сначала сохранить файл. Я сделал чуть проще: так как я менял только одну строку, я просто закомментировал функцию автора. Вы тоже можете использовать подобный подход. Как это делается? Очень просто перед началом любой функции надо поставить вот такие знаки: Например:

<!--- < ?php echo dp_clean($post-&gt;post_content, 250); ? >--->

Таким образом, функция закрыта и работать не будет. Это значит, что мы ее “закомментировали”.
Теперь вставляем функцию the_excerpt (). Выглядеть она будет так:

<?php the_excerpt () ; ?>

Чтобы вам было более понятно, в каком месте необходимо её вставлять, я вам покажу всю часть кода из файла index.php с комментариями в конце каждой строки, что именно выполняется каждой строкой этой части кода. Пример мой из шаблона китаянки, как раз с тем “кривым” кодом:

 <!-- begin latest posts –>--> /* Как раз пример комментария. Говорит, что это – начало.
<div class="box">/* Див, отвечающий за вывод свойства “box” для отображения нашего анонса.
 /* Начало цикла вывода записей из нашей базы данных.
 <ul class="homelist" /* Тег ul – маркированный список. Класс дива “box”. И свойство, и класс – это все из файла стилей style.css. Вы их можете настраивать под себя.
/* Продолжение цикла loop.
<ul>
	<li>/* Тег начала вывода элемента маркированного списка.
 <a>ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a> /* Функция вывода картинки-миниатюры в анонсе статьи.
 /* Сам заголовок статьи.
 < !-post_content, 250); ?>- --> <!-- begin latest posts –> /* Как раз пример комментария. Говорит, что это – начало.
 <div> /* Див, отвечающий за вывод свойства “box” для отображения нашего анонса.
 <?php if (have_posts()) : ?> /* Начало цикла вывода записей из нашей базы данных.
 <ul /* Тег ul – маркированный список. Класс дива “box”. И свойство, и класс – это все из файла стилей style.css. Вы их можете настраивать под себя.
 <?php while (have_posts()) : the_post(); ?> /* Продолжение цикла loop.
 <li> /* Тег начала вывода элемента маркированного списка.
 <a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a> /* Функция вывода картинки-миниатюры в анонсе статьи.
 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> /* Сам заголовок статьи.
 <!---<p><?php echo dp_clean($post->post_content, 250); ?></p>---> /* А это как раз наша “кривая” функция, которая и выводит черный ромб с вопросом внутри в конце записи. Я ее “закомментировал”.
 <p><?php the_excerpt_reloaded(45, '', 'none', TRUE, '', 2); ?></p> /* А это – наша новая функция вывода анонса статьи на главной.
 <a href="<?php the_permalink(); ?>">more</a> /* Тег вывода слова “далее”, кликая на него, мы попадаем на чтение всей статьи (запускается файл single.php).
 </li> /* Тег закрытия элемента маркированного списка.
 <?php endwhile; ?> /* Тег закрытия списка. О списках и свойствах стилей в Сети много он-лайн учебников. Я пользуюсь этим сайтом - www.htmlbook.ru.
 <p> /* Класс стилей, отвечающий за отображения навигации “вперед” и “назад” по нашим страницам записей. Обычно стоит ниже последней записи. Его отлично заменяют плагины страничной навигации типа WP-Pagenavi или WP-Page-Number.
 <?php next_posts_link('&laquo; Older Entries'); ?> &nbsp; /* Выводит ссылку на страницу “назад”
 <?php previous_posts_link('Newer Entries &raquo;'); ?> /* То же, но на страницу “вперед”.
 <?php endif; ?> /* Окончание цикла loop, который выводит наши записи на главной.
 <!-- end latest posts -->

А теперь посмотрим, что произошло после замены “кривой” функции dp_clean($post->post_content, 250) на новую, – the_excerpt (). Показываю на том же примере, что и вверху:

excerpt2

Что сразу бросается в глаза: черного ромба нет, но…. Количество слов увеличилось, а это не очень красиво выглядит. Теперь текст обтекает картинку не только слева, но и внизу. Страница потеряла привлекательность. В чем причина? А причина как раз в функции the_excerpt (), у которой количество символов стоит как бы по умолчанию, и регулировать их вывод мы не можем.

Получается, что одну проблему мы убрали, но столкнулись с другой. Опять я возвращаюсь в поиск и с помощью великого Google (а куда без них и Яшки?) ищу ответ на новую проблему. Искал долго, честное слово. Потому как точно не знал, что ищу. И наконец наткнулся на блог Соники, где она подробно описывает работу еще одной функции, а точнее – плагина, который позволяет регулировать количество символов в анонсе статьи, атакже – настроить еще несколько важных свойств вывода анонса. Я не буду здесь повторять ее статью, а просто отправлю вас к ней – читайте если надо. Здесь я скажу только несколько слов. Внимательно изучив все возможные варианты, я настроил вывод функции так:

 <?php the_excerpt_reloaded(50, '', 'none', TRUE, '', 2); ?>
 

Все, что находится между круглыми скобками – это дополнительные аргументы. Не буду их описывать, скажу только главное: число 50 – это количество слов в анонсе. Честно – считал и сравнивал, не совпадает, но – работает. Регулируйте больше или меньше, и увидите, что количество выводимых слов меняется. И главное: все равно при написании статьи используйте тег <!—more—>, тогда вы сможете добится четкого отображения слов в анонсе, под обрез самой картинки:

excerpt3

Видите, в первых двух записях я, используя в редакторе тег  <!—more—> добился, чтобы анонс заканчивался вровень с картинкой, а в последней статье этого не сделал.

Как использовать функцию the_excerpt_reloaded ? Это плагин, который так и называется. Я его всегда ложу в папку шаблона моей любимой китаянки :) когда сталкиваюсь с ее “кривой” функцией dp_clean($post->post_content, 250). Плагин относится к разряду плагинов, о которых говорят – поставил и забыл. Главное, не забыть руками удалить “кривую” функцию и прописать нужную в тех файлах шаблона, где она работает. Обычно это файлы index.php, archive.php, search.php.

Если вы столкнулись с нечто подобным в своем шаблоне, который брали не у меня, но видите в анонсах черный ромб и знак вопроса – скачайте плагин и попробуйте сделать так как я написал выше. Возможно, вам это поможет.

Скачать Плагин WordPress The-Excerpt-Reloaded

Напомню еще, что обычным блокнотом править файлы php не надо. Надо использовать специальные редакторы с поддержкой UTF-8.

Будут вопросы, отзывы, советы – пишите в комментариях.

Хотите следить за новыми публикациями на моем сайте – .

Информационный партнер: oxford-med.com.ua — стоматология Киев, отбеливание зубов. Есть отделения в Одессе, Днепропетровске, Херсоне, Винница. Современная стоматология, лучшие специалисты.

Олег WordpressШпаргалки ,

Как-то, переводя очередной шаблон китаянки Chiq Montes, столкнулся с проблемой неправильной кодировки русского текста в анонсах статьи на главной странице. Проблема была в том, что фраза обрезалась на неожиданном месте и в конце стоял вот такой символ – черный ромб с вопросом внутри:

excerpt

При этом обратил внимание, что английский текст отображался корректно. Я понял, что проблема лежит в том, что функция, которую использовал автор, некорректно работает с таблицей кириллицы. Во-первых, сначала я посмотрел на функцию, которую автор поставил в файле index.php для вывода анонса статьи. Выглядит она вот так:

<?php echo dp_clean($post-&gt;post_content, 250); ?>

Я решил, что число 250 – это количество символов, которое выводится на главной и стал методом “тыка” его менять, чтобы получить в результате нормальное отображение текста, без черного ромба. Конечно, у меня ничего не получилось :)

После этого я не стал листать книги по PHP и MySQL, а просто загуглил вопрос в поиске и стал кропотливо искать пояснения, как мне обойти эту проблему. Нашел достаточно много информации, но все было не то. И только в одной статье нашел прямую подсказку, какую функцию можно использовать для вывода анонсов статьи на главной – the_excerpt (). Я решил попробовать и заменил ту, которую поставил автор, на эту. Кстати, советую вам прежде, чем вы что-то решили поменять в коде, сначала сохранить файл. Я сделал чуть проще: так как я менял только одну строку, я просто закомментировал функцию автора. Вы тоже можете использовать подобный подход. Как это делается? Очень просто перед началом любой функции надо поставить вот такие знаки: Например:

<!--- < ?php echo dp_clean($post-&gt;post_content, 250); ? >--->

Таким образом, функция закрыта и работать не будет. Это значит, что мы ее “закомментировали”.
Теперь вставляем функцию the_excerpt (). Выглядеть она будет так:

<?php the_excerpt () ; ?>

Чтобы вам было более понятно, в каком месте необходимо её вставлять, я вам покажу всю часть кода из файла index.php с комментариями в конце каждой строки, что именно выполняется каждой строкой этой части кода. Пример мой из шаблона китаянки, как раз с тем “кривым” кодом:

 <!-- begin latest posts –>--> /* Как раз пример комментария. Говорит, что это – начало.
<div class="box">/* Див, отвечающий за вывод свойства “box” для отображения нашего анонса.
 /* Начало цикла вывода записей из нашей базы данных.
 <ul class="homelist" /* Тег ul – маркированный список. Класс дива “box”. И свойство, и класс – это все из файла стилей style.css. Вы их можете настраивать под себя.
/* Продолжение цикла loop.
<ul>
	<li>/* Тег начала вывода элемента маркированного списка.
 <a>ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a> /* Функция вывода картинки-миниатюры в анонсе статьи.
 /* Сам заголовок статьи.
 < !-post_content, 250); ?>- --> <!-- begin latest posts –> /* Как раз пример комментария. Говорит, что это – начало.
 <div> /* Див, отвечающий за вывод свойства “box” для отображения нашего анонса.
 <?php if (have_posts()) : ?> /* Начало цикла вывода записей из нашей базы данных.
 <ul /* Тег ul – маркированный список. Класс дива “box”. И свойство, и класс – это все из файла стилей style.css. Вы их можете настраивать под себя.
 <?php while (have_posts()) : the_post(); ?> /* Продолжение цикла loop.
 <li> /* Тег начала вывода элемента маркированного списка.
 <a href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, 'thumbnail', 'alt="' . $post->post_title . '"'); ?></a> /* Функция вывода картинки-миниатюры в анонсе статьи.
 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> /* Сам заголовок статьи.
 <!---<p><?php echo dp_clean($post->post_content, 250); ?></p>---> /* А это как раз наша “кривая” функция, которая и выводит черный ромб с вопросом внутри в конце записи. Я ее “закомментировал”.
 <p><?php the_excerpt_reloaded(45, '', 'none', TRUE, '', 2); ?></p> /* А это – наша новая функция вывода анонса статьи на главной.
 <a href="<?php the_permalink(); ?>">more</a> /* Тег вывода слова “далее”, кликая на него, мы попадаем на чтение всей статьи (запускается файл single.php).
 </li> /* Тег закрытия элемента маркированного списка.
 <?php endwhile; ?> /* Тег закрытия списка. О списках и свойствах стилей в Сети много он-лайн учебников. Я пользуюсь этим сайтом - www.htmlbook.ru.
 <p> /* Класс стилей, отвечающий за отображения навигации “вперед” и “назад” по нашим страницам записей. Обычно стоит ниже последней записи. Его отлично заменяют плагины страничной навигации типа WP-Pagenavi или WP-Page-Number.
 <?php next_posts_link('&laquo; Older Entries'); ?> &nbsp; /* Выводит ссылку на страницу “назад”
 <?php previous_posts_link('Newer Entries &raquo;'); ?> /* То же, но на страницу “вперед”.
 <?php endif; ?> /* Окончание цикла loop, который выводит наши записи на главной.
 <!-- end latest posts -->

А теперь посмотрим, что произошло после замены “кривой” функции dp_clean($post->post_content, 250) на новую, – the_excerpt (). Показываю на том же примере, что и вверху:

excerpt2

Что сразу бросается в глаза: черного ромба нет, но…. Количество слов увеличилось, а это не очень красиво выглядит. Теперь текст обтекает картинку не только слева, но и внизу. Страница потеряла привлекательность. В чем причина? А причина как раз в функции the_excerpt (), у которой количество символов стоит как бы по умолчанию, и регулировать их вывод мы не можем.

Получается, что одну проблему мы убрали, но столкнулись с другой. Опять я возвращаюсь в поиск и с помощью великого Google (а куда без них и Яшки?) ищу ответ на новую проблему. Искал долго, честное слово. Потому как точно не знал, что ищу. И наконец наткнулся на блог Соники, где она подробно описывает работу еще одной функции, а точнее – плагина, который позволяет регулировать количество символов в анонсе статьи, атакже – настроить еще несколько важных свойств вывода анонса. Я не буду здесь повторять ее статью, а просто отправлю вас к ней – читайте если надо. Здесь я скажу только несколько слов. Внимательно изучив все возможные варианты, я настроил вывод функции так:

 <?php the_excerpt_reloaded(50, '', 'none', TRUE, '', 2); ?>
 

Все, что находится между круглыми скобками – это дополнительные аргументы. Не буду их описывать, скажу только главное: число 50 – это количество слов в анонсе. Честно – считал и сравнивал, не совпадает, но – работает. Регулируйте больше или меньше, и увидите, что количество выводимых слов меняется. И главное: все равно при написании статьи используйте тег <!—more—>, тогда вы сможете добится четкого отображения слов в анонсе, под обрез самой картинки:

excerpt3

Видите, в первых двух записях я, используя в редакторе тег  <!—more—> добился, чтобы анонс заканчивался вровень с картинкой, а в последней статье этого не сделал.

Как использовать функцию the_excerpt_reloaded ? Это плагин, который так и называется. Я его всегда ложу в папку шаблона моей любимой китаянки :) когда сталкиваюсь с ее “кривой” функцией dp_clean($post->post_content, 250). Плагин относится к разряду плагинов, о которых говорят – поставил и забыл. Главное, не забыть руками удалить “кривую” функцию и прописать нужную в тех файлах шаблона, где она работает. Обычно это файлы index.php, archive.php, search.php.

Если вы столкнулись с нечто подобным в своем шаблоне, который брали не у меня, но видите в анонсах черный ромб и знак вопроса – скачайте плагин и попробуйте сделать так как я написал выше. Возможно, вам это поможет.

Скачать Плагин WordPress The-Excerpt-Reloaded

Напомню еще, что обычным блокнотом править файлы php не надо. Надо использовать специальные редакторы с поддержкой UTF-8.

Будут вопросы, отзывы, советы – пишите в комментариях.

Хотите следить за новыми публикациями на моем сайте – .

Информационный партнер: oxford-med.com.ua — стоматология Киев, отбеливание зубов. Есть отделения в Одессе, Днепропетровске, Херсоне, Винница. Современная стоматология, лучшие специалисты.

Понравилась статья? Поделись с друзьями!

Что еще читают:

Рубрика: Wordpress, Шпаргалки

Внимание!

Прежде, чем задавать свой вопрос - пожалуйста, прочитайте F.A.Q.

7 коммент. пока.

  1. WWWorm:

    Здравствуйте.
    Поставил на WP 3.9.1 (rus) тему JoomlaXTC Typografik theme for WordPress. Возникла описанная вами проблема.
    Но функции dp_clean($post->post_content, там нет.
    Вывод идет через

                          &lt;?php if ($option[&#039;post_content_display&#039;]==&#039;e&#039;):
                            $option[&#039;post_excerpt_length&#039;] = (int)(trim($option[&#039;post_excerpt_length&#039;]));
                            if( $option[&#039;post_excerpt_length&#039;] != 0 )echo nun_of_words(get_the_excerpt(), $option[&#039;post_excerpt_length&#039;]);
                            else the_excerpt();
                            echo &quot;";                        
                          endif; ?&gt;
    

    Если прописать , то слетает весь стиль оформления.
    Подскажите как решить проблему?

    • Олег:

      Ромбы у вас выскакивают из-за функции

      post_excerpt-leinght
      

      Вероятней всего, она описана в файле functions.php вашей темы.
      Это все, чем могу помочь.

  2. Вот это ОГРОМНОЕ спасибо! Не долго искал, и нашел то что мне нужно. У меня тоже ромбики выскакивают. Сегодня буду исправлять.

  3. k0tello:

    У меня похожая проблема при выводе последних комментариев…
    Не знал даже, с чего и начать… теперь посмотрю — может получится

  4. Floock:

    Зачет Мэн! Спасибо тебе за разъяснение насчет этого проклятого черного ромба! Он меня, пад..ла такая достал просто! )

Добавить комментарий


Если вы хотите добавить код HTML, PHP или CSS, воспользуйтесь коротким кодом: [php]здесь код[/php]





Искать на сайте

icon
Подняться наверхПодняться наверх