Drupal: практические примеры

Как использовать возможности Drupal на практике? Рассмотрим несколько приме­ров, для сборки которых требуются только существующие модули Drupal и не требуется знания языков программирования. Многие приведенные в примере задачи (и соответст­венно решения) можно рассматривать как типовые, так что они могут пригодиться для сайтов самого разного типа.

Полнофункциональные, настроенные и готовые к работе версии сайтов, речь о ко­торых идет в этом разделе, можно найти на компакт-диске, прилагаемом к журналу PC Magazine/RE 12/2008 (вместе с системными модулями пакета Denwer), а также в Интер­нете по адресам http://2start.ru и http://shvabrashvabr.ru. Примеры идут в комплекте с паке­том Denwer, поэтому вам не нужно заботиться об установке и настройке Web-сервера, СУБД и PHP, достаточно запустить инсталлятор и следовать инструкциям. После инстал­ляции и запуска Denwer (мы бы рекомендовали экспериментировать на виртуальной ма­шине) станут доступны два сайта, сборка которых описана в этой статье, — http://shvabrashvabr.lc и http://intranet.lc. Имя пользователя/пароль администратора каждого из сайтов — admin/1111.

Ссылки на другие части этой статьи:

· Часть 1. Введение

· Часть 2. Архитектура Друпала

· Часть 3. Модули Drupal

· Часть 4. Интранет-сайт на Друпале

· Часть 5. Социальная сеть на Друпале

· Часть 6. Оптимизация Друпал

Drupal: практические примеры - student2.ru Одним из модулей-столпов на которых зиждется Drupal, наравне с Views, является модуль CCK (Content Construction Kit). Он позволяет создавать произвольные типы документов, а так же добавлять к ним новые поля. Скачать модуль можно тут.

В пакет модулей CCK входят следующие модули:

Content— Основной модуль, без него ничего работать не будет. Позволяет созда­вать новые типы документов (Content types).
Content Copy — позволяет импортировать/экспортировать определение полей.
Content Permissions — позволяет устанавливать права доступа на уровне полей.
Fieldgroup — с помощью него можно группировать поля.
Node Reference — добавляет к документу ссылку на другой документ.
Number— добавляет численное поле.
Option Widgets — добавляет дополнительные типы выбора для текстовых и чи­словых полей.
Text— добавляет текстовые поля.
User Reference— позволяет добавлять поле с ссылкой на пользователя.

Зайдем в меню «Administer › Site building › Modules» и включим их все.

Drupal: практические примеры - student2.ru

В меню «Administer › Content management › Content types» добавим новый тип до­кумента.

Drupal: практические примеры - student2.ru

Необходимо заполнить 2 поля: Name (Имя для пользователя) и Type(имя для машины).

Drupal: практические примеры - student2.ru

Сохраняем новый тип данных, сейчас он практически ничем не отличается от типа Story, давайте его разнообразим. Жмем «Edit».

Drupal: практические примеры - student2.ru

Следом нажимаем «Manage fields».

Drupal: практические примеры - student2.ru

После включения модуля CCK тут добавилась вкладка Add

Drupal: практические примеры - student2.ru

где можно добавить новое поле, и новую группу полей. Для добавления нового поля нужно ввести:

Label— заголовок поля который увидят пользователи.
Name — машинное имя.
Type of data to store — тип поля (у нас их 6, но на drupal org можно скачать множество дополнительных модулей).
Form element to edit the data — Элемент формы для редактирования поля. Если по-русски, то тут мы выбираем как будем вводить данные в это поле если на­пример у поля типа «Text» выбрать «Text field», то будет одно строчное поле для ввода текста, а если выбрать «Text area», то получим много строчное поле. У раз­ных типов полей разные варианты элементов формы.

Добавим поле с заголовком «Text», именем «text», типом «Text», элементом формы «text field», и нажмем «Save».

Drupal: практические примеры - student2.ru

Здесь можно настроить только что добавленное поле.
Size of textfield— размер поля.
Default value — значение по умолчанию.
Required — если галочка установлена, то при добавлении материала данное поле будет обязательно для заполения.
Number of values— количество значений которое может ввести пользователь.

Я оставил все значения без изменений, и сохранил. Только что созданное поле отобразилось в списке, его можно перетащить мышкой, тем самым выбрав его ме­сторасположение.

Drupal: практические примеры - student2.ru

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

Drupal: практические примеры - student2.ru

Здесь выводится список полей. Мы можем изменить:
Label — заголовок. Above — отображается выше содержимого поля. Inline — ото­бражается на одной линии с содержимым. <Hidden> - не показывать заголовок.
Teaser— как отобразать поле в превью. Default — по умолчанию. Plain text — обычный текст. Trimmed — обрезанный. <Hidden> - не показывать поле в превью.
Exclude — исключить поле из превью.
Full node— значения аналогичны Teaser, но распространяются не на превью, а на полный документ.
Exclude — исключить поле из документа.

Таким же образом в тип документа можно добавить и другие поля. Для CCK дос­тупно более 300 дополнительных модулей, и если вам нужно добавить какое либо поле не входящее в стандартную поставку, ищите модуль на drupal org.

Одним из самых полезных модулей Drupal для создания сайта, явля­ется модуль Views

Суть модуля проста, - он выводит данные в нужном нам виде, вывод можно на­страивать по многим параметрам, и всячески преображать. Для начала модуль нужно скачать, и установить . Активировать нужно 2 модуля (они идут в 1 архиве Views) Views и Views UI, первый выводит списки из базы так как вы задали, второй — это визуальная оболочка, с помощью которой создаются Views. После активации в меню «Administer → Site building» (Управление → Конструкция сайта) появится вкладка Views. Зайдем.

Drupal: практические примеры - student2.ru

Здесь мы видим виды которые уже созданы по умолчанию, их может быть и больше в зависимости от установленных модулей. Эти виды неактивны, их можно включить с помощью ссылки «Enable», и использовать в своих целях. Но, !!МЫ!! попробуем сделать свой (пусть он и будет маленький, не­казистый и неработающий). Кликаем по кнопке «Add».
Появляется первое меню создания вида.

Drupal: практические примеры - student2.ru

Тут 2 обязательных поля: заголовок (название вида., вводить английские буквы в нижнем регистре), и тип вида (View type — это то откуда мы будем брать инфор­мацию для вывода). Напишем в заголовке first (ведь это наш первенец, не так ли?), а тип вида поставим «Материал» (Node), будем выводить материалы. На­жимаем «Next», и попадаем на страницу где мы будем задавать параметры вы­вода, первоначально она выглядит ужасно, но это только в первый раз.

Drupal: практические примеры - student2.ru

тут можно создать несколько display (видов вывода, наиболее используемые это блок, и страница). Один display уже есть — default, если вы хотите создать не­сколько схожих дисплеев, то можно задать основные настройки в default, созда­ваемые display наследуют эти настройки. Если вы хотите что бы настройки у дис­плея отличались от настроек Default, их нужно переназначить, для этого служит кнопка Override.

Drupal: практические примеры - student2.ru

Давайте добавим блок.

Drupal: практические примеры - student2.ru

Рассмотрим блок Fields, он является одним из основных, так как в нем мы выби­раем какие поля (Fields) будет отображать в нашем виде.

Drupal: практические примеры - student2.ru

На блоке вы видите 2 кнопки, первая служит для добавления поля, вторая для вы­ставления полей в порядке нужном вам.
При нажатии на кнопку добавления поля, внизу отобразятся поля которые можно добавить, и выпадающий список сортировки. Если мы хотим добавить в вывод за­головки материалом, нам нужно выбрать Node: title, и нажать Add.

Drupal: практические примеры - student2.ru

6 шагов к тому, чтобы заставить Drupal работать быстрее

1. В списке модулей выключите все модули, которые не используются, также стоит по­жертвовать модулями статистики;

2. Кэширование в Drupal снижает нагрузку на базу и значительно увеличивает ско­рость. Хотя кэш существенен только для анонимных посетителей, на сайтах их как правило большинство, кэш в любом случае рекомендуется включить;

