wordpress превью

123 4
Лилия Р
На сайте с 10.12.2009
Offline
30
4054

После вёрстки темы пытаюсь укротить превьюшки на вордпрессе. Сейчас картинки отображаются в анонсах на главной в полную величину. Погуглив и поискав здесь на форуме нашла решение, которое так и не привело к нужному результату:

в файле functions.php шаблона прописала:

if ( function_exists( 'add_theme_support' ) )

add_theme_support( 'post-thumbnails' );

Следующей строкой добавила размеры:

set_post_thumbnail_size( 50, 50 );

Затем рекомендовалось в файл индекс вставить строку

<?php the_post_thumbnail(); ?>

но с этим проблема. Пробовала вставлять в разные места так, чтобы было в пределах цикла loop, но ничего путёвого не получилось.

Посоветуйте что можно сделать в этом случае.

Заранее благодарна за любой совет.

SS
На сайте с 28.05.2008
Offline
142
#1

Что именно не получилось и что все-таки получилось? Превьюшки не выводятся совсем или выводятся, но не того размера?

Если не того размера, попробуйте вывести так <?the_post_thumbnail(array(50,50));?>

Еще поидее надо добавить размер превьюшек, что бы они генерировались нужного размера.

Это можно сделать в админке в настройках, либо програмно добавить нужные размеры.

Например

<?add_image_size( '50x50', 50, 50, true );?>

O
На сайте с 11.02.2011
Offline
106
#2

задайте размер через css

заработай 100$ в день (http://u.to/2HRmCA)
Лилия Р
На сайте с 10.12.2009
Offline
30
#3
SmartSEO:
Что именно не получилось и что все-таки получилось? Превьюшки не выводятся совсем или выводятся, но не того размера?

Превью выводятся, но такого же размера, как и оригинал в статье. В результате на главной получается большая картинка, а ПОД ней анонс статьи. Уродство сплошное.

SmartSEO:
Если не того размера, попробуйте вывести так <?the_post_thumbnail(array(50,50));?>

Я вставляла строчку с указанием размеров:

set_post_thumbnail_size( 50, 50 )

Значит она не нужна и не работает, если Вы рекомендуете указать размеры по-дргому?

Тогда в каком файле это (<?the_post_thumbnail(array(50,50));?>) нужно добавить? Пробовала в functions.php, но после этого вообще получился шок. После того, как нажала на "Обновить файл" вместо обновлённого файла увидела чистую страницу с сообщением:

Parse error: syntax error, unexpected '<' in /home/..../public_html/wp-content/themes/.../functions.php on line 474

Та же история и на главной странице сайта. В админку было не зайти вообще. Есть только эта строка и всё. Пришлось заходить и редактировать файл functions в си панели хоста. Убрала строку <?the_post_thumbnail(array(50,50));?> и всё опять вернулось.

Вопрос остаётся открытым - что можно сделать и куда прописать.

SS
На сайте с 28.05.2008
Offline
142
#4

Это вместо вашего <?php the_post_thumbnail(); ?> в index.php

Покажите шаблон этого файла

Nomiki
На сайте с 28.03.2012
Offline
117
#5

Лилия Р

Попробуйте тянуть картинку следующим образом:

1. Вставляем функцию в 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];

if(empty($first_img)){ //Defines a default image
$first_img = "/images/noimage.jpg";
}
return $first_img;
}

2. Выводим картинку img функцией:

<?php echo catch_that_image() ?>

3. Для img прописываем как вам удобнее, типа такого:

<div class="kartinka" style="border: 1px solid #333; width: 110px;height: 80px;background: url(<?php if(catch_that_image() != '') { echo catch_that_image(); } else { ?>http://вашсайт.ру/wp-content/themes/имя шаблона/images/no-image.gif<?php } ?>) 0 0 no-repeat;"> </div>

4. Ну и не забыть поставить в папку картинку, которая будет показана, если их нет.

Должно сработать ;)

Заказать дизайн сайта: nomiki@yandex.ru | Портфолио: behance.net/nomiki | ВК: vk.com/nmk_msk
Лилия Р
На сайте с 10.12.2009
Offline
30
#6
SmartSEO:
Это вместо вашего <?php the_post_thumbnail(); ?> в index.php
Покажите шаблон этого файла

