• Решено smargelov

    (@smargelov)


    Тема взята в сети, но слайдер к ней платный. Поэтому я решил вставить туда самодельную карусель.
    Вот его (слайдера) код:

    <?php query_posts('showposts=3&cat=5');?>
    <div id="featured" >
        <ul class="ui-tabs-nav">
            <?php while (have_posts()) : the_post(); ?>
            <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-<?php the_ID(); ?>">
                <a href="#fragment-<?php the_ID(); ?>">
                    <i>&nbsp;</i>
                </a>
            </li>
            <?php endwhile; ?>
        </ul>
        <?php while (have_posts()) : the_post(); ?>
        <div id="fragment-<?php the_ID(); ?>" class="ui-tabs-panel ui-tabs-hide" style="">
            <div class="info" >
                <h2>
                    <a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a>
                </h2>
                <p>
                    <a href="<?php the_permalink(); ?>" ><?php the_excerpt(); ?></a>
                </p>
            </div>
        </div>
        <?php endwhile; ?>
    </div>

    И будь это моя самодельная темя, я бы вставил строчку
    <?php include(TEMPLATEPATH."/slider.php");?>
    в нужное место шаблона index.php и дальше дорабатывал бы напильником CSS. Но тут засада.
    Вот как выглядит index.php этой темы:

    <?php
    
    get_header(); // Loads the header.php template 
    
    if (have_posts()) : ?>
    <div id="blog-wrap" class="blog-isotope clearfix">
    	<?php
    	// Loop through each post
        while (have_posts()) : the_post();
            get_template_part( 'content', get_post_format() );
        endwhile;
        ?>
    </div><!-- /post -->
    <?php
    wpex_pagination(); // Paginate your posts
    endif;
    get_footer(); //get template footer ?>

    Вот как выглядит файл content.php

    <article <?php post_class('blog-entry clearfix'); ?>>
    	<?php
        // Get resize and show featured image : refer to functions/img_defaults.php for default values
        $wpex_entry_img = aq_resize( wp_get_attachment_url( get_post_thumbnail_id(), 'full' ),  wpex_img( 'blog_entry_width' ), wpex_img( 'blog_entry_height' ), wpex_img( 'blog_entry_crop' ) );
        	if($wpex_entry_img) {  ?>
            <!-- <div class="blog-entry-thumbnail">
                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php echo $wpex_entry_img; ?>" alt="<?php echo the_title(); ?>" /></a>
            </div> --><!-- /blog-entry-thumbnail -->
        <?php } ?>
        <div class="entry-text clearfix">
            <header>
                <h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
            </header>
    		<?php
            if( !empty($post->post_content) ) {
                the_content();
                } else {
                   echo wp_trim_words(get_the_content(), 20); } ?>
            <ul class="entry-meta">
            	<li><strong>Дата:</strong> <?php echo get_the_date(); ?></li>
                <li><strong>Раздел:</strong> <?php the_category(', '); ?></li>
                <li>
                    <?php
                        $custom_tax = company; // указываем регистрационный "домен" своей таксономии из function.php
                        $before = '<strong>Компания: </strong>';
                        $sep = ' , ';  
    
                        the_terms( $post->ID, $custom_tax, $before, $sep);
                    ?>
                </li>
                <li>
                    <?php
                        $custom_tax = product; // указываем регистрационный "домен" своей таксономии из function.php
                        $before = '<strong>Продукт: </strong>';
                        $sep = ' , ';  
    
                        the_terms( $post->ID, $custom_tax, $before, $sep);
                    ?>
                </li>
                <!-- <li><?php the_tags('<strong>Метки: </strong>', ', '); ?></li>   -->
            </ul><!-- /entry-meta -->
        </div><!-- /entry-text -->
    </article><!-- /blog-entry -->

    А вот так нижняя часть header.php:

    <?php wpex_hook_header_after(); ?>
        </div><!-- /header-wrap -->
    
        <?php wpex_hook_content_before(); ?>
        <div id="main-content" class="clearfix">
        <?php wpex_hook_content_top(); ?>
    
        <?php
    	// Show slider and tagline on the homepage only
        if( is_front_page() ) : 
    
    		// Display subtitle if defined in the options panel
    		if ( of_get_option('home_subtitle') !== '' ) {
    			// Display subtitle as long as it's not a paginated page
    			if ( !is_paged() ) {
    			?>
    			<h2 id="homepage-title"><span><?php echo of_get_option('home_subtitle', 'The Blog Of AJ Clarke'); ?></span></h2>
    
    		<?php } } ?>
    
    		<?php
    		// Run code on non-paginated pages
    		if ( !is_paged() ) {
    			// Check if the soliloquy slider plugin is activated
    			if ( function_exists( 'soliloquy_slider' ) ) {
    				// Display soliloqury slider
    				if ( of_get_option('home_slider') !== 'Select' ) { ?>
    					<div id="home-slider"><?php soliloquy_slider( of_get_option('home_slider') ) ?></div>
    			<?php }
    			}
    		}
    
    	// End is_front_page check
    	endif; ?>

    При моих знаниях php, вставка в любой из этих файлов заветной строчки, заканчивается, в лучшем случае, тем, что под слайдером у меня отображаются те же самые три поста из категории с ID 5.

    Помогите мне советом. Как мне победить эту неприятность?

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • // Check if the soliloquy slider plugin is activated
    if ( function_exists( 'soliloquy_slider' ) ) {
        // Display soliloqury slider
        if ( of_get_option('home_slider') !== 'Select' ) { ?>
            <div id="home-slider"><?php soliloquy_slider( of_get_option('home_slider') ) ?></div>
    <?php }
    }

    Вставлять надо вместо этих строк. Возможно, CSS стили id «home-slider» пригодятся (ширина, например).
    В самодельную карусель не помешает вставить wp_reset_query, и вообще она странноватая, с двумя циклами while.

    vjpo

    огромное спасибо. Заработало. За идею со стилями home-slider тоже спасибо. Попробую.

    Если сможете, подскажите, как оптимизировать код слайдера. Буду признателен.

    То, что точно могу сказать удаленно: wp_reset_query(); после последнего endwhile; в карусели не помешает.

    vjpo

    ну это-то я уже вставил. Спасибо.
    А вот что делать с двумя циклами?

    Два цикла — совсем не преступление, просто я такого не видел, но я много чего не видел ) Если карусель не полностью самодельная, дайте ссылочку на пример карусели в сети, тогда будет понятно.

    Насколько я понял по стилям, используется ui tabs.

    Изначально слайдер был таким.

    <?php query_posts('showposts=4&cat=128');?>
    <div id="featured" >
        <ul class="ui-tabs-nav">
            <?php while (have_posts()) : the_post(); ?>
            <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-<?php the_ID(); ?>"><a href="#fragment-<?php the_ID(); ?>"><p class="date-item">
                <?php the_time('d.m.Y'); ?><p><?php the_title(); ?></p>
            </p></a>
                <div class="prew-icon">
                    <?php $image = get_post_meta($post->ID, 'photo', true); if($image !== '') { ?>
                        <img src="/wp-content/themes/SMargelov-A/images/images_at.png" width="30" title="Есть фото" alt="Есть фото">
                    <?php } ?>
                    <?php $vidos = get_post_meta($post->ID, 'video', true); if($vidos !== '') { ?>
                        <img src="/wp-content/themes/SMargelov-A/images/video_at.png" width="30" title="Есть видео" alt="Есть видео">
                    <?php } ?>
                    <?php $sound = get_post_meta($post->ID, 'audio', true); if($sound !== '') { ?>
                        <img src="/wp-content/themes/SMargelov-A/images/music_at.png" width="30" title="Есть аудио" alt="Есть аудио">
                    <?php } ?>
                </div>
            </li>
            <?php endwhile; ?>
        </ul>
        <?php while (have_posts()) : the_post(); ?>
        <div id="fragment-<?php the_ID(); ?>" class="ui-tabs-panel ui-tabs-hide" style="">
            <a href="<?php the_permalink(); ?>">
                        <?php
                            if ( has_post_thumbnail() ) {
                            } else {
                        ?>
                        <img src="/wp-content/themes/SMargelov-A/images/slider-df.jpg" alt="">
                        <?php } ?>
    
                <?php the_post_thumbnail('slider_image'); ?>
            </a>
            <div class="info" >
            <p><a href="<?php the_permalink(); ?>" >(<?php the_time('d.m.Y'); ?>)</a></p>
            <h2><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a></h2>
            </div>
        </div>
        <?php endwhile; ?>
    </div>

    Если это такой слайдер, то использование 2 циклов вполне оправдано.
    http://demo.webdeveloperplus.com/featured-content-slider/

    Да, изначально был он (больше года назад находил). Но теперь нужно кое что другое. Спасибо за помощь

    Вам тоже спасибо, теперь буду знать про 2 цикла. Я бы наверное эти два цикла делал как while (основной) и foreach (для элементов списка li), а теперь есть выбор в средствах 🙂

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Помогите правильно вставить слайдер» закрыта для новых ответов.