Одноколоночный шаблон с древовидными комментариями для wordpress
Совсем недавно столкнулась с wordpress. Стала разбираться что к чему, решила по свежим следам записывать некоторые моменты, чтоб потом не пришлось вспоминать где же я нашла нужный фрагмент. Решила поделиться.
Начну с шаблона, его еще называют темой. Существует несколько способов работы с темами в wordpress:
- использовать тему “как есть”
- переделать существующую по своему усмотрению
- написать оригинальную тему
Самый простой способ – использование созданной кем-то темы. В этом случае нужно скачать понравившуюся тему, распаковать ее в “..\wordpress\wp-content\themes”, потом в админке wordpress выбрать и применить ее. Тема готова – можете заполнять контентом ваш блог!
Относительно второго и третьего способов однозначно сказать какой лучше пожалуй можно только в конкретном случае, когда вы видите перед собой дизайн и реально оцениваете уровень своих знаний и умений. Для меня легче было написать все с нуля (не обошлось без подглядываний в другие темы за советом ;) ). Поэтому я уделю больше внимания именно созданию оригинальной темы своими руками.
Рассмотрим одноколоночный вариант, т.е. блог состоит (зрительно) из одной большой колонки. На деле в такой блог включены шапка (header.php), центральная часть (index.php) и подвал (footer.php). Для полной функциональности может понадобится еще несколько файлов (comments.php, comments-popup.php, single.php, functions.php и т.д.), но о них речь пойдет позже.
Чтобы не забыть какие именно файлы вам нужны и что в них должно быть, вы можете воспользоваться классической темой в wordpress (..\wordpress\wp-content\themes\classic).
Наглядная структура

