Связаться со мной можно через Вконтакте или почту evexa@mail.ru

Автоматические содержание статей из заголовков h2 — удобная навигация по странице для записей WordPress

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

Реализовано не на одном статейнике, решение очень удобное и с ним в разы проще размещать статьи.

Подключаем все необходимое

Открываем single.php и вставляем под h1 див table-of-contents.

HTML
1
2
3
4
<div id="table-of-contents">
<div class="table-of-contents-head">Содержание статьи</div>	
<ul style="display: none;"></ul>
</div>

Туда же размещаем скрипт, можно конечно и в шапку, но если нужен будет отдельный шаблон, который я описываю ниже, лучше в single.php.

JS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
jQuery(document).ready(function($) {
	var menu = $('.modal-body h2');
	if ( menu.length ) {
		$('#table-of-contents ul').html(menu.clone());
		$('#table-of-contents ul h2').replaceWith(function(index, oldHTML){
			return $('<span class="sl_lt">').html(oldHTML);
		});
		$('#table-of-contents span').wrap('<li></li>');
		$('#table-of-contents span').wrap('<a id="b" rel="nofollow noindex" class="anchor"></a>');
		var i=0;
		$('.modal-body h2').each(function(){
			i++;
			$(this).attr('id', 'b_'+i);
		});
		var a=0;
		$('#table-of-contents ul li a').each(function(){
			a++;
			$(this).attr('href', '#b_'+a);
		});
		$('#table-of-contents ul').show();
		$('#table-of-contents a').hover(
			function(){$(this).prev('span').show();},
			function(){$(this).prev('span').hide();}
		);
		$('a[href^="#"]').click(function(){
			var _href = $(this).attr('href');
			$('html, body').animate({scrollTop: $(_href).offset().top+'px'});
			return false;
		});
	}
});

Ну и стили:

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#table-of-contents {
    padding: 0 10px;
    border: 1px solid #ccc;
}
 
.table-of-contents-head {
    font-size: 18px;
    margin: 7px 0;
}
 
#table-of-contents ul{
    margin: 0 0 0 30px;
}
#table-of-contents li a {
    padding: 5px 0;
    display: block;
    color: #765B66;
    text-decoration: underline;
 
}
#table-of-contents li {
    font-size: 16px; 
}

После все что добавили, чтобы заработало, необходимо контент обернуть в див с классом modal-body, и все должно работать.

Добавляем отдельный шаблон записей

Если вы добавляя статьи вручную делали содержание страниц, можно сделать отдельный шаблон.

Создаем файл например single-soderzhanie.php на основе нашего single.php и прописываем в нем следущее:

PHP
1
2
3
4
5
6
<?php 
/*
Template Name: Шаблон записи с содержанием
Template Post Type: post
*/
?>

Заливаем обратно и видим в админке, что мы можем изменить шаблон нашей записи, на шаблон с содержанием

Добавляем отдельный шаблон записей

И теперь у нас есть отдельный шаблон записи с содержанием, размещаем статьи, выбираем свойства записи и радуемся жизни.

Опубликовано: 04.05.2018
Категория: JavaScript,Wordpress
Комментарии отключены. Есть вопросы? Пишите в Вконтакте или почту evexa@mail.ru.
Всего комментариев: 0

Оставить комментарий

Наверх