SmartSEO, благодарю за то, что пытаетесь помочь, но я писала, что не смогла вставить раньше строку вывода изображения. Вот код:

<?php

/**

* The main template file.

*

* This is the most generic template file in a WordPress theme

* and one of the two required files for a theme (the other being style.css).

* It is used to display a page when nothing more specific matches a query.

* E.g., it puts together the home page when no home.php file exists.

* Learn more: http://codex.wordpress.org/Template_Hierarchy

*

* @package WordPress

* @subpackage Twenty_Ten

* @since Twenty Ten 1.0

*/

get_header(); ?>

<?php

/* Run the loop to output the posts.

* If you want to overload this in a child theme then include a file

* called loop-index.php and that will be used instead.

*/

get_template_part( 'loop', 'index' );

?>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

---------- Добавлено 31.07.2012 в 15:38 ----------

Nomiki:
Лилия Р
Попробуйте тянуть картинку следующим образом...



Прошу прощения, Nomiki. Я вставила код 1) в файл functions.php, куда вставить 2) и 3) уточните пожалуйста.

Что касается 4) - значит ли это, что мне нужно ещё для каждой картинки создавать отдельную уменьшенную копию и сохранять в отдельную папку? На других сайтах на вордпрессе мне это делать не приходится никогда.
Nomiki
На сайте с 28.03.2012
Offline
117
#7
Лилия Р:
Прошу прощения, Nomiki. Я вставила код 1) в файл functions.php, куда вставить 2) и 3) уточните пожалуйста.
Что касается 4) - значит ли это, что мне нужно ещё для каждой картинки создавать отдельную уменьшенную копию и сохранять в отдельную папку? На других сайтах на вордпрессе мне это делать не приходится никогда.

Вставляете в index.php или archive.php (реже) в цикле loop. Суть в том, что выводится первая картинка из поста автоматом миниатюрой, размеры которой для всего сайта вы устанавливаете сами (в зависимости от дизайна).

Функция:

if(empty($first_img)){ //Defines a default image
$first_img = "/images/noimage.jpg";
возвращает картинку дефолтную (которую вы заранее назовете noimage.jpg и положите в папку сайта) в случае, только ЕСЛИ допустим в каком-то посте картинок нет вообще, чтобы не было пустого окна вместо превью, можете хоть логотип вставить сайта например.

Условия для .kartinka можете прописать в css - шаблона, размеры, рамку, тень и т.п. Может так будет проще, т.е. новый класс.

З.Ы. Например, если надо вторую картинку в посте делать превью, то вместо:

$first_img = $matches [1] [0];
поставьте
$first_img = $matches [1] [1];
в functions.php

И да, надо иметь ввиду, что приведенный код вытягивания первой картинки из поста по факту лишь уменьшает изображения для браузера, делая превью, но не само изображение (как делают и плагины для превью). Поэтому для сайтов с большими (по весу) изображениями в постах, такая генерация будет тяжелой, например если в УВ2 рубрики выводится допустим 20 постов, из них идет превью для каждого, а картинка 1024х860. Юзер вынужден загружать их всех, хотя видит только превью. В остальном работает хорошо.

Лилия Р
На сайте с 10.12.2009
Offline
30
#8
Nomiki:
Вставляете в index.php или archive.php (реже) в цикле loop.

В индекс вставляла - без результата. Возможно потому, что в цикл loop не запихнуть. Эти файлы вынесены отдельно:

loop-attachment.php

loop-page.php

loop-single.php

loop.php

Значит в какой-то из них вставить коды 2 и 3?

SS
На сайте с 28.05.2008
Offline
142
#9

Лилия Р, уже более понятно. Вставлять будем в другой файл.

Может выложите тему целиком?

Лилия Р
На сайте с 10.12.2009
Offline
30
#10
SmartSEO:
Лилия Р, уже более понятно. Вставлять будем в другой файл.
Может выложите тему целиком?

Не совсем понятно что именно выложить? :)

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий