Вывод записей на wordpress тизерами
Меня давненько спрашивают как я вывожу случайные записи на своем seo блоге (хотя он уже давно не seo)) в виде тизеров, как вы видите на сайте под шапкой. Пришло время рассказать вам об этом.
Все достаточно просто, немножко кода в wordpress, немножко кода в CSS ну и немножко фантазии для оформления блоков тизеров. Итак, поехали.
Идем сначала в файл header.php, он находится в папке с вашей темой wordpress. Я вставил вывод тизеров под меню блога. Код такой:
<div id="articles">
<?php $myposts = get_posts('orderby=rand&numberposts=6');
foreach($myposts as $post) : ?>
<div id="artimage">
<img src="<?php bloginfo('stylesheet_directory'); ?>/timthumb.php?src=<?php echo catch_that_image() ?>&h=90&w=120&q=85&zc=1" width="120" height="90" alt="<?php the_title(); ?>" />
<br /><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
<?php endforeach; ?>
</div>
<hr />
Ну тут все понятно, указываем блок articles, параметр numberposts указывает на количество тизеров, у меня их 6. Далее идет картинка, которая выводится скриптом timthumb.php, который должен лежать в папке с темой wordpress? там же нужно создать папку cahce и задать ей права chmod 777. В эту папку скрипт будет слаживать все кешированные картинки. Кстати скрипт извлекает первую картинку поста, уменьшает ее размер до необходимого. Скачать тут timthumb.
Как я это делаю? Присмотритесь к строке
<img src="<?php bloginfo('stylesheet_directory');
?>/timthumb.php?src=<?php echo catch_that_image() ?>
&h=90&w=120&q=85&zc=1" width="120" height="90"
alt="<?php the_title(); ?>" />
В ней вы видите src – адрес картинки это адрес скрипта, а сама артинка скрипту перелается функцией php – catch_that_image(). Эту функцию надо добавить в файл functions.php, который лежит в папке с темой блога. Вот код функции:
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i',$post->post_content, $matches);
$first_img = $matches [1] [0];
// no image found display default image instead
if(empty($first_img)){
$first_img = "/images/2010/03/money.jpg";
}
return $first_img;
}
Если картинка не найдена в записи, то выведем картинку по умолчанию, она прописана в параметре $first_img. Осталось только подредактировать CSS файл, чтобы визуально отобразить так как на надо. У меня код такой:
#articles {
background:none repeat scroll 0 0 #EFEFEF;
overflow:hidden;
padding:7px 5px;
text-align:center;
width:970px;
}
#articles #artimage{
float:left;
width:16.6%;
}
Вот в принципе и все. Удачи!
Смотрите на сайте можно найти серию электроустановочных изделий в широком ассортименте с огромным выбором цветов и материалов от компании unica top.




(No Ratings Yet)
12 comments
Юлия says:
Авг 15, 2010
Если картинка на тизерах не отображается, с чем это может быть связано?
Арни Веб Дизайн says:
Авг 18, 2010
Возможно вы забыли папке cache поставить права 0777 на запись в эту папку кешированных картинок
oldvovk says:
Авг 25, 2010
Вероятно, можно выводить не только титл но и краткий текст статьи?
Dmy says:
Сен 4, 2010
Пожалуйста, гляньте, почему на мой блог не получилось такой фишки сделать, не пойму. Хотел только после поста случайные картинки выводить…
alla says:
Янв 4, 2011
Спасибо, попробую у себя реализовать
Евгений says:
Фев 17, 2011
Здравтсвуйте. Спасибо за пост. Как раз то что нужно.
Но у меня возникла проблемка. Изображения не отображаются. Папка cache с правами 0777.
Единственный момент изображения лежат на picasa, скорее всего из-за этого что-то не работает.
Арни Веб Дизайн says:
Фев 17, 2011
Евгений, по идее скрипт не может работать с изображениями с других сайтов.
Хотя в новой версии это вроде бы реализовано
http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/
http://timthumb.googlecode.com/svn/trunk/timthumb.php
BapabaIIIka says:
Фев 25, 2011
Не могу никак понять в чем ошибка.
Если публикую картинку с http://sait./../.jpg то она в заметки отображается, а на главной странице нет.
Если эту не картинку пишу без http просто sait./../.jpg она нормально выходит миниатюрой на главной, зато не отображается в заметках.
Помогите понять что не правильно делаю.
Арни Веб Дизайн says:
Фев 26, 2011
посмотри сюда http://ymobi.ru/wp-content/themes/kremjam/timthumb.php?src=http://ymobi.ru/wp-content/uploads/2011/02/SWAT-3-soldier-of-the-future_01.png&h=128&w=96&q=80&zc=1
на твоем хостинге sweb этот скрипт не работает, так как они отключили выполнение небезопасных скриптов или че там.
Евгений says:
Фев 26, 2011
Спасибо. Я так и понял что это проблема с хостингом. Буду разбираться далее. Пока получилось сделать вывод похожих записей с иллюстрациями. Для этого пришлось иллюстрации перенести на хостинг.
BapabaIIIka says:
Мар 10, 2011
Спасибо большое за помощь, а то я замучился искать в чем ошибка.
Поменял тему с другим скриптом и все заработало.
Ирина says:
Мар 19, 2011
Спасибо большое! А то я очень долго плагин искала, который бы выводил так посты. А оказалось и без плагина можно