Одноколоночный шаблон с древовидными комментариями для 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']




    
		<?php bloginfo('name'); ?>
	
	
    

	
	



[/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']

RSS

[/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()));?>
'.$user_identity.''); ?> ID); ?>
[/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.2011

fdg g456

megaultraseo

в 2:58, 02.12.2011

Для wordpress много шаблонов, но этот хорош.

megaultraseo

в 2:59, 02.12.2011

54

[...] к статье о создании темы с древовидными комментариями расскажу как можно эти комментарии оформить. Если вы [...]

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