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

Помощь Вывод на страницах категорий постов только в виде картинок с титлом

dirak

Постоялец
Регистрация
7 Фев 2007
Сообщения
107
Реакции
7
Подскажите, с помощью какого плагина можно в разделе всех категорий (category/kino, category/soveti) выводить посты только в виде картинок с титлом (без описания). На главной странице вывод постов должен быть стандартный - картинка, титл, описание с кнопкой "далее", а страницы категорий (можно и тэгов) выводились бы без описания, можно в стандартной форме (но обязательно без описания), а можно в виде множества квадратиков с картинками и с титлом.
 
ikonki.jpg


Вот такого типа отображение можно как-нибудь сделать? Может плагин какой есть.
 
Вот такого типа отображение можно как-нибудь сделать? Может плагин какой есть.
Плагин попадался, но вспомнить не смог где, а вот то что в шаблонах это встречается - это факт.
Вот, например, на тестовом сайте я воспроизвёл похожий вариант:
Для просмотра ссылки Войди или Зарегистрируйся
 
PHP:
                <?php if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?>
                <div class="child-thumb">
                 <a href="<?php echo  get_permalink($pageChild->ID); ?>" rel="bookmark" title="<?php echo $pageChild->post_title; ?>">
                    <?php $thumb = get_the_post_thumbnail($pageChild->ID, 'product-thumb');
                    if ($thumb) echo $thumb;
                    else echo '<img width="240" height="180" src="/wp-content/themes/eta/img2/nophoto.jpg">';
                    ?>
                    <div class="chtitle"><?php echo $pageChild->post_title; ?></div>
                 </a>
                </div>
                <?php endforeach; wp_reset_postdata(); endif;
                ?>

Вот пример кода для страниц. $child_pages - в данном случае, это массив дочерних страниц. У вас будет что-то подобное для категорий.
 
Примерно так я реализовал

Этот код выдергивает картинку из поста.

все это дело втавляем в category.php
PHP:
<div class="postimg"> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">               
<?php $img_url = catch_that_image(); $image = aq_resize( $img_url, 195, true);if($image) : ?> <img src="<?php echo $image ?>"/> <?php endif; ?></a></div>

                    <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

в functions.php вставляем
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/default.jpg";
  }
  return $first_img;
}
function aq_resize( $url, $width, $height = null, $crop = null, $single = true ) {
    //validate inputs
    if(!$url OR !$width ) return false;
    //define upload path & dir
    $upload_info = wp_upload_dir();
    $upload_dir = $upload_info['basedir'];
    $upload_url = $upload_info['baseurl'];
    //check if $img_url is local
    if(strpos( $url, home_url() ) === false) return false;
    //define path of image
    $rel_path = str_replace( $upload_url, '', $url);
    $img_path = $upload_dir . $rel_path;
    //check if img path exists, and is an image indeed
    if( !file_exists($img_path) OR !getimagesize($img_path) ) return false;
    //get image info
    $info = pathinfo($img_path);
    $ext = $info['extension'];
    list($orig_w,$orig_h) = getimagesize($img_path);
    //get image size after cropping
    $dims = image_resize_dimensions($orig_w, $orig_h, $width, $height, $crop);
    $dst_w = $dims[4];
    $dst_h = $dims[5];
    //use this to check if cropped image already exists, so we can return that instead
    $suffix = "{$dst_w}x{$dst_h}";
    $dst_rel_path = str_replace( '.'.$ext, '', $rel_path);
    $destfilename = "{$upload_dir}{$dst_rel_path}-{$suffix}.{$ext}";
    //if orig size is smaller
    if($width >= $orig_w) {
        if(!$dst_h) :
            //can't resize, so return original url
            $img_url = $url;
            $dst_w = $orig_w;
            $dst_h = $orig_h;
        else :
            //else check if cache exists
            if(file_exists($destfilename) && getimagesize($destfilename)) {
                $img_url = "{$upload_url}{$dst_rel_path}-{$suffix}.{$ext}";
            }
            //else resize and return the new resized image url
            else {
                $resized_img_path = image_resize( $img_path, $width, $height, $crop );
                $resized_rel_path = str_replace( $upload_dir, '', $resized_img_path);
                $img_url = $upload_url . $resized_rel_path;
            }
        endif;
    }
    //else check if cache exists
    elseif(file_exists($destfilename) && getimagesize($destfilename)) {
        $img_url = "{$upload_url}{$dst_rel_path}-{$suffix}.{$ext}";
    }
    //else, we resize the image and return the new resized image url
    else {
        $resized_img_path = image_resize( $img_path, $width, $height, $crop );
        $resized_rel_path = str_replace( $upload_dir, '', $resized_img_path);
        $img_url = $upload_url . $resized_rel_path;
    }
    //return the output
    if($single) {
        //str return
        $image = $img_url;
    } else {
        //array return
        $image = array (
            0 => $img_url,
            1 => $dst_w,
            2 => $dst_h
        );
    }
    return $image;
}

Вроде работает, и красиво оформить в стили.
 
Назад
Сверху