WordPress как на ладони
wordpress jino

Содержание поста в анонсе

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

По ссылке ниже можно видеть пример такой реализации.
http://kakpravilnosdelat.ru/rasteniya/

Использую для вывода содержания плагин TOC. Было бы хорошо, если кто подскажет, как сделать такой вариант именно с плагином. Но, если кто знает, как прикрутить содержание в анонс с помощью кода, который предоставлен на этом замечательном сайте, то буду также рад)

Заранее спасибо за помощь.
С уважением, Константин!

0
Гость 1.6 года назад
  • 0
    Kama4486

    Сделать это с помощью моего кода не сложно.

    Порядок действий.

    1. подключите оглавление для каждого поста, как написано в примерах

      ## Вывод содержания вверху, автоматом для всех постов
      add_filter('the_content', 'contents_on_post_top' );
      function contents_on_post_top( $content ){
      if( ! is_singular() ) return $content;
      
      $args = array(
      	'selectors' => array('h2','h3'),
      );
      $contents = Kama_Contents::init( $args )->make_contents( $content );
      
      return $contents . $content;
      }
    2. Выведите содержание в цикле для каждого анонса таким кодом:

      // этот код нужно использовать в цикле loop, после анонса
      $args = array(
      	'page_url'  => get_permalink( $post ), // текущая ссылка на статью
      	'selectors' => array('h2','h3'), // должны совпадать с селекторами для 
      );
      
      echo Kama_Contents::init( $args )->make_contents( $post->post_content ); 

    Возможно нужно будет настроить еще какие-то опции, смотрите описание в статье...

    Kama 1.6 года назад

    Покажите страницу, так гадать я не хочу...

    Константин 1.6 года назад

    Вот страница записи http://dachnuy-vopros.ru/landshaftnyj-dizajn/sadovye-dorozhki/svoimi-rukami-iz-betona#kcmenu

    Вот страница рубрики http://dachnuy-vopros.ru/landshaftnyj-dizajn/sadovye-dorozhki/

    Если что, то вот, как я разместил код внутри цикла:

    <ul id="list_of_article">
    				<?php if(have_posts()):?>
    				<?php while(have_posts()):the_post(); ?>
    					<li>
    					 <!--noindex--><?php if ( has_post_thumbnail()) { ?><a rel="nofollow" href="<?php the_permalink(); ?>" ><?php the_post_thumbnail('article_main_photo', array('class' => 'alignleft')); ?></a><?php } ?><!--/noindex-->
    <a href="<?php the_permalink(); ?>" class="article_name"><span><?php the_title(); ?></span></a>
    	<!--noindex--><span class="the_excerpt">
    							<?php the_content(''); ?><!--/noindex-->
    
    						</span>   <?php    // этот код нужно использовать в цикле loop, после анонса
    $args = array(
    	'page_url'  => get_permalink( $post ), // текущая ссылка на статью
    	'selectors' => array('h2','h3','h4','h5','h6'), // должны совпадать с селекторами для 
    );
    
    echo Kama_Contents::init( $args )->make_contents( $post->post_content );?>         
    </li>                     
    				<?php endwhile;?>  
    
    				<?php endif;?>
    			</ul>
    Kama 1.6 года назад

    Насчет ссылки и параметра page_url я неправильный код дал... Сейчас переделал немного основной класс используйте его версия 2.9.5. Текущий код должен работать...

    Насчет того, что при нажатии на одно оглавление сворачиваются/разворачиваются сразу все - это в скрипте сворачивания была недоделка, в описании класса подправил оба варианта сворачивания там версия 0.2 используйте её...

    Насчет нерабочего перехода. На странице записи не работает переход потому что ошибка этого скрипта:

    $(document).ready(function(){
    		/* Вешаем событие прокрутки на все якоря (#) на странице */
    		$('a[href^="#"]').bind('click.smoothscroll',function (e) {
    			e.preventDefault();
    
    			var target = this.hash,
    			$target = $(target);
    
    			$('html, body').stop().animate({
    				'scrollTop': $target.offset().top
    			}, 400, 'swing', function () {
    				window.location.hash = target;
    			});
    		});
    	});

    Там нужно было включить вывод анкора как id атрибут, а не как name - для этого нужно поставить параметр 'anchor_type=id'. С версии класса 2.9.5 я этот параметр по умолчанию поставил как id. Поэтому просто обновите класс...

    Замените все исходные коды, код вызова менять не надо. Отпишитесь что получилось...

    Константин 1.6 года назад

    Все супер, заработало) Спасибо вам огромнейшее. И напоследок еще один вопрос. Естественно, что на странице записей более уместно выводить раскрытое содержание, чтобы посетитель его видел и мог сразу воспользоваться, но вот на страницах анонсов это ни к чему. Как сделать содержание свернутым на страницах анонсов? Возможен ли такой вариант?

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Регистрация. Вход.