Быстрый старт в программинг под Друпал
Прислано: neochief
сб, 02/01/2010 - 23:50
Этот пост раскроет вопрос что должен знать и уметь PHP-программист, чтобы называть себя Drupal-разработчиком. Кроме того, здесь я приведу практически все, что необходимо, чтобы получить эти знания сравнительно быстро.
Итак, вы два года работали с Zend Framework, а о Друпале слышали совсем немного. По мере того, как Друпал набирал популярность, вам или вашему боссу удалось подписать полугодичный контракт на разработку интранет-портала с нуля с одной большой компанией.
Или же, вы давно работаете с Друпалом как администратор, сделали много сайтов на готовых модулях, но хотите поднять свои горизонты в разработке тем и модулей, либо чтобы получать более выгодные предложения и заказы, либо просто, чтобы иметь возможность создавать нестандартные решения для своих собственных проектов.
В любом случае, вы полны энтузиазма, так как нашли вот этот график нужды в Drupal-разработчиках:
Но затем вы нашли еще и такой вот график кривой обучения Drupal:

И истина недалека от графика. Причина кроется, прежде всего, в плохой структурированности доступной в сети информации о Друпале, а тем более в русскоязычном сегменте. Дело постепенно улучшается, но научиться писать код нужно уже сейчас.
Так как процесс обучения практически бесконечен, нужно сформировать некие границы знаний, по достижению которых вы можете смело браться за выполнение задач. Прежде всего, я сформулирую вопросы базового уровня, на которые должен без труда отвечать каждый Drupal-разработчик:
Модули
- Из чего состоит модуль?
- Что такое .info файлы?
- Как добавлять стили и JS-код в модуль?
- Что такое хуки?
- Как добавить свою страницу в систему меню Друпала?
- Как переопределить вывод на существующей странице сайта?
- Что такое Forms API?
- Как изменить произвольную форму созданную другим модулем?
- Как добавить к этой форме свою проверку и свой обработчик?
- Как добавить на сайт свой блок из модуля?
- Как сделать чтобы у этого блока были собственные настройки?
- Как выполнять дополнительные действия при сохранении ноды?
- Как отображать свои данные на страницах нод?
Темизация
- Как работает регистр темизации?
- Как переопределить стандартный шаблон в теме?
- Как темизировать вывод в модулях?
- Как вводить новые шаблоны?
- Как работают базовые темы?
Код
- Какие правила кодирования используются при разработке Друпал-проектов?
- Как работать с SVN и CVS?
- Как создавать и применять патчи?
- Какие проблемы существуют при выкладывании проектов на живой сервер?
- Какой код можно считать безопасным и какие есть методы обеспечения безопасности в Друпале?
- Как реализовывать unit-тесты в Друпале?
(Eсли вы можете ответить на все эти вопросы, свяжитесь с нами, у нас возможно найдется для вас работа).
А что с ответами?

