[Помогите] Нужна помощь с шаболоном Harmony

Тема в разделе "Wordpress", создана пользователем typus, 4 дек 2013.

Модераторы: Sorcus
  1. typus

    typus

    Регистр.:
    25 июл 2007
    Сообщения:
    630
    Симпатии:
    152
    Всем привет, речь вот об этом шаблоне от elegantthemes - пытаюсь допилить под свои нужды, но вот осталось несколько нерешенных проблем.

    Первое, что необходимо, это изменить кое-где вывод на главной странице.
    Т.е. порядок чередования - фиксированное фоновое изображение - стандартный светлый фон - нравится, и хочу, чтобы это чередование осталось, но вот магазин мне пока не нужен. В этом шаблоне вывод этой части реализован только если woocommerce установлен и есть рекомендуемые товары. Для полноты картины установил, удалю если смогу справиться без него. На место "рекомендуемых товаров" из магазина хочу воткнуть accordion на 5-10 элементов, сделанный с помощью вот этого плагина.
    С помощью этого плагина элементы выводятся шорткодом - т.е. с помощью небольшой css обертки я могу легко вывести то что мне требуется в пост, на страницу или в текстовый виджет - вот таким образом например.
    Код:
    <style>
    .ui-accordion-header{ margin:2px 0 0; }
    
    .ui-accordion-header a{
    padding:2px 12px;
    background: #202020;
    color:#FFFFFF;
    display:block;
    border:medium none #202020;
    width:990px; height:40px; }
    
    .ui-accordion-header.ui-state-active a, .ui-accordion-header a:hover{ background-color: #EC6262;
    color:#FFFFFF;
    border-color: #EC6262;
    width:990px; height:40px; }
    
    .ui-accordion-content{ padding-top:10px; width:990px; } h2{ font-size:30px;
    font-weight: 100; }
    </style>
    <h2>Тексты</h2>
    <p></p>
    <p></p>
    <p></p>
    [accordions autoHeight='true'  disabled='false' active=50  clearStyle=false collapsible=true fillSpace=true ]
    [accordion title='Название 1' class='new-class']
    Внутренний текст
    [/accordion]
    [accordion title='Название 2' class='new-class']
    Внутренний текст
    [/accordion]
    [accordion title='Название 3' class='new-class']
    Внутренний текст
    [/accordion]
    [accordion title='Название 4' class='new-class']
    Внутренний текст
    [/accordion]
    [accordion title='Название 5' class='new-class']
    Внутренний текст
    [/accordion]
    [/accordions]
    Вот это то я и хотел бы добавить вместо вывода товаров из магазина - в шаблоне этот вывод товаров реализован так:
    Код:
    <?php if ( class_exists( 'woocommerce' ) && 'on' == $display_shop_section ) : ?>
    
    <div id="home-products">
        <div class="container">
            <h2><?php echo esc_html( et_get_option( 'harmony_shop_section_title', __( 'Awesome Swag', 'Harmony' ) ) ); ?></h2>
            <div id="products" class="clearfix">
            <?php
                $products_per_page = (int) et_get_option( 'harmony_homepage_products_per_page', 8 );
                echo do_shortcode( sprintf( '[featured_products per_page="%s" columns="4"]', esc_attr( $products_per_page ) ) );
            ?>
            </div> <!-- end #products -->
        </div> <!-- end .container -->
    </div> <!-- end #home-products -->
    
    <?php endif; // class_exists( 'woocommerce' ) && 'on' == $display_shop_section ?>
    В общем то я согласен даже прямо тут внаглую, внутри скажем контейнера прописать то что мне надо, лишь бы заработало, но вот пока не получается. Т.е. я понимаю, что тут нельзя напрямую шорткодом прописывать, поэтому пытаюсь прописать чистым html, все в принципе получается, весь аккордеон вижу, но не работает java script - хотя если тут же рядом ниже вывожу в текстовом виджете - все работает.
    Возможно, я как то неправильно подключаю js файл от аккордеона - или может дело в другом, сам js файл маленький вот такого содержания:
    Код:
    jQuery(document).ready(function($) {
        $.each(accordion_shortcode, function(id, attr) {
            $("#" + id).accordion(attr);
        });
        if (location.hash) {
            $(location.hash).trigger('click');
        }
    });
    Очень хочется вывести этот аккордеон в нужном месте и чтобы он еще работал....
     
  2. typus

    typus

    Регистр.:
    25 июл 2007
    Сообщения:
    630
    Симпатии:
    152
    И вторая проблема, подобная, не знаю, проще или сложнее - ниже в этом шаблоне идет вывод галереи -
    но вот какая штука, там сделано несколько галерей, и на главной реализован вывод превьюшек №-го числа этих галерей, по клику открывается уже выбранная галерея. Я же хочу вывести на главной, на этом самом месте, одну конкретную галерею, поскольку у меня она у меня - галерея - таки одна.

    Вот место в шаблоне, отвечающее за вывод галерей.
    Код:
    <?php if ( 'on' == $display_gallery_section ) : ?>
    
    <?php
        $args = array(
            'post_type'            => 'gallery',
            'meta_key'            => '_et_gallery_date',
            'orderby'            => 'meta_value_num',
            'order'            => 'Desc',
            'posts_per_page'    => (int) et_get_option( 'harmony_home_gallery_number', 8 ),
        );
        $et_gallery_query = new WP_Query( apply_filters( 'et_home_gallery_query_args', $args ) );
    ?>
    <?php if ( $et_gallery_query->have_posts() ) : ?>
    <div id="media-gallery" class="main_bg">
        <div class="container">
            <h2><?php echo esc_html( et_get_option( 'harmony_media_gallery_section_title', __( 'Media Gallery', 'Harmony' ) ) ); ?></h2>
            <div id="gallery-photos" class="clearfix">
        <?php
            $i = 0;
            while ( $et_gallery_query->have_posts() ) : $et_gallery_query->the_post();
                $thumb = '';
                $width = (int) apply_filters( 'et_gallery_image_width', 170 );
                $height = (int) apply_filters( 'et_gallery_image_height', 170 );
                $classtext = '';
                $titletext = get_the_title();
                $thumbnail = get_thumbnail( $width, $height, $classtext, $titletext, $titletext, false, 'Gallery' );
                $thumb = $thumbnail["thumb"];
                $gallery_date = get_post_meta( get_the_ID(), '_et_gallery_date', true );
                $i++;
            ?>
                <div class="gallery-photo<?php if ( $i % 4 == 0 ) echo ' last'; ?>">
                    <div class="image">
                        <a href="<?php the_permalink(); ?>">
                    <?php
                        if ( '' != $thumb ) {
                            print_thumbnail( $thumb, $thumbnail["use_timthumb"], $titletext, $width, $height, $classtext );
                        } else {
                            $media = get_post_meta( get_the_ID(), '_et_used_images', true );
                            if ( $media ){
                                foreach( (array) $media as $et_media ){
                                    if ( is_numeric( $et_media ) ) {
                                        $et_fullimage_array = wp_get_attachment_image_src( $et_media, 'full' );
                                        if ( $et_fullimage_array ){
                                            $et_fullimage = $et_fullimage_array[0];
                                            echo '<img src="' . esc_url( et_new_thumb_resize( et_multisite_thumbnail($et_fullimage ), $width, $height, '', true ) ) . '" width="' . esc_attr( $width ) . '" height="' . esc_attr( $height ) . '" alt="'. esc_attr( $titletext ) . '">';
                                        }
                                        break;
                                    } else {
                                        continue;
                                    }
                                }
                            }
                        }
                    ?>
                            <span class="gallery_image_overlay"></span>
                        </a>
                    </div> <!-- .image -->
                <?php if ( '' != $gallery_date ) { ?>
                    <div class="image-date"><span><?php echo date( et_get_option( 'harmony_date_format', 'M j, Y' ), $gallery_date ); ?></span></div>
                <?php } ?>
                </div> <!-- .gallery-photo -->
            <?php endwhile; ?>
            </div> <!-- end #gallery-photos -->
            <a href="<?php echo esc_url( get_post_type_archive_link( 'gallery' ) ); ?>" class="view-more"><?php esc_html_e( 'View More', 'Harmony' ); ?></a>
        </div> <!-- end .container -->
    </div> <!-- end #media-gallery -->
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>
    
    <?php endif; // 'on' == $display_gallery_section ?>
    А вот, если я правильно понимаю,файл где показан вывод отдельной галереи - single-gallery.php

    Код:
    <?php get_header(); ?>
    
    <div id="main-area">
        <div class="container">
            <div id="content-area" class="clearfix fullwidth">
                <div id="left-area">
    
                <?php while ( have_posts() ) : the_post(); ?>
    
                    <article id="post-<?php the_ID(); ?>" <?php post_class( 'clearfix entry entry-content' ); ?>>
    
                        <h1 class="title"><?php the_title(); ?></h1>
                        <p class="meta-info">
                        <?php
                            $gallery_date = get_post_meta( get_the_ID(), '_et_gallery_date', true );
                            $et_gallery_date = '' != $gallery_date ? date( et_get_option( 'harmony_date_format', 'M j, Y' ), $gallery_date ) : et_get_option( 'harmony_date_format', 'M j, Y' );
    
                            printf( _x( 'Posted by %1$s in %2$s on %3$s | %4$s', 'Meta information on single gallery page', 'Harmony' ),
                                et_get_the_author_posts_link(),
                                get_the_term_list( get_the_ID(), 'gallery_category', '', ', ' ),
                                esc_html( $et_gallery_date ),
                                et_get_comments_popup_link( __( '0 comments', 'Harmony' ), __( '1 comment', 'Harmony' ), '% ' . __( 'comments', 'Harmony' ) )
                            ); ?>
                        </p>
    
            <?php
                $i = 0;
                $media = get_post_meta( get_the_ID(), '_et_used_images', true );
                $width = (int) apply_filters( 'et_gallery_image_width', 170 );
                $height = (int) apply_filters( 'et_gallery_image_height', 170 );
    
                if ( $media ) : ?>
                            <div id="et-gallery-images" class="clearfix">
            <?php    foreach( (array) $media as $et_media ) :
                        $i++;
                        if ( is_numeric( $et_media ) ) {
                            $et_fullimage_array = wp_get_attachment_image_src( $et_media, 'full' );
                            if ( $et_fullimage_array ){
                                $et_fullimage = $et_fullimage_array[0];
                            ?>
                                <div class="gallery-photo<?php if ( $i % 4 == 0 ) echo ' last'; if ( ( $i - 1 ) % 4 == 0 ) echo ' et_first'; ?>">
                                    <div class="image">
                                        <a rel="et_gallery" href="<?php echo esc_url( $et_fullimage ); ?>" class="fancybox" title="<?php echo esc_attr( get_the_title( $et_media ) ); ?>">
                                            <?php echo '<img src="' . esc_url( et_new_thumb_resize( et_multisite_thumbnail( $et_fullimage ), $width, $height, '', true ) ) . '" width="' . esc_attr( $width ) . '" height="' . esc_attr( $height ) . '" />'; ?>
                                            <span class="gallery_image_overlay"></span>
                                        </a>
                                    </div> <!-- .image -->
                                <?php if ( '' != $gallery_date ) { ?>
                                    <div class="image-date"><span><?php echo esc_attr( get_the_title( $et_media ) ); ?></span></div>
                                <?php } ?>
                                </div> <!-- .gallery-photo -->
                    <?php    }
                        }
                    endforeach; ?>
                            </div> <!-- #et-gallery-images -->
        <?php    endif;
            ?>
    
                    <?php
                        the_content();
                        wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'Harmony' ), 'after' => '</div>' ) );
                    ?>
    
                    </article> <!-- end .post-->
    
                    <?php
                        if ( comments_open() && 'on' == et_get_option( 'harmony_show_postcomments', 'on' ) )
                            comments_template( '', true );
                    ?>
    
                <?php endwhile; ?>
    
                </div> <!-- end #left-area -->
            </div> <!-- end #content-area -->
        </div> <!-- end .container -->
    </div> <!-- end #main-area -->
    
    <?php get_footer(); ?>
    Допустим, я хочу вывести галерею с идентификатором 755, принудительно его прописываю, но ничего не выводится, за исключением почему-то какого-то текста....
    Предполагаю, что и тут я опять накосячил, и очень надеюсь на вашу помощь.
     
  3. NoName013

    NoName013 Постоялец

    Регистр.:
    10 ноя 2013
    Сообщения:
    80
    Симпатии:
    18
    По поводу первой проблемы.
    Как вы пробовали подключать js? В виде линка на отдельный файл или скрипт в теге <script> ?
     
  4. typus

    typus

    Регистр.:
    25 июл 2007
    Сообщения:
    630
    Симпатии:
    152
    И так и так - не идет и все...
    Есть еще одна мысль - попробовать вывести в нужном месте пост или страницу - то есть не запихивать туда код аккордеона со стилями и js - а тупо вывести содержание поста или страницы с id таким-то - ведь в странице или в записи все работает. А в страницу или запись помещается легко через шорткод...
    Вот только я что то никак сегодня не могу это сделать - вывести содержание поста или страницы надо обязательно после read more - а у меня что то выводится до...