WordPress глазами друпаллера, часть 1

От автора: Я первый раз работаю с WordPress. Моя основная занятость связана с Друпалом — это разработка тем, модулей, создание сайтов и прочее. Поэтому на WordPress я буду смотреть глазами «друпалера», приводя его различия с Друпалом, а также описывая подводные камни, которые наверняка встретятся новичку ВордПресса.

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

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

Простой альтернативой в данном случае было бы использовать WordPress. В наше время огромное количество блогов работают именно на WordPress. Главная тому причина, предельно простая установка (если верить сайту поддержки — установка и настройка занимает 5 минут).

Конечно, с созданием темы и настройкой «под себя» времени будет потрачено побольше, но выигрыш по сравнению с Друпалом будет наверняка.

Итак, наша цель — установить и настроить блог, создать тему, русифицировать интерфейс.

Полезные сайты

Начнем с информации об этой системе и сайтах поддержки.

Главный сайт — wordpress.org. Тут мы найдем документацию, форум поддержки, последнюю версию самой системы — как раз все что нам нужно.

Русский сайт — ru.wordpress.org, но много важной информации все равно можно найти только на английском.

Гугло-яндекс выдает громадное количество других сайтов, но должен сказать что эту всю информацию разбросало на десятки тысяч сайтов во всем Интернете, так что найди нужную информацию сложно. Также, на что обращаешь внимание, когда обходишь сайты поддержки - это уровень вопросов и ответов. Большинство ФАКов и топиков форума уделено десятку вопросов начального уровня и этот десяток продублирован тысячу раз.

На самом деле много документации и ФАКов не нужно, код достаточно простой, перечень функций имеется на разных языках, остальное в мануалах РНР. В любом случае нужно все делать внимательно подвох может быть как в инструкциях так и в коде, если провести параллель с Друпалом, где модули могут глючить из-за не совсем профессионального кода, то здесь уровень разработчиков еще ниже.

Установка движка на сервер

Здесь все достаточно просто и есть все необходимые инструкции (по ссылкам выше), проблем никаких не должно быть. Кроме того дистрибутив имеет файл readme.html, в котором все расписано по пунктам.

Создать в MySQL'е таблицу, залить файлы на сервер, ввести пароли в wp-config-sample.php, далее переименовать файл в wp-config.php и зайти на главную :)

Мы получили сайт на ВордПрессе. На главной странице красуется первое сообщение «Привет, мир!» и куча ссылок. Как ни странно ссылки на валидатор и сообщество XTML, но, как показывает практика, народ этими ссылками не пользуется.

В отличие от Друпала, в ВордПрессе front-end разделен от back-end'а, другими словами, есть админка, которая выглядит отлично от самого сайта.

Админка присутствует по адресу http://my-site.com/wp-admin/. Кроме администратора, админка будет видна для всех пользователей, которые могут создавать записи.

По самой админке вопросов нету, все понятно и выглядит проще друпаловской. Стандартная страница настроек расположена по адресу http://my-site.com/wp-admin/options-general.php и есть соответствующая ссылка в админке, но не все знают что есть расширенная страница настроек http://my-site.com/wp-admin/options.php.

Шаблон сайта

В комплекте идут два шаблона: WordPress Default 1.6 и WordPress Classic 1.5. Ни первый, ни второй не смог раскрыть нашей индивидуальности, поэтому делаем свой шаблон, также можно выбрать один из уже готовых шаблонов на офф. сайте.

Будьте внимательны, если выбираете готовый шаблон для основы вашей темы, т.к. большая часть шаблонов не использует локализацию (что говорить о том, что начинающие программисты не используют локализацию, если до недавнего времени дефолтная тема в ВордПрессе тоже была создана без учета локализации).

Тему помещаем в папку /wp-content/themes и активируем в админке, готово.

Переменные блога

Значение системного пути, имени сайта, стилей, кодировку, описания и другой информации можно узнать через функции:

get_bloginfo($name); //возвращает значение переменной
bloginfo($name); //выводит значение переменной
// $name - это имя переменной

Например:

// Выводим заголовок блога в теге

и делаем ссылкой на главную:

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

Анатомия шаблона Wordpress

Самый основной файл темы - index.php (близкий аналог page.tpl.php), это главный файл, который запускается и подтягивает остальные файлы если нужно. Что бы не махать руками по воздуху, рассмотрим простую тему.

style.css - файл стилей имеет два значения. Первое - это же стили сайта, а второе предназначения это объявление темы, это своего рода замена файла *.info друпала. Первый комментарий в файле стилей парсится движком и получает информацию о названии темы, авторе, версии, описание.

screenshot.png - та же функция что и в Друпале, скриншот для админки.

header.php - это заголовок сайта, сюда же вставляем верхнее меню и шапку сайта.

footer.php - подвал сайта и закрывающие теги и . Главное не путать файлы header.php и footer.php это не названия соответствующих регионов, а название зон в HTML верстке, но и в тоже время можно в футере сделать зону для копирайтов, например, или адреса организации. И сейчас как раз время вспомнить еще одно отличие от Друпала. В админке можно править файл шаблона!

Сложно предположить зачем это сделано, но так и есть - заходим в админку и правим через нее любой PHP файл темы. Поэтому копирайты в футере, можно править из админки редактированием РНР-файла.

