Существует несколько плагинов, реализующих спойлер в сайтах на WordPress. Плагины достаточно просты в использовании и замечательно работают в тексте страниц сайта. Однако явным минусом данной реализации выпадающего списка, является то, что он, скорее всего, не будет работать в сайдбаре.
.Данный нюанс обусловлен тем, что вывод спойлера осуществляется с помощью шорткодов, которые большинством шаблонов не поддерживаются. Их необходимо подключать отдельно в файле functions.php. При этом, универсального решения в принципе не существует. Это значит, что рабочий код для одной темы, совсем не обязательно будет являться рабочим для другой.
Для начала необходимо вставить в файл functions.php вашей темы следующий код:
function hyper_spoiler($atts, $content) { if (!isset($atts[name])) {$sp_name = 'Спойлер';} else {$sp_name = $atts[name];} return '<div> <div>'.$sp_name.'</div> <div class="spoiler-body">'.$content.'</div> </div>';} add_shortcode('spoiler', 'hyper_spoiler'); |
Его нужно внести в самый конец файла, перед закрывающим тегом ?>. После этого обязательно сохранить произведенные изменения.
Теперь нужно установить новый код в файл header.php:
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/script.js"></script> |
Его следует внести между тегами <head></head>.
После этого нужно создать файл spoiler.js(файл будет предоставлен в архиве ниже). Для этого откройте программу Notepad++ и введите туда следующий код:
jQuery(document).ready(function(){ jQuery('.spoiler-body').hide() jQuery('.spoiler-head').click(function(){ jQuery(this).toggleClass("folded").toggleClass("unfolded").next().toggle() }) }) |
Сохраните все как файл spoiler.js.
Теперь необходимо загрузить spoiler.js на ваш сайт. Сделать это можно с помощью FTP. Можете положить файл в папку uploads вашего сайта, тогда практически не придется менять следующий код, его нужно прописать следом за предыдущим между тегами <head></head>:
<script type="text/javascript" src="http://ВАШ-САЙТ.РУ/wp-content/uploads/spoiler.js"></script> |
Далее необходимо подключить стили к нашему спойлеру. В самый конец файла style.css вносим код:
.spoiler-wrap { background:none repeat scroll 0 0 #E2DFE0; width:100%; border-color:#FF0000; border-style:solid; border-width:0px 0px 0px 1px; margin:0px 10px 10px -6px; } .spoiler-head { font-size:15px; color: #FF0000; font-family: Arial, Helvetica, Sans-Serif; font-weight: bold; line-height:15px; margin-left:6px; cursor:pointer; width:97%; padding:1px 14px 3px; cursor:pointer; text-decoration: underline; } .folded { background:url(images/icon_plus_1.gif) no-repeat scroll left center transparent; display:block; padding-left:19px; } .unfolded { background:url(images/icon_minus_1.png) no-repeat scroll left center transparent; display:block; padding-left:19px; } .spoiler-body { background:none repeat scroll 0 0 #E2DFE0; border-top:1px solid #29755f; line-height:20px; padding:1px 6px 2px; } |
Не забывайте каждый раз сохранять изменения!
Теперь осталось лишь добавить значки + и -. Их вы можете получить, скачав ДАННЫЙ АРХИВ, кстати в нем уже присутствует файл spoiler.js. Распакуйте архив и поместите изображения в папку images вашего шаблона. Если есть желание, картинки вы можете заменить на свои.
На этом работа с кодом завершена. Переходим туда, где требуется спойлер. Для того, чтобы подключить его в тексте просто добавьте шорткоды:
[spoiler][/spoiler] |
, в том случае, если необходимо добавить спойлеру имя, шорткод будет выглядеть следующим образом:
[spoiler name="Имя спойлера"][/spoiler] |
Если спойлер в сайдбаре все-таки не заработал, добавьте в functions.php еще один короткий код сразу под вышеприведенным первым кодом:
add_filter('widget_text', 'do_shortcode'); |
Работу спойлера вы можете наблюдать в сайдбаре и тексте данной статьи! [warning]Если у вас остались вопросы - задавайте их в комментариях. Также интересен ваш опыт применения выпадающего списка на WordPress сайте.[/warning]
у меня шаблон после всего этого ломается почему то?
<script TYPE="text/javascript" src="/script.js»> Подскажите пожалуйста, что должна подключать данная строка? У меня нет в шаблоне файла script.js
Застопорился. Выдает имя спойлера и содержимое. А вот функционала спойлра нет нет.