3. Выключите использование mod_rewrite в .htaccess. URL'ы станут не такими краси­выми и короткими, но ведь многие CMS не используют коротких URL;

4. Модуль locale сильно сказывается на ухудшение скорости работы сайта, но локализа­ция обычно нужна, значит либо адаптируем к работе с gettext и смотрим, стало ли быстрей (в большинстве случаев должно), либо на крайний случай вы­ключаем локализацию интерфейса (крайняя мера);

5. Темы c XML-шаблонами обычно медленнее тем использующих только PHP, посмот­рите, какая тема используется по умолчанию: если это что-то вроде xtemplate или подобное, с шаблоном на XML - смените на тему использующую только php (например, chameleon);

6. Важной частью увеличения скорости работы Drupal является информация о количе­стве обращений к базе данных. Ставим модуль devel, включаем отображе­ние запросов и смотрим время их исполнения. Какие-то дополнительные модули могут быть криво написаны, и давать значительные задержки (например, неопти­мальные SQL-запросы), в стандартных модулях с этим обычно все в порядке. Про­буйте отключать различные модули (даже стандартные) и смотрите на время гене­рации страниц. К этому же совету: уменьшаем количество нодов выводимых по умолчанию на главную страницу (это если для главной страницы используется мо­дуль node). Проверяем наличие индексов у таблиц в базе. Также делаем тотальный optimize всех таблиц (и можно делать его регулярно).

Вопрсы настройки

7. работать следует не с папкой С:\WebServes, а с локальным диском Z или как Вы выбрали L (Диск Z - это виртуальный хостинг Ден­вера):

8. Копируем библиотеку php_mbstring.dll в папку Z:\usr\local\php5\ext (скачать соответствующий PHP и из него ско­пировать эту библиотеку и только так, иначе библиотека может не соответствовать установленному PHP);

9. Меняем кодировку базы в файле Z/usr/local/mysql5/cnf вме­сто ср1251 устанавливаем utf8 в строках 28, 40, 41, а в phpMyAdmin устанавливаем ru-utf8 и utf8_general.ci;

10. Z:/usr/local/php5/php.ini

11. В строке 255 увеличить время работы скрипта с 30 до 300 max_execution_time = 300 (чтобы не было зависаний, при ра­боте тяжелых модулей);

12. Проверяем строки, которые необходимо раскомментиро­вать: extension=php_mbstring.dll - работа с уникодом - раскоммен­тируем стр 608
extension=msql.dll раскомментируем строку 578
extension=php_gd2.dll - графическая библиотека стр 601 уже рас­комментирована в Денвере3;

13. Добавляем в файл .HTACCESS в корневой папке (на Денвере это папка www) в са­мом верху четыре строки:
php_value error_reporting 7
php_value memory_limit 32M //но лучше 96М
RewriteCond %{HTTP_REFERER} ^http://www\.google\.com/$
RewriteRule .* - [F] где первая строка - отвечает за отображение и сглаживание от­дельных ошибок, не влияющих на работу сайта; вторая-за необходимый мин. объем памяти для нормальной работы всех модулей Друпала, во избежание "белого экрана смерти" (без этой строчки можно обойтись, если в файле php.ini есть строка memory_limit=32 или в settings.php прописана строка ini_set(‘memory_limit’,’32M’); третья и четвертая строки-необходимы для нормальной работы поисковых серве­ров;

14. Создаем папку translations в папке www/profiles/default, а именно www/profiles/default/translations, в которую размещаем пе­ревод. Эта папка желательна, но не обязательна, можно хранить перевод и на жестком диске компьютера;

вопросы, на которые должен отвечать каждый Drupal-разработ­чик:

Модули

· Из чего состоит модуль?[1]

· Что такое .info файлы?

· Как добавлять стили и JS-код в модуль?

· Что такое хуки?

· Как добавить свою страницу в систему меню Дру­пала?

· Как переопределить вывод на существующей стра­нице сайта?

· Что такое Forms API?

· Как изменить произвольную форму созданную дру­гим модулем?

· Как добавить к этой форме свою проверку и свой обработчик?

· Как добавить на сайт свой блок из модуля?

· Как сделать чтобы у этого блока были собственные настройки?

· Как выполнять дополнительные действия при со­хранении ноды?

· Как отображать свои данные на страницах нод?

Темизация

· Как работает регистр темизации?

· Как переопределить стандартный шаблон в теме?

· Как темизировать вывод в модулях?

· Как вводить новые шаблоны?

· Как работают базовые темы?

· Код

· Какие правила кодирования используются при разработке Друпал-проектов?

· Как работать с SVN и CVS?

· Как создавать и применять патчи?

· Какие проблемы существуют при выкладывании проектов на живой сервер?

· Какой код можно считать безопасным и какие есть методы обеспечения безопасно­сти в Друпале?

· Как реализовывать unit-тесты в Друпале?

Денвер и Drupal

Шаг 1. Денвер

Для того, чтобы запустить Drupal на домашнем компьютере, понадобиться отдельная программа, которая позволит это делать. Одна из таких программ — Денвер. Денвер — это программый комплекс, позволяющий превратить ваш локальный компьютер в сервер. Название расшифровывается как «джентльменский набор веб-разработчика». Скачайте с сайта Денвера его дистрибутив и запустите. Откроется окно браузера, а после его закрытия появиться следующее окно:

Шаг 2. Папка

После установки Денвера, нужно сделать папку в которой будут храниться файлы сайта. Для этого зайдите в папку, в которой установлен Денвер, если вы её не меняли, то это C:\WebServers. Она выглядит следующим образом:

Далее перейдите в папку home и сделайте в ней папку для файлов сайта. В этом примере была сделана папка drupal.site:

Войдите в папку drupal.site и сделайте в ней папку с названием www:

И уже в папку www распакуйте файлы Drupal:

Если всё это делаете в первый раз, то чтобы не ошибиться что в какой папке делать, обращайте внимание на адресную строку на картинках — в ней можно увидеть текущее местонахождение.

Шаг 3. База данных

По умолчанию, Drupal работает с базой данных MySQL. Эта база данных входит в комплект Денвера и для работы с ней нужно запустить Денвер. Найдите ярлыки которые Денвер создал на Рабочем столе и запустите Start servers. На экране появятся и исчезнут два окошка, после этого запустите браузер и наберите в адресной строке:

localhost

и используйте манипулятор типа мышь, чтобы нажать им на кнопку Перейти в браузере. Открывшуюся страницу нужно прокрутить до раздела Утилиты, в котором перейдите по ссылке Заведение новых БД и пользователей MySQL.

После перехода по ссылке, заполните окрывшуюся страницу следующим образом:

Пароль администратора MySQL: <оставьте пустым>

Имя базы данных: drupalsite

Логин пользователя: drupalsite

Пароль: drupalsite

…еще раз: drupalsite

После ввода этих данных, нажмите кнопку Создать БД и пользователя.

Страница перезагрузится и после заголовка появится надпись: База данных и новый пользователь заведены:

Теперь у вас есть база данных с названием drupalsite, для доступа к базе будет использоваться логин и пароль drupalsite.

Шаг 4. Установка Drupal

Поледний шаг — это установка самого Drupal. Здесь будет описана установка Drupal с включённым в дистрибутив русским языком. Наберите в адресной строке браузера:

drupal.site

нажмите кнопку перехода и вы увидите страницу с предложением выбрать язык на котором и будет проходить дальнейшая установка. Выберите Russian (Русский) и нажмите кнопку Select language.

На следующей странице Drupal попросит создать файл settings.php в папке /sites/default. Этот файл нужно создать из файла default.settings.php. Нужно именно создать новый файл, а не переименовать существующий. После этого в этой папке у вас должно быть два файла: default.settings.php и settings.php. Нажмите ссылку обновите страницу в последней строке.

На следующей странице введите информацию о базе данных (название, пользователя и пароль) и нажмите кнопку Сохранить. Секция Расширенные настройки не понадобится.

Откроется и вскоре исчезнет страница Установка Drupal, во время которой Drupal внесёт изменения в файл settings.php.

Следующая страница будет находится на экране дольше. Вы увидите процесс импорта переводов интерфейса. На общих хостингах с небольшими ресурсами именно эта операция проходит не полностью, т.к. установленного ограничения на время выполнения скрипта не хватает на импорт переводов.

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

На следующей странице будет проведена установка языка.

На последней странице установки Drupal сообщит о её завершении и предложит войти в аккаунт. Нажмите ссылку войти в свой аккаунт.

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

Отметьте:

после установки удалять файл install.php нет необходимости, т.к. в install.php есть Verify existing settings.php и установка запуститься только в том случае, если файл settings.php содержит записи совпадающие с default.settings.php.

однако если хотите, вы можете удалить как install.php, так и все файлы с расширением txt: CHANGELOG.txt, COPYRIGHT.txt, INSTALL.txt, INSTALL.mysql.txt, INSTALL.pgsql.txt, LICENSE.txt, MAINTAINERS.txt, UPGRADE.txt.

Комментарии

Нажмите кнопку «Да». После этого появиться окно с процессом распаковки файлов. Когда файлы будут распакованы, то следующее окно будет таким:

Денвер проверит наличие необходимых компонентов, убедится что всё на месте и предложит нажать Enter для продолжения. Нажимаете Enter и появляется следующее окно:

На этом шаге предлагается выбрать папку в которую будет установлен Денвер. Можете выбрать то название, которое вам больше нравиться. Если устраивает C:\WebServer, то нажимаете Enter. Здесь нужно подтвердить свой выбор. Нужно ввести y и нажать Enter.

Денвер предупредит о создании виртуального диска. После нажатия Enter появится следующее окно:

Здесь нужно ввести букву виртуального диска. По умолчанию Денвер предлагает ввести Z и если у вас нет причин выбирать другую букву, то введите z и нажмите Enter.

Денвер сделает на диске указанную папку и предупредит о начале копирования файлов. После нажатия Enter, в окне пробежит строка копирующихся файлов:

Затем будет выведено следующее сообщение:

На этом шаге потребуется выбрать режим запуска Денвера. Прочитайте пояснения к режимам и выберите удобный для вас 1 или 2. После выбора режима запуска, Денвер спросит нужно ли создавать на Рабочем столе ярлыки, введите y и нажмите Enter. Окно установки закроется, а в браузере откроется информационная страница. На этом процедура установки Денвера закончена.

WordPress

WordPress — CMS с открытым исходным кодом, распространяемая под GNU GPL. Написан на PHP, в качестве базы данных использует MySQL. Сфера применения — от блогов до достаточно сложных новостных ресурсов и даже интернет-магазинов. Встроенная система «тем» и «плагинов» вместе с удачной архитектурой позволяет конструировать практически любые проекты.

На 2007 год WordPress — самая популярная система для ведения автономных блогов.

­ возможность публикации с помощью сторонних программ и сервисов;

­ простота установки, настройки;

­ поддержка RSS, Atom, trackback, pingback;

­ подключаемые модули (плагины) с уникальной простой системой их взаимодействия с кодом;

­ поддержка так называемых «тем», позволяющих легко менять как внешний вид, так и способы вывода данных;

­ «темы» реализованы как наборы файлов-шаблонов на PHP, что положительно сказывается на скорости и гибкости;

­ громадные библиотеки «тем» и «плагинов»;

­ заложенный потенциал архитектуры позволяет легко реализовывать сложные решения;

­ человеко-понятный URL;

Joomla

Joomla! (произносится джу́мла) — система управления содержимым, написанная на языках PHP и JavaScript, использующая в качестве хранилища базу данных MySQL. Является свободным программным обеспечением, распространяемым под лицензией GNU GPL.

В настоящее время актуальна версия 1.5. В разработке находится версия 1.6. К лету 2008 года по числу ежедневных скачиваний Joomla! заняла второе место после WordPress со значительным отрывом от других подобных систем.[3]

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

Joomla! позволяет отображать интерфейс фронтальной и административной части на любом языке. Каталог расширений содержит множество языковых пакетов

Основные возможности

Функциональность можно расширять с помощью дополнительных модулей (расширений, плагинов).

Модуль безопасности для многоуровневой аутентификации пользователей и администраторов.

Система шаблонов позволяет легко изменять внешний вид сайта.

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

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

Возможности администрирования

Для каждой динамической страницы можно создать своё описание и ключевые слова в целях повышения рейтинга в поисковых системах;

Начало и окончание публикации любых материалов можно запрограммировать по календарю;

Возможность ограничить доступ к определённым разделам сайта только для зарегистрированных пользователей;

Настраиваемые схемы расположения элементов по областям шаблона

Различные модули (последние новости, счётчик посещений, подробная статистика посещений, гостевая книга, форум и другие);

Возможность создания не одной, а нескольких форм обратной связи для каждого контакта;

Модуль приёма от удалённых авторов новостей, статей и ссылок;

Иерархия объектов;

Менеджер рассылки новостей. Поддержка более чем 360 служб рассылки новостей по всему миру;

Встроенный визуальный редактор TinyMCE;

ЧПУ — «человекопонятный URL»;

Минимальные системные требования

Для работы Joomla требуются:

Apache 1.3.x или новее.

Для версии 1.6 будут требоваться, как минимум, PHP 5.2 и MySQL 5.0.4.[7]

Литература

Томас Захреддин Drupal 6 = Das Drupal 6 Praxisbuch. — М.: «Эксмо», 2008. — С. 432. — ISBN 978-5-699-36219-6

Джон Вандюк, Мэтт Вестгейт «CMS Drupal: руководство по разработке системы управления сайтом», 400 стр., с ил.; ISBN 978-5-8459-1356-2, ISBN 978-1-5905-9755-2

Джон Вандюк (2-е издание) «CMS Drupal 6: руководство по разработке системы управления сайтом», 576 стр., с ил.; ISBN 978-5-8459-1513-9, ISBN 978-1-43-020989-8

Дэвид Мерсер Drupal 6. Создание надежных и полнофункциональных веб-сайтов, блогов, форумов, порталов и сайтов-сообществ = Building powerful and robust websites with Drupal 6: Build your own professional blog, forum, portal or community website with Drupal 6. — М.: «Вильямс», 2009. — С. 272. — ISBN 978-5-8459-1556-6

Джон Вандюк CMS Drupal 6: система для создания сайтов и управления ими = Pro Drupal Development. — 2-е. — М.: «Вильямс», 2009. — С. 576. — ISBN 978-5-8459-1513-9

В.Ромашов, М. Рысевец CMS Drupal: система управления содержимым сайта. — «Питер», 2009. — С. 288. — ISBN 978-5-49807-241-8

Robert T. Douglass, Mike Little, Jared W. Smith «Building Online Communities with Drupal, phpBB, and WordPress». Apress, ISBN 1-59059-562-9

David Mercer «Drupal: Creating Blogs, Forums, Portals, and Community Websites», ISBN 1-904811-80-9

John K. VanDyk, Matt Westgate «Pro Drupal Development», ISBN 9781590597552

Matt Butcher «Learning Drupal 6 Module Development», ISBN 978-1-847194-44-2

Колисниченко Денис Николаевич Joomla! 1.5. Руководство пользователя. — М.: «Диалектика», 2009. — С. 224. — ISBN 978-5-8459-1509-2

Хаген Граф Создание веб-сайтов с помощью Joomla! 1.5 = Building Websites with Joomla! 1.5. — М.: «Вильямс», 2009. — С. 304. — ISBN 978-5-8459-1506-1

Бэрри Норт Joomla! Практическое руководство = Building a Cuccessful Joomla! Powered Website. — М.: «Символ-Плюс, 2008. — С. 448. — ISBN 978-5-93286-117-2

Дэн Рамел Joomla! Самоучитель = Beginning Joomla! From Novice to Professional. — Санкт-Петербург: «БХВ-Петербург, 2008. — С. 448. — ISBN 978-5-9775-0285-6

Joomla! (англ.). Open Source Matters, Inc.. — Официальный сайт Joomla. Joomla в DMOZ

Joomla! CMS по-русски (рус.). Joomlaportal.ru. — Официальный сайт Joomla Russian Translation Community.

Наши рекомендации