Drupal 7: полезные модули

Drupal - популярный и мощный движок для создания сайтов. Но нельзя объять необъятное, особенно если сжатая версия дистрибутива Drupal 7 "весит" около 3,8 Мб. Поэтому функциональность Drupal расширяется с помощью модулей. Модулей очень много, что также является одной из причин популярности этого движка. В данной статье я хочу поговорить о самых востребованных модулях для большинства сайтов.

Напомню, что модули загружаются в директорию внутри Drupal в sites/all/modules или в sites/site.name/modules для конкретного сайта (при мультисайтовой конфигурации)

Markdown filter

Если вы наполняете сайт содержимым, то, рискну предположить, что приходится вводить много текста и размещать ссылки на картинки. Делать это вручную, вставляя HTML-разметку, дело долгое, утомительное, приводящее к ошибкам. Но можно значительно упростить себе работу поставив модуль или модули для визуального форматирования текста, например BUEditor. А для тех же, кто не хочет много возиться с мышкой и привык сам контролировать разметку, предложу использовать Markdown filter.

Совет. Как быстро найти нужный модуль на drupal.org зная его машинное имя? Очень просто: скопируйте в адресную строку браузера http://www.drupal.org/project/ и добавьте машинное имя модуля, например markdown, нажмите Enter. И сразу перейдете к его странице. Это быстрее, чем использовать форму поиска.

Включите модуль Markdown filter в настройках модулей admin/modules. Перейдите в настройки форматов текста admin/config/content/formats, нажмите "Настроить" напротив нужного формата, поставьте галочку напротив Markdown, перетащите его вверх списка в разделе "Порядок фильтров", сохраните изменения. (Если используете фильтры Code Filter и/или GeSHI filter то поставьте Markdown после них).

Теперь при создании материала с форматом текста для которого включен фильтр Markdown станет доступна разметка в стиле Markdown (еще ее иногда называют Wiki-разметкой).

Тут все просто: хотите выделить курсивом, заключайте слово или фразу в одинарные звездочки или нижнее подчеркивание (без пробелов после открывающей звездочки и перед закрывающей), например *этот текст будет выделен курсивом* или _этот текст будет выделен курсивом_. Хотите выделить полужирным - в двойные звездочки или нижнее подчеркивание: **этот текст будет выделен полужирным** или __этот текст будет выделен полужирным__. А что делать, если необходимо отображать в тексте звездочки или нижнее подчеркивание без пробела? Тогда необходимо поставить перед ними escape-символ, т.е. наклоненную влево косую черту - \.