Структура шаблона
Для нашего случая страница index.php заменяет страницу поста с комментариями (single.php), главную страницу (home.php). На схеме вы можете посмотреть иерархию шаблонов страниц для темы, а более подробное описание можно прочитать на английском. Я не буду останавливаться на этой иерархии, т.к. для простоты в нашей теме будет минимальное количество страниц.
Чтобы не запутаться в открывающихся и закрывающихся тегах, можно написать html-файл, который потом будет разбит на части в соответствии с шаблоном. Файл может быть таким:
[sourcecode language='xhtml'][/sourcecode]Блог
Описание вашего блога
Стилей пока не пишем никаких.
Преобразовываем html-файл в три файла для wordpress. Айдишники выбраны таким образом, чтобы легче можно было сориентироваться в какой файл переносить ту или иную часть.
header.php
В него переносим все от первой строки html-файла до <!– header –>, добавляем немного функционала и в результате должны получить файл с названием header.php и с таким содержимым:
[sourcecode language='php']
[/sourcecode]
<?php bloginfo(‘name’); ?> – выводит название вашего блога
<?php bloginfo(‘url’); ?> – ссылка на главную страницу
<?php bloginfo(‘description’); ?> – описание к вашему блогу
<link rel=”stylesheet” href=”<?php bloginfo(‘stylesheet_url’); ?>” type=”text/css” media=”screen” /> – ссылка на стили
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ /> – указываем кодировку страницы
<meta name=”language” content=”ru” /> – язык страницы
<?php wp_head(); ?> – «точка», указывающая, что этот код является шапкой, т.е. (header.php); помогает при установке плагинов определить куда добавить служебный код плагина (если есть такая необходимость)
<?php if ( is_singular() ) wp_enqueue_script( ‘comment-reply’ ); ?> – эта строка является одной из составляющих, необходимых для нормальной работы древовидных комментариев; она добавляет джаваскрипт для ссылки «Ответить» в комментариях
index.php
Приступаем к центральной части. Копируем все, что лежит внутри тегов с айдишником “index”. Добавляем шапку, подвал, цикл вывода постов. Получаем:
[sourcecode language='php']
[/sourcecode]
<?php get_header(); ?> и <?php get_footer(); ?> – подключение шапки и подвала
<?php bloginfo(‘rss2_url’); ?> – ссылка на rss
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> – условие для вывода постов
<?php the_permalink() ?> – постоянная ссылка на пост
<?php the_title(); ?> – название поста
<?php the_author(); ?> – автор поста
<?php the_time(‘G:i, d.m.Y’); ?> – время в формате 15:03, 20.01.2009
Дополнительно о времени и дате на английском – Форматирование времени и даты.
<?php comments_popup_link(‘пока нет комментариев’, ‘комментарий 1′, ‘комментарии %’); ?> – выводит количество комментариев; для этого необходим файл comments.php, но о нем чуть позже
<?php the_tags(‘Теги: ‘,’, ‘,’ ‘); ?> – если заданы теги/метки, то выводит их как список (по алфавиту); теги разделяются запятыми
<?php the_content(‘Дальше …’); ?> – отображает содержимое поста; если статья разделена на 2 части с помощью (< ! –more–>), то на главной отображается часть поста до разделителя и появляется ссылка “Дальше …”
<?php previous_posts_link(‘Назад’); ?> – ссылка “Назад” ведет к предыдущим постам
<?php next_posts_link(‘Вперед’); ?> – ведет к следующим постам
<?php comments_template(); ?> - подключаем файл комментариев (у нас его пока нет, это на будущее)
footer.php
В этом файле закрываются открытые в шапке теги, добавляются копирайты или любая информация по желанию. Так же в нем есть функция <?php wp_footer(); ?>, аналогичная <?php wp_head(); ?>. Содержимое подвала:
[sourcecode language='php']
[/sourcecode]
style.css
Поговорим о файле со стилями. Для нашей темы он выглядит так:
[sourcecode language='css']
/*
Theme Name: oneColumnBlog
Theme URI: http://www.stanfy.com.ua/
Description: Простой и понятный дизайн для блога в одну колонку
Version: 1.0
Author: Stanfy
Author URI: http://www.stanfy.com.ua/
*/
body {margin: 0px auto; font-family: Arial, Sans-serif; font-size: 0.75em; color: #fff;}
#container {border: 0px solid grey; width: 800px; margin: 0px auto;}
#header {background-color: #edb844; padding: 5px 20px; color: #584621;}
#header h1 a{font-size: 42px; color: #584621;}
#index {background-color: #584621; padding: 20px; }
.rss{float: right; display: inline; padding: 8px 5px 10px 10px;}
h2, h2 a {font-size: 26px; color: #edb844;}
a {font-weight: bold; color: #8e8163;}
p {padding: 8px 0px 0px;}
#footer {background-color: #8e6306; text-align: center; padding: 20px;}
#footer a {font-weight: bold; color: #584621;}
[/sourcecode]
В начале файла в комментариях указывается информация о теме. Название нашей темы OneColumnBlog.
Промежуточный результат – папка темы (OneColumnBlog), в ней должно быть следующее:
- header.php;
- index.php;
- footer.php;
- style.css;
- screenshot.png;
Если в дизайне предусмотрено использование картинок для нарезки темы, то нужно создать папку images и поместить их в нее. Скриншот нашей темы (screenshot.png) должен быть 300х225 пикселей и лежать в корне, а не в папке с картинками (images). Но на этом создание шаблона не заканчивается.
comments.php
Необходим файл комментариев. Он может быть таким:
[sourcecode language='php']войти, чтобы оставить комментарий.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?>
[/sourcecode]
Проверка условия have_comments() говорит сама за себя – если есть комментарии, то мы выполняем некоторые действия для их вывода, иначе пользователи увидят надпись “Нет комментариев” (по желанию этот текст можно изменить).
Строка <h2 id=”comments”><?php comments_number(‘Нет комментариев’, ‘Один комментарий’, ‘Комментариев % ‘ );?></h2> сообщает читателю количество комментариев к статье (как можно было догадаться по предыдущим примерам, текст можно поменять например на такой “Вы будете первым, кто оставит свой коммент!”, “Коммент тут один одинешенек”, “До вас прокомментировали % раз”).
Функция <?php wp_list_comments(); ?>занимается выводом списка комментариев, т.е. в нашем случае отображается аватарка, автор, дата и время, текст комментария и ссылка “Ответить”. Если теги <ul></ul> заменить на <ol></ol>, то комментарии будут нумероваться.
Две функции <?php previous_comments_link(); ?> и <?php next_comments_link(); ?> – это ссылки типа “Старые комментарии” и “Новые комментарии”, которые появляются при постраничной разбивке. В админке есть такой пункт “Разбивать комментарии на страницы по 50 на каждой и по умолчанию отображать старую страницу “. Если этот пункт не выбран, то ссылки не появятся и весь список обсуждения будет на одной странице.
Далее идет проверка – разрешено ли комментировать статью. Если нет, то оставить свой отзыв не получится. Если же вам повезло и комментирование еще возможно, то вы увидите форму комментирования. Она должна быть заключена в <div id=”respond”></div>, это позволяет писать ответ на комментарий.
<?php comment_id_fields(); ?> – отображает два скрытых поля (comment_post_ID и comment_parent), которые необходимы для корректного отображения ответов на комментарии.
Вот теперь у нас есть все составляющие. В папке с названием темы лежат такие файлы:
- header.php;
- index.php;
- footer.php;
- comments.php;
- style.css;
- screenshot.png;
плюс папка images\.
Папку темы копируем в “..\wordpress\wp-content\themes\” на сервер. Если все выполнено правильно, вы увидите что-то похожее на скриншот к нашей теме.
Если вы видите что-то совсем другое и не знаете почему вы это видите, то скачайте архив onecolumnblog с темой и html-файлом (это был наш каркас) и сравните файлы со своими.
И все?
Не думайте, что на этом все заканчивается, работа над темой только начинается – вам еще нужно придумать/прописать/протестить оформление элементов блога (я не заморачивалась над стилями и цветовой гаммой ;) ), продумать стилизацию комментариев (а нужны ли вам древовидные, может и не нужны вовсе – тогда уберите галочку в админке; а если таки нужны, то для них тоже потребуется немного дизайна) и еще вас ожидает целая куча мелочей, с которыми вы столкнетесь при работе с wordpress.






Анна Шабан
в 16:03, 24.03.2009Очень надеюсь, что предложенный мной вариант создания темы в одну колонку пригодится вам :)
Kostya
в 17:09, 26.06.2011Я сейчас собираюсь делать одноколоночный блог и мне ваша статья очень пригодиться, большое спасибо за проделанную работу.
megaultraseo
в 2:57, 02.12.2011fdg g456
megaultraseo
в 2:58, 02.12.2011Для wordpress много шаблонов, но этот хорош.
megaultraseo
в 2:59, 02.12.201154
Стилизация древовидных комментариев в Wordpress < Stanfy Блог
в 15:07, 12.12.2011[...] к статье о создании темы с древовидными комментариями расскажу как можно эти комментарии оформить. Если вы [...]