Самым правильным решением было бы купить/одолжить/украсть книгу Pro Drupal Development, Second Edition (если с английским у вас очень плохо, подойдет и русская версия, хоть она и не TRUE). Большим плюсом книги является последовательность изложения материала, и большая точность и достоверность данных.
Для тех же, кто не ищет простых решений, или же хочет узнать даже более, я составил большой список ссылок на обучающие материалы, способные пролить свет на все из вышеизложенных вопросов. Большинство материалов на английском, хотя встречаются и русские.
Написание, поддержка и деплоймент кода
- Coding standards
- Создание модулей в Drupal: введение
Building Drupal Modules - Getting Started
Drupal CVS/SVN Setup
How to install and use TortoiseCVS
Хуки
Система меню
- Drupal menu system
- hook_menu() — определение страниц сайта
- Модуль-пример: Как создавать страницы в меню (по клике на названия функций — описания на русском)
Drupal Menu System Demystified
Формы
- 10 шагов к постижению форм в Друпале
Intro to Drupal 6 Forms API- Forms API Quickstart Guide
- Справочник Forms API
- Forms API 6.x Reference
- 10 Tips for Theming Drupal 6 Forms
- Темизация форм
Ноды
- hook_nodeapi() — перехват операций над нодами
- Модуль-пример: Как расширять существующие типы контента используя hook_nodeapi()
- Модуль-пример: Как создавать типы контента
- Модуль-пример: Как ограничить доступ к нодам
Блоки
- hook_block() — создание блоков и перехват действий над ними
- Модуль-пример: Как программно создавать блоки
Темизация
- Theming Guide
- Anatomy of a Drupal 6 theme
- Система темизации
- theme() — ключ к пониманию процесса темизации «под капотом»/li>
- Drupal: настройка оформления
Theme Template Files for Drupal 6
Tips and Tricks for Drupal Theming: 90 Minute Tutorial- Анатомия темы Drupal 6, Определение параметров и компонентов темы, Работа с CSS
- My Aha! moments in Drupal theming
В довесок, замечательная серия презентаций о темизации с NYC Drupal Meetup:
Drupal Theming (Pt. 1): Static Theme Conversion
Drupal Theming (Pt. 2): CCK Fields
Drupal Theming (Pt. 3): Custom Node Theming
Drupal Theming (Pt. 4): More Custom Node Theming
Drupal Theming (Pt. 5): User Profile Theming
Drupal Theming (Pt. 6): Theming Module Output
Drupal Theming (Pt. 7): Creating Template Variables
Drupal Theming (Pt. 8): Views Theming & review of custom Theming
Drupal Theming (Pt. 9): Panels — an overview
Качество кода
- An Introduction to Unit Testing in Drupal
- Simpletest Tutorial
- Безопасный код: Работа с пользовательским вводом
- Безопасный код: Работа с базой данных
- Безопасный код: Подделка межсайтовых запросов (CSRF)
Данных материалов вам должно хватить для достижения базового уровня разработки под Друпал. Это, конечно же, не предел и в следующих постах я раскрою тему расширенных знаний и навыков для тех, кто настроен идти еще дальше. Поэтому оставайтесь с нами, подписывайтесь на RSS и следите за новостями.
- neochief's blog
- Для комментирования войдите или зарегистрируйтесь
Кривая обучения верна на стопицот процентов.
- Для комментирования войдите или зарегистрируйтесь
надо бы добавить typo3
- Для комментирования войдите или зарегистрируйтесь
Приветствую, Neochief! Читал многие твои статьи здесь и на других сайтах. Твой энтузиазм, наверное, не только меня одного заставил полюбить Друпал. Я тоже надеюсь, что популярность Друпала будет продолжать расти с каждым днем.
Из перечисленных тобою базовых пунктов у меня пробелы только в следующем:
* Как работать с SVN и CVS? (пока еще не было необходимости)
* Как создавать и применять патчи? (представляю, но пока не пользовался)
* Как реализовывать unit-тесты в Друпале?
А в остальных пунктах ориентируюсь вполне))). Согласен, что книга Джона Вандюка - это первое, что необходимо приобрести начинающему разработчику. Именно эта книга дала мне необходимые начальные знания.
Некоторые мои знакомые пробовали изучать Друпал, но потом бросали его, объясняя это тем, что очень долго необходимо с ним разбираться. Но я всячески пытаюсь им доказать, что это интересная и перспективная технология.
Кстати, с тех пор как я стал серьезно изучать Друпал (чем и сейчас занимаюсь), я просто не могу смотреть теперь на самописные движки сайтов. Ибо любая самописная CMS - трехколесный велик по сравнению с Друпалом.
Друпал рулит по-любому!
- Для комментирования войдите или зарегистрируйтесь
* Как работать с SVN и CVS? (пока еще не было необходимости)
* Как создавать и применять патчи? (представляю, но пока не пользовался)
* Как реализовывать unit-тесты в Друпале?
Все есть в списке материалов, плюс здесь.
- Для комментирования войдите или зарегистрируйтесь
Друпал - он Си, знакомишься с ним, учишь, даже кодить начинаешь, и тут бац! Указатели... Осилишь их, будешь с Си навечно, если не осилишь, то никогда к Си не вернёшься... Чисто моё, на правах ИМХО
- Для комментирования войдите или зарегистрируйтесь
MDinc, по себе не суди о других.
p.s. Видел несколько раз я этих php-программистов, поработавших над друпалом. Оставалось только долго плеваться, и просить завышенную сумму на исправление ихних доделок. Иногда приходилось всё начинать заново. Знание php не означает знание Drupal.
- Для комментирования войдите или зарегистрируйтесь
neochief всегда интересно читать твои посты. Статьи не просто Друпал-программиста, а Аналитика. Удачи! (ну и на RSS обязательно подпишусь :) )
- Для комментирования войдите или зарегистрируйтесь
А новые API 7го Drupala --- как то Field API, File API и тд где-нибудь, кроме странички с обновлениями описаны?
Также Views API?
CCK API отлично иллюстрирует статья, тут недавно выложенная...
Честно говоря, целенаправленным поиском всего этого не занимелся. Но отсылок на официальных страницах видел немного. Поэтому, боюсь, ищется это непросто. Вот и спрашиваю.
Понял, что неправ, после того, как залез на http://api.drupal.org/api/group/field/7
- Для комментирования войдите или зарегистрируйтесь
Подписался на RSS. Очень интересно.
- Для комментирования войдите или зарегистрируйтесь
Хорошая подборка. Будет полезна как начинающим, так и продвинутым программерам :)
Спасибо.
- Для комментирования войдите или зарегистрируйтесь
ну тут просто идиология
От слова идиотизм?
Да хорош я вчера был
Ага, клинический случай.
- Для комментирования войдите или зарегистрируйтесь
Уверяю всех кто знает PHP Drupal щелкается как конфетка
Чтобы щелкать Drupal, одного PHP знать недостаточно, необходим опыт, который приходит со временем. Встречал я таких "щелкунов"...
Никакими книжками не пользовался никакими советами только брал и изучал код
А он написан очень прямолинейно и не требует особых знаний объектного программирования
И это чистый бред! Или я чего-то в этой жизни не понимаю...
- Для комментирования войдите или зарегистрируйтесь
Александр, где картинки?
- Для комментирования войдите или зарегистрируйтесь
Господа друпаловеды и друпалолюбы. Не кидайте тапками, а обьясните простым русским языком а зачем тогда нужен друпал?
Например в чем смысл ЦМС на которой якобы можно чуть ли не полететь на Марс если для создания сайта на ней не хватает знания PHP?!
То есть не подойдет ПХП программист который бы например мог написать этот же проект на зенде, а нужен специально обученный друпал пхп специалист в чем смысл тогда такой ЦМС?
- Для комментирования войдите или зарегистрируйтесь
Александр, где картинки?
Вроде подялось уже.
- Для комментирования войдите или зарегистрируйтесь
ArtMan, а в чём смысл зенда?
А почему кто-то пилит бревно лобзиком, а кто-то пилой.
Друпал это инструмент, не более того. А полетите вы на нём на марс или потоните в луже, зависит только от мастера
- Для комментирования войдите или зарегистрируйтесь
Кривая хороша... Очень расово верный график. :)
- Для комментирования войдите или зарегистрируйтесь
Друпал наполовину CMS, наполовину CMF. Что можно сделать средствами системы делаем средствами системы. Чего нету готового или не совсем нравится, делаем руками. Это тоже фреймворк. Собрать серьезный сайт без кодинга можно, но я лично в это верю сомнительно.
- Для комментирования войдите или зарегистрируйтесь
Господа друпаловеды и друпалолюбы. Не кидайте тапками, а обьясните простым русским языком а зачем тогда нужен друпал?
- для того, что бы на нем делали сайты простые люди. В идеале, сайты при полмощи CMS не должны делать программисты, программисты дожны только добавлять, подгонять какой-то особый функционал.
Основная черта Drupal в отличие от других CMS в том, что как раз простой пользователь может на нем полететь на Марс, в том, что программировать надо меньше в случаях разворащивания больших сайтов. ИМХО.
- Для комментирования войдите или зарегистрируйтесь
Спасибо за список контрольных вопросов, есть чем восполнить пробелы.
Диаграмма порадовала, правда не могу сказать что вписываюсь в нее. У меня с друпаломсрослось достаточно гладко, в рамках вордпрессовской, например, кривой. А черная диаграмма по моим соображениям больше подходит джумле :)
- Для комментирования войдите или зарегистрируйтесь
Хороший пост, но тема "зачем писать" раскрыта на полностью.
Я бы еще добавил как обязательный пункт - знание views, а вот с кодом под него как раз много граблей, хоть документация и включена в сам модуль...
- Для комментирования войдите или зарегистрируйтесь
А что вообще имеется по API Views?
- Для комментирования войдите или зарегистрируйтесь
А что вообще имеется по API Views?
Имеются модули
Views
Advanced help
А так же http://views.doc.logrus.com/
Хотя, имхо, проще смотреть в код хендлеров, плагинов и пр. в модуле
- Для комментирования войдите или зарегистрируйтесь
Да, спасибо. Всё это и до этого видел.
Просто пока что никакой конкретной задачи по использованию Views у меня не стояло, а на досуге разбираться с http://views.doc.logrus.com/ было страшно. Вот если бы было бы что-нибудь вроде http://www.poplarware.com/cckfieldmodule.html...
- Для комментирования войдите или зарегистрируйтесь
Я бы еще добавил как обязательный пункт - знание views
Пост предназначался скорее чисто программистской базе знаний. Безусловно, как использовать модули на сайте программист должен и так знать, а если даже нет, не думаю что у кого-то с техническим опытом, будут трудности с настройкой views из интерфейса.
Contrib API по моему мнению входит в разряд расширенных знаний, поэтому и не вошел в данный список. Как только постигается данная база, использованье любых других API не представляет трудностей.
- Для комментирования войдите или зарегистрируйтесь
чувствую себя унтерменьшем((( мне этого никогда не осилить( зато у меня манекенщицы были и харлей! эх... чото слабоватые у меня доводы.... пойду убиюся....
- Для комментирования войдите или зарегистрируйтесь
Классная заметка, есть стимул пересмотреть вопросы и проверить себя
- Для комментирования войдите или зарегистрируйтесь
к слову о typo, это ваще вешалка, там скорее прямая
- Для комментирования войдите или зарегистрируйтесь
Талантливый человек с хорошим чувством юмора :)
- Для комментирования войдите или зарегистрируйтесь
Все супер, добавил пост в избранное, но не раскрыта тема оптимизации.
Я, например, очень часто когда хочу начать новый проект или добавить функционал к существующему очень сильно сомневаюсь на эту тему, поскольку стандартных методов типа включения дефолтного кеширования и объединения css не хватает. А брать целый сервер или вдс под один небольшой сайт бессмысленно.
- Для комментирования войдите или зарегистрируйтесь
>Уверяю всех кто знает PHP Drupal щелкается как конфетка
может быть, но долго щёлкается. спасибо ТС за материал. в закладки!
- Для комментирования войдите или зарегистрируйтесь
Спасибо за статью, а не подскажете есть где то информацию на русском про создание фильтров, полей, стилей для views в собственном модуле?
- Для комментирования войдите или зарегистрируйтесь
Спасибо за статью, а не подскажете есть где то информацию на русском про создание фильтров, полей, стилей для views в собственном модуле?
на английском то особо инфы нет, а на русском уж точно. лучше смотреть исходники модулей
- Для комментирования войдите или зарегистрируйтесь
Изучаю Друпал - да мощная система, не спорю... Но на счет самописных движков - не согласен. Сам имею самописный двиг собственного производства - уже несколько сайтов на нем хорошо работают. Постоянно его совершенствую... и по скорости он намного превосходит Друпал, и есть куда развиваться..
У друпала конечно свои плюсы - универсальная вещь, много модулей и т д.. т е можно сделать практически любой сайт и быстро,.. но если делать сильную веб систему (веб портал) для конкретных нужд - типа соц сеть - то Друпал - курит в сторонке ибо этот друпал прийдется ой как долго затачивать , т к очень много универсальности там будет только висеть в оперативке ненужным хламом, а также грузить процессор - легче написать систему с нуля, либо взять сырые заготовки для движка в инете и уже из этого делать портал.
- Для комментирования войдите или зарегистрируйтесь
Спасибо за статью, а не подскажете есть где то информацию на русском про создание фильтров, полей, стилей для views в собственном модуле?
На хабре была одна статься небольшая. Так сказать экскурс в ViewsAPI. Я с неё стартанул. Но там немного.
У друпала конечно свои плюсы - универсальная вещь, много модулей и т д.. т е можно сделать практически любой сайт и быстро,.. но если делать сильную веб систему (веб портал) для конкретных нужд - типа соц сеть - то Друпал - курит в сторонке ибо этот друпал прийдется ой как долго затачивать , т к очень много универсальности там будет только висеть в оперативке ненужным хламом, а также грузить процессор - легче написать систему с нуля, либо взять сырые заготовки для движка в инете и уже из этого делать портал.
С этим никто особо и не спорит.
- Для комментирования войдите или зарегистрируйтесь
либо взять сырые заготовки для движка в инете и уже из этого делать портал.
Ага, самый лучший способ... :)
Быстродействие у сырья будет просто опупительное. Будут оптимизированы все кавычки, а принты заменены эхами.
- Для комментирования войдите или зарегистрируйтесь
Решил сесть за изучения Друпала. Ранее не много работал с Вордпрессом и Джумлой. Один друг расскзл о Друпале. Теперь я здесь. Спасибо за мануал.
- Для комментирования войдите или зарегистрируйтесь





















Комментарии