Для вставки ссылки используется выражение [текст ссылки](/ссылка_внутри "Всплывающая подсказка (опционально)"), например: [ссылка на рецепт](/node/99 "Рецепт пирога") или [рецепт пирога](/node/99). Это будет ссылка на страницу внутри сайта. Для внешней ссылки необходимо после открывающей скобки ставить две наклонные черты, например: [Drupal org](//drupal.org "Drupal site").

Два или более пробела в конце строки эквивалентны вставке HTML-тега <br>, а два перевода строки (Enter) эквивалентны вставке HTML-тега <p>, т.е. определения параграфа.

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

Совет. По-умолчанию любой модуль на drupal.org содержит только английский интерфейс. Для локализации необходимо скачать файл локализации. Для этого на странице модуля необходимо выбрать ссылку View project translations, на открывшейся странице нажать кнопку Download translations, затем скачать файл перевода (при наличии такового, разумеется) для нужного языка и версии модуля. После этого зайти в административное меню Настройки->Переводы интерфейса, выбрать вкладку Импорт, в ней выбрать нужный файл и нажать внизу кнопку Импорт, дождаться окончания импорта локализации.

Brilliant Gallery

Отображать картинки в мире HTML принято двумя способами: в полном размере или в виде миниатюры. Во втором случае экономится место на экране, но, как правило, необходимо картинку вставлять внутрь ссылки для предоставления возможности посетителю сайта посмотреть изображение в полном формате. Ранее картинку открывали в том же окне или в новом. Но это неудобно и несовременно. Сейчас принято картинку открывать поверх страницы и предоставлять элементы масштабирования и навигации, как это делается, к примеру, на сайте Вконтакте. И для этих целей как нельзя кстати подойдет модуль Brilliant Gallery. К тому же, он умеет работать с картинками размещенными в web-галерее Picasa. Для раскрытия всех возможностей Brilliant Gallery понадобится еще модуль Lightbox2. Загружаем оба модуля, включаем в настройках admin/modules.

На сайте в папке files создаем подпапку, например bgfolder, у Drupal должны быть права на чтение и запись в эту папку. Заходим в "Настройки" в панели администрирования, ищем раздел Brilliant gallery и пункт в нем Brilliant gallery. Заходим в него. Параметры:

Main gallery folder used for local galleries (not for Picasa) - папка для картинок, в нашем случае bgfolder (без кавычек и наклонных черточек).

Custom path for a cache folder - папка для временных файлов, обычно tmp внутри папки files.

Expiration time of the gallery cache (in days) - время в днях жизни закешированных изображений, можно оставить по умолчанию.

Maximum number of table columns - максимальное количество колонок в таблице, если 0 - то будет заполняться строка до конца, затем начинаться со следующей.

Maximum width of table images - максимальная ширина картинки в таблице.

Crop thumbnails to square shape - обрезать ли эскиз до квадрата.

Background colour - цвет фона таблицы в формате #RRGGBB.

Table cell padding - расстояние между столбцами в таблице в пикселях (именно они и будут заполняться цветом фона).

Overlay browser - модуль для вывода картинки поверх страницы, в нашем случае - Lightbox.

Maximum width of full image - максимальное разрешения в пикселях выводимого поверх страницы изображения. Тут необходимо помнить, что задание слишком большого значения может привести к тому, что картинка просто не поместится на экран.

Display file name as caption - если поставить галочку, то имя файла будет отображаться как название изображения.

Sort or randomize image order - выбор верхнего варианта определяет отображение эскизов в таблице в алфавитном порядке, второго - в случайном.

Выставляем нужные настройки и сохраняем изменения. Переходим в настройки форматов текста admin/config/content/formats и для нужных форматов отмечаем галочку Brilliant Gallery tag в разделе "Порядок фильтров". Перетаскиваем Brilliant Gallery tag вверх (или после GeSHI filter в случае использования последнего), сохраняем настройки.

Теперь пришла пора рассказать про то, что за таблица упоминалась в настройках выше и в чем вообще суть Brilliant Gallery. Взгляните на пример ниже.

[bg|primer|2|120|sort|4|#dddddd]

Выше вы должны увидеть 4 эскиза фотографий в виде таблицы 2х2. Щелкните левой кнопкой мыши по любой картинке. Она должна открыться во фрейме поверх страницы с элементами навигации и управления.

Для того, чтобы отобразить данные эскизы понадобился код: [bg|photo|2|100|sort|4|#dddddd]. Как видим - ничего сложного. Самое главное тут - это открывающая квадратная скобка, за ней буквы bg, прямая черта, путь к директории с картинками внутри /files/bgfolder без наклонных черточек, закрывающая квадратная скобка: [bg|photo]. Все, этого достаточно. (Предварительно, конечно, пришлось создать директорию /files/bgfolder/photo и поместить туда файлы фотографий с правами на чтение Drupal). Но для красоты добавил еще параметры: 2 - количество колонок; 100 - ширина эскиза в пикселях; sort - сортировать по алфавиту; 4 - количество отображаемых эскизов; #dddddd - цвет фона таблицы. Без этих дополнительных параметров будут браться данные из глобальных настроек Brilliant Gallery которые рассмотрены выше.

Вообще-то, у тега Brilliant Gallery больше параметров. Все они приведены ниже.

[bg|путь к директории с картинками внутри указанной в настройках Brilliant Gallery папки без первой и последней наклонной черты|количество колонок|ширина эскиза|метод сортировки|сколько показывать эскизов|цвет фона|номер конкретной картинки|альтернативный текст]

Для вывода одной, например 3-й по алфавиту картинки с шириной эскиза 200 необходимо прописать: [bg|photo|1|200|sort|1|#ffffff|3|Третье фото]. Тоже все просто.

[bg|primer|1|200|sort|1|#ffffff|3|Третье фото]

Еще Brilliant Gallery умеет работать с галереей Picasa. Для этого вместо локального пути необходимо указать RSS-ссылку на альбом, например [bg|http://picasaweb.google.com/data/feed/base/user/tjfulopp/albumid/5290148828710951169?alt=rss&kind=photo&hl=en_US] (этот пример из документации к Brilliant Gallery).

Таким образом назначение модуля Brilliant Gallery - оформление с наименьшими усилиями со стороны автора web-статьи эскизов картинок в виде таблицы или строки с возможностью просмотра полноразмерного варианта и навигации (последнее при наличии модуля Lightbox2).

Pathauto

Еще один очень полезный модуль для Drupal - Pathauto.

По-умолчанию, как известно, Drupal именует ссылки на страницы как имяСайта/node/номерМатериала., например drupal.org/node/123. Но такая ссылка ничего не говорит тем же поисковым системам. Также, как известно, для решения данной проблемы существует модуль ядра Path позволяющий давать страницам альтернативные имена, например vsesovety.info/big_bang_1. Но, во-первых, необходимо не забыть придумать альтернативную ссылку, во-вторых прописать ее вручную. А это не совсем удобно. Тут-то на помощь и приходит модуль Pathauto. Он автоматически формирует альтернативную ссылку.

Для работы Pathauto необходим модуль Token

Скачиваем и устанавливаем, включаем модули как обычно. Заходим в настройки модуля Pathauto. Во вкладке Patterns в разделе Content paths можно настроить правило для каждого типа материала отдельно, а можно для всех в поле Default path pattern. Я рекомендую оставить там значение по умолчанию: content/[node:title]. В этом случае будет формироваться ссылка на основе заголовка статьи. Если у статьи заголовок кириллицей, то и ссылка будет кириллицей. После появления кириллических доменов это не должно быть проблемой. Но если вы хотите альтернативные ссылки формировать по-старинке латиницей, то необходимо предварительно установить модуль Transliteration. Тогда во вкладке Настройки пункта меню Синонимы URL появится пункт Transliterate prior to creating alias, отметив который вы укажите модулю Transliteration все ссылки не латиницей преобразовывать в кодировку US-ASCII. Кстати, модуль Transliteration также умеет "на лету" переименовывать и имена файлов подобным образом.

Во вкладке Настройки пункт Separator назначает разделитель между словами, так как путь не может содержать пробелов. По-умолчанию указано тире. Таким образом статья с заголовком "Обо мне" получит адрес "обо-мне" или "obo-mne" (при наличии модуля Transliterate ). Можно указать свой разделитель, но тогда, возможно, необходимо будет в раздел Punctuation внести соответствующие изменения.

В разделе Update action можно указать что делать, если изменился путь в случае переименования статьи. Do nothing. Leave the old alias intact - не изменять, оставить прежний. Create a new alias. Leave the existing alias functionin - создать новый, старый оставить функционировать. Create a new alias. Delete the old alias - создать новый, старый удалить. Что выбирать - решать вам, но помните, что в первом случае ссылка не всегда будет соответствовать содержимому; во-втором поисковые системы будут "думать", что вы подтасовываете результаты поиска; в-третьем случае появятся "битые ссылки". Ка один из вариантов - поставить еще и модуль Redirect который будет, в случае выбора пункта Automatically create redirects when URL aliases are changed в его настройках, автоматически создавать redirect, что означает перенаправление со старого адреса на новый. Таким образом и ссылка будет соответствовать контенту, и битых ссылок не будет, и поисковики должны остаться довольны.

Word Link

Для тех, кто создает онлайн-энциклопедии может быть полезен модуль Word Link. Суть его заключается в том, что он позволяет создавать словарь ссылок. Рассмотрим на примере.

Предположим, вы создаете сайт посвященный моделизму. Статьи, как правило, будут изобиловать специализированными терминами и рассказывать какой, где и как материал применить. И вот вы решили создать небольшую энциклопедию терминов и приемов в помощь начинающим моделистам. Допустим, вы добавили статью о видах фанеры (клея, красок, полезных инструментов и т.д.) применяемых в моделировании. Теперь необходимо воспользоваться поиском по сайту, найти все статьи где встречается слово "фанера" и вручную сформировать ссылку на соответствующую страницу. А можно воспользоваться модулем Word Link. Для этого необходимо зайти в его настройки, выбрать пункт Add word и добавить слово "фанера", указать ссылку на статью про фанеру. Теперь на всех страницах содержащих искомое слово (можно, кстати, указать страницы на которых не создавать ссылки) слово "фанера" будет отображаться как ссылка на нужную страницу. В свою очередь, на странице, на которую ссылается ссылка "фанера", само это слово не будет отображаться как ссылка. Но тут есть одна фича или глюк: если поставлена в настройках Word Link галочка напротив Case Sensitive то для того, чтобы слова "Фанера" и "фанера" были ссылками на одну и ту же статью необходимо будет добавить два этих слова по отдельности в словарь со ссылкой на одну и ту же статью. И в этом случае в искомой статье появятся ссылки на саму же себя. Поэтому не советую отмечать галочкой пункт Case Sensitive. И еще: для того, чтобы не отображался непонятный значок после созданной ссылки уберите в настройках галочку Add default CSS.

В применении Word Link меня смущает пока одно: количество зависимостей, что уж никак не скажется положительно на быстродействии сайта. Судите сами, этот модуль зависит от: Views (довольно тяжелый модуль) и Views bulk operations. Модуль Views в свою очередь зависит от Ctools. Модуль Views bulk operations зависит от Entity и Views. Таким образом, ради всего-навсего одного дополнительного функционала необходимо тянуть еще как минимум 4 модуля. С другой стороны, если у вас уже установлен модуль Views, а, значит, и Ctools, то необходимо еще только 2 модуля. В общем, решать вам.

На этом пока все. Удачи в освоении и применении Drupal !