Обычно я не пишу статьи на тему как использовать те или иные готовые модули для реализации некоторой функциональности. Гораздо больше меня интересует непосредственно создание модулей, взаимодействие с ядром, работа с различными API и т.п. «программистские» и архитектурные вещи.
Но, на этот раз, по многочисленным просьбам трудящихся я все таки решил написать один How-to.
Итак, речь в настоящей статье пойдет о том, как готовыми средствами Drupal 7 и парой шаблонов реализовать баннер-ротатор наподобии того, что встроен в один из моих ресурсов (http://labridge.ru).
Views — очень классный модуль. Он позволяет сэкономить километр времени, когда нужно сделать простые сборные страницы. Но в нем иногда не хватает гибкости. Например, для темизации. Либо для построения нужной структуры адресов. Либо в случае, когда нужно сделать сложную логику какого-нибудь каталога. Не важно. Суть в том, что зачастую проще написать простой модуль, чем извращаться с Views и темизацией полей. (С таксономией та же ерунда, между прочим.)
Я хочу показать, как просто создавать сборные страницы (и не только) программно — через модули. Достаточно знать пару хуков. Снипеты, которые я приведу ниже, я сохранил себе в Эверноуте — очень удобно.
Думаю, многие сталкиваются с подобной проблемой: создаешь с помощью hook_node_info() новый тип контента, но все равно приходится лезть в интерфейс и настраивать в ручную такие параметры, как отображение комментариев, настройки публикации, отображение даты/автора и прочие вещи, которые hook_node_info() не охватывает. А каждый раз использовать костыли типа variable_set — неудобно.
Дрис Байтаерт, создатель и руководитель проекта Drupal, недавно посетил Индию. Linux For You поговорил с ним о его планах по расширению сферы Drupal в Индиии, о Drupal 8, о компаниях, специализирующихся на Drupal и их бизнес модели, об Open Source и др.
Существует множество систем управления контентом, где именно вы позиционируете Drupal и чем вы отличаетесь?
Drupal это интересное животное, если вы присмотритесь внимательно. На нем работает два процента всех сайтов в мире. Но самое уникальное в Drupal это то, что он масштабируется от больших веб сайтов до очень маленьких. На нем работают блоги, но на нем также работают большие сайты медиа компаний. Он также уникальный в своих возможностях и функциональности. И все благодаря сообществу Drupal, в котором десятки тысяч людей развивают Drupal. У нас есть более 10 000 модулей. Поэтому мы находится в таком положении, что мы можем создать любой вид сайта на Drupal.
Это делает ваш вопрос особенно интересным, потому что вы можете использовать Drupal для ведения блогов, в этом случае мы конкурируем WordPress, и вы также можете использовать Drupal для создания больших корпоративных веб сайтов, в этом случае мы конкурируем с проприетарными программными решениями. В одно и то же время, вы можете использовать Drupal для сайтов с совместной работой. В этом случае мы конкурируем с Jive. Выходит, что Drupal уникален и не похож ни на одну другую платформу, он применим ко всем этим различным форматам.
Относительно недавно в Москве проходила конференция DrupalConf'2011, на которой я рассказывал про инструменты для начинающего разработчика Drupal.
Вашему вниманию представляю видео, где снято все мое получасовое выступление, презентацию и краткий конспект того, что я говорил (обращаю внимание, что конспект может в некоторых моментах отличатся от моего устного разговора в сторону больших подробностей).
Видео я вставляю сразу, залито оно на Яндекс.Видео, потому у большинства пользователей не должно возникать проблем с просмотром. Кто экономит трафик, переходите под кат, там только презентация и текстовый конспект.
Мне показалось странным, что на хабре эта тема практически не освещена и я постараюсь немного исправить эту ситуацию.
Я не сторонник англицизма, но в нашем языке нет даже похожего термина. Вкратце мультисайтинг можно определить как возможность использовать файлы движка для разных сайтов. Не стану разбираться в этимологии этого слова, но осмелюсь предположить, что его появление было связано с Drupal. Одним из наиболее распространённых примеров мультисайтинга может быть использование общей базы данных пользователей на нескольких сайтах. В друпале мультисайтинг реализован привлекательно, с точки зрения простоты и удобства, о чём я и решил написать.
Допустим, необходимо проделать некую операцию с большим количеством node и времени выполнения скрипта не хватает.
В этом случае можно увеличить время выполнения скрипта следующим образом:
set_time_limit($time); // $time in seconds
Это, мягко говоря, не самое правильное решение.
В этом случае на много правильнее реализовать это через batch.
По моему скромному мнению, CMS Drupal наиболее близко подошла к понятию «идеальная CMS». Очень многое в Drupal сделано для облегчения жизни разработчиков. В этой статье мне хочется рассказать об основных моментах, которые мне нравятся в Drupal. Материал рассчитан на пользователей, мало знакомых с Drupal. Иногда мне придется говорить очень простые вещи, но именно из-за этих простых мелочей и складывается очень приятное впечатление от Drupal.
Сразу стоит предупредить, что Drupal это не готовое решение. После установки вы не получите настроенную и работающую социальную сеть, интернет магазин и т.д. В Drupal действует принцип «предоставление возможностей по мере необходимости». Именно поэтому на Drupal не делают сателиты и ГС в промышленном масштабе и, возможно, именно поэтому количество рабочих сайтов на Drupal уступает таким CMS как Joomla и Wordpress, любимым CMS строителей сателитов и ГС.
Drupal предоставляет удобные инструменты для разработки сайта, который нужен именно вам. Создатели Drupal понимают, что каждый сайт индивидуален и предоставление готового решения было бы не правильно, вместо этого они предоставляют инструменты для разработки. Весь Drupal и все его модули пропитаны этой идеей. Отсутствие ограничений и множество настроек позволяют разработать сайт под конкретную задачу легко и просто.
Идея разработки данного модуля была (как это часто бывает) продиктована острой в нём необходимостью.
Представьте, что вы организуете интернет магазин (или любой другой проект в котором планируется создавать много различных типов содержимого). Предположим, что в качестве программного комплекса Вы выбрали связку Drupal 7 + Commerce. Commerce дает возможность создавать разные типы продуктов. Это полезно, когда Вы торгуете разными категориями товаров, для каждой из которых характерны какие-то свои данные. Например для мониторов Вы скорее всего захотите указать тип матрицы, а для процессоров неплохо будет указать тактовую частоту.