sidebar.php - а это уже как раз регион, в теме классик и дефолте, это левый регион. В файле идет код PHP+HTML, в отличии от Друпала это не шаблон блока, а именно код блока. В этом коде мы проверяем на какой странице пользователь и какие блоки выводить (см. ниже больше).

index.php - основной файл, тут подключаем хедер функцией get_header() и футер функцией get_footer() и наш блок функцией get_sidebar(), именно в таком вижде этот файл можно сравнить с page.tpl.php у Друпала.

comments.php - файл для работы с комментариями.

Дополнительные шаблоны

Кроме перечисленных файлов, можно темизировать отдельные страницы, создав дополнительно нужные файлы (это файлы аналоги index.php, только для конкретного случая):.

404.php - для «страницы 404».

archive.php - для выводя архивов.

links.php - для страницы вывода ссылок.

page.php - для вывода страниц.

single.php - для вывода одиночной записи.

Полный перечень файлов можно найти в документации, если какого-то из этих файлов нету, то обрабатывается нужный файл по иерархии (см. карту выше) последним в цепочке index.php.

В этом месте остановимся на недостатке ВордПресса, в сравнении с Друпалом. В Друпале шаблон играет роль шаблона на 98%, самих данных там практически нету. В ВордПрессе шаблон имеет много лишнего и, когда мы темизируем страницы, например, 404.php, single.php и archive.php, то мы дублируем файл index.php 3 раза и вносим небольшие коррективы в оформлении.

Теперь у нас есть с одной стороны простота - мы видим весь код в той последовательно как он работает, а с другой стороны, небольшое изменение структуры шаблона и мы должны во всех 4х файлах найти измененные места и проделать все изменения 4 раза и теперь не смотря на простоту у нас больше вероятность запутаться.

Тема холивара, поэтому только высказываю только свое мнение, шаблоны необходимо более продумать. Пока я делал свой первый сайт у меня так и чесались руки сделать отдельные части через функции или через инклюды файлов.

functions.php - файл функций, это аналог template.php. Здесь мы объявляем функции, темизируем элементы, регистрируем регионы.

Константы TEMPLATEPATH и STYLESHEETPATH - пути к шаблону и стилям.

Условные теги

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

  • is_home() - главная страница.
  • is_front_page() - пост или запись главной страницы.
  • is_admin() - панель администрации.
  • is_single() - одиночная запись.
  • is_single('5') - одиночная запись с ИД = 5.
  • is_single('Title') - одиночная запись с заголовком 'Title'.
  • is_single(array('beef-stew', 'pea-soup', 'chili')) или is_single(array(17, 19, 1, 11)) или is_single(array(17,'beef-stew','Irish Stew')) - если страница попадает в перечисленные ИД или заголовки.
  • is_sticky() - если страница прикреплена.
  • is_sticky('17') - закрепленная страница с ИД = 17.
  • is_page() - страница.
  • is_page('42') - страница с ИД = 42.
  • is_page(array(42, 'about-me')) страница с ИД = 42 или страница с заголовком 'about-me'.
  • comments_open() - форма комментариев разрешена.
  • is_comments_popup() - окно для ввода комментариев.
  • is_category() - категории.
  • is_category(array(9,'blue-cheese','Stinky Cheeses')) - конкретные теги по ИД или названию.
  • is_tag() - теги.
  • is_tag(array('sharp','mild','extreme')) - конкретные значения тегов.
  • is_author() - если на странице автор.
  • is_author('4') - автор с ИД = 4.

Больше тегов можно увидеть в документации, например — http://codex.wordpress.org/Conditional_Tags.

Виджеты

Прямым аналогом виджетов в Друпале являются блоки.

Изначально в файле sidebar.php мы выводим перечень статических блоков для левой стороны, определяя необходимы блоки для необходимых страниц, но этот подход не совсем верен.

Часто необходима возможность через админку добавлять или регулировать блоки, также установленные плагины могут выводить свой контент в блоки. В водпрессе эти блочки называются виджетами и что бы их выводить в теме необходимо:

  1. В файле функций functions.php, зарегистрировать регион

    <?php
    if (function_exists('register_sidebar'))
    register_sidebar();
    ?>

    при такой регистрации, оформление виджета система будет делать по умолчанию в виде:

  2. Заголовок виджета

    // Содержимое виджета

  3. Если вам необходимо другое оформление, то регистрируем так:

    <?php
    if ( function_exists('register_sidebar') )
    register_sidebar(array(
    'before_widget' => '

    ',
    'after_widget' => '

    ',
    'before_title' => '

    ',
    'after_title' => '

    ',
    ));
    ?>

    или как вам подсказывает верстка сайта.

  4. В файле сайдбара sidebar.php вставляем код

    <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
    // тут код блоков по-умолчанию
    <?php endif; ?>

    когда через админку будут добавлены виджеты в наш сайдбар, они будут выводится вместо наших «блоков по-умолчанию».

Продолжение следует...

А в следующей части мы познакомимся с локализацией ВордПресса, с плагинами, шорткодами, интеграцией с Друпалом и подведем итоги использования системы, как быстрой замены Друпалу для создания блогов.

UPD: Продолжение.