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, наравне с 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» и включим их все.
В меню «Administer › Content management › Content types» добавим новый тип документа.
Необходимо заполнить 2 поля: Name (Имя для пользователя) и Type(имя для машины).
Сохраняем новый тип данных, сейчас он практически ничем не отличается от типа Story, давайте его разнообразим. Жмем «Edit».
Следом нажимаем «Manage fields».
После включения модуля CCK тут добавилась вкладка Add
где можно добавить новое поле, и новую группу полей. Для добавления нового поля нужно ввести:
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».
Здесь можно настроить только что добавленное поле.
Size of textfield— размер поля.
Default value — значение по умолчанию.
Required — если галочка установлена, то при добавлении материала данное поле будет обязательно для заполения.
Number of values— количество значений которое может ввести пользователь.
Я оставил все значения без изменений, и сохранил. Только что созданное поле отобразилось в списке, его можно перетащить мышкой, тем самым выбрав его месторасположение.
Для того что бы изменить то, как поле будет отображаться, нужно зайти во вкладку «Display fields».
Здесь выводится список полей. Мы можем изменить:
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. Зайдем.
Здесь мы видим виды которые уже созданы по умолчанию, их может быть и больше в зависимости от установленных модулей. Эти виды неактивны, их можно включить с помощью ссылки «Enable», и использовать в своих целях. Но, !!МЫ!! попробуем сделать свой (пусть он и будет маленький, неказистый и неработающий). Кликаем по кнопке «Add».
Появляется первое меню создания вида.
Тут 2 обязательных поля: заголовок (название вида., вводить английские буквы в нижнем регистре), и тип вида (View type — это то откуда мы будем брать информацию для вывода). Напишем в заголовке first (ведь это наш первенец, не так ли?), а тип вида поставим «Материал» (Node), будем выводить материалы. Нажимаем «Next», и попадаем на страницу где мы будем задавать параметры вывода, первоначально она выглядит ужасно, но это только в первый раз.
тут можно создать несколько display (видов вывода, наиболее используемые это блок, и страница). Один display уже есть — default, если вы хотите создать несколько схожих дисплеев, то можно задать основные настройки в default, создаваемые display наследуют эти настройки. Если вы хотите что бы настройки у дисплея отличались от настроек Default, их нужно переназначить, для этого служит кнопка Override.
Давайте добавим блок.
Рассмотрим блок Fields, он является одним из основных, так как в нем мы выбираем какие поля (Fields) будет отображать в нашем виде.
На блоке вы видите 2 кнопки, первая служит для добавления поля, вторая для выставления полей в порядке нужном вам.
При нажатии на кнопку добавления поля, внизу отобразятся поля которые можно добавить, и выпадающий список сортировки. Если мы хотим добавить в вывод заголовки материалом, нам нужно выбрать Node: title, и нажать Add.
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.