eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

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

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

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

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

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

0
Гость
9 лет назад
  • 0
    Kama 9790

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

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

    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 9 лет назад

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

    Константин 9 лет назад

    Вот страница записи 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 9 лет назад

    Насчет ссылки и параметра 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. Поэтому просто обновите класс...

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

    Константин 9 лет назад

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

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