Этот пост раскроет вопрос что должен знать и уметь 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 и следите за новостями.
Комментарии
Кривая обучения верна на стопицот процентов.
надо бы добавить typo3
к слову о typo, это ваще вешалка, там скорее прямая
Приветствую, Neochief! Читал многие твои статьи здесь и на других сайтах. Твой энтузиазм, наверное, не только меня одного заставил полюбить Друпал. Я тоже надеюсь, что популярность Друпала будет продолжать расти с каждым днем.
Из перечисленных тобою базовых пунктов у меня пробелы только в следующем:
* Как работать с SVN и CVS? (пока еще не было необходимости)
* Как создавать и применять патчи? (представляю, но пока не пользовался)
* Как реализовывать unit-тесты в Друпале?
А в остальных пунктах ориентируюсь вполне))). Согласен, что книга Джона Вандюка - это первое, что необходимо приобрести начинающему разработчику. Именно эта книга дала мне необходимые начальные знания.
Некоторые мои знакомые пробовали изучать Друпал, но потом бросали его, объясняя это тем, что очень долго необходимо с ним разбираться. Но я всячески пытаюсь им доказать, что это интересная и перспективная технология.
Кстати, с тех пор как я стал серьезно изучать Друпал (чем и сейчас занимаюсь), я просто не могу смотреть теперь на самописные движки сайтов. Ибо любая самописная CMS - трехколесный велик по сравнению с Друпалом.
Друпал рулит по-любому!
Все есть в списке материалов, плюс здесь.
Друпал - он Си, знакомишься с ним, учишь, даже кодить начинаешь, и тут бац! Указатели... Осилишь их, будешь с Си навечно, если не осилишь, то никогда к Си не вернёшься... Чисто моё, на правах ИМХО
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. Очень интересно.
Хорошая подборка. Будет полезна как начинающим, так и продвинутым программерам
Спасибо.
От слова идиотизм?
Ага, клинический случай.
Чтобы щелкать Drupal, одного PHP знать недостаточно, необходим опыт, который приходит со временем. Встречал я таких "щелкунов"...
И это чистый бред! Или я чего-то в этой жизни не понимаю...
Александр, где картинки?
Господа друпаловеды и друпалолюбы. Не кидайте тапками, а обьясните простым русским языком а зачем тогда нужен друпал?
Например в чем смысл ЦМС на которой якобы можно чуть ли не полететь на Марс если для создания сайта на ней не хватает знания PHP?!
То есть не подойдет ПХП программист который бы например мог написать этот же проект на зенде, а нужен специально обученный друпал пхп специалист в чем смысл тогда такой ЦМС?
Вроде подялось уже.
ArtMan, а в чём смысл зенда?
А почему кто-то пилит бревно лобзиком, а кто-то пилой.
Друпал это инструмент, не более того. А полетите вы на нём на марс или потоните в луже, зависит только от мастера
Кривая хороша... Очень расово верный график.
Друпал наполовину CMS, наполовину CMF. Что можно сделать средствами системы делаем средствами системы. Чего нету готового или не совсем нравится, делаем руками. Это тоже фреймворк. Собрать серьезный сайт без кодинга можно, но я лично в это верю сомнительно.
- для того, что бы на нем делали сайты простые люди. В идеале, сайты при полмощи CMS не должны делать программисты, программисты дожны только добавлять, подгонять какой-то особый функционал.
Основная черта Drupal в отличие от других CMS в том, что как раз простой пользователь может на нем полететь на Марс, в том, что программировать надо меньше в случаях разворащивания больших сайтов. ИМХО.
Спасибо за список контрольных вопросов, есть чем восполнить пробелы.
Диаграмма порадовала, правда не могу сказать что вписываюсь в нее. У меня с друпаломсрослось достаточно гладко, в рамках вордпрессовской, например, кривой. А черная диаграмма по моим соображениям больше подходит джумле
Хороший пост, но тема "зачем писать" раскрыта на полностью.
Я бы еще добавил как обязательный пункт - знание views, а вот с кодом под него как раз много граблей, хоть документация и включена в сам модуль...
А что вообще имеется по API Views?
Имеются модули Views Advanced help
А так же http://views.doc.logrus.com/
Хотя, имхо, проще смотреть в код хендлеров, плагинов и пр. в модуле
Да, спасибо. Всё это и до этого видел.
Просто пока что никакой конкретной задачи по использованию Views у меня не стояло, а на досуге разбираться с http://views.doc.logrus.com/ было страшно. Вот если бы было бы что-нибудь вроде http://www.poplarware.com/cckfieldmodule.html...
Пост предназначался скорее чисто программистской базе знаний. Безусловно, как использовать модули на сайте программист должен и так знать, а если даже нет, не думаю что у кого-то с техническим опытом, будут трудности с настройкой views из интерфейса.
Contrib API по моему мнению входит в разряд расширенных знаний, поэтому и не вошел в данный список. Как только постигается данная база, использованье любых других API не представляет трудностей.
Классная заметка, есть стимул пересмотреть вопросы и проверить себя
Талантливый человек с хорошим чувством юмора
Все супер, добавил пост в избранное, но не раскрыта тема оптимизации.
Я, например, очень часто когда хочу начать новый проект или добавить функционал к существующему очень сильно сомневаюсь на эту тему, поскольку стандартных методов типа включения дефолтного кеширования и объединения css не хватает. А брать целый сервер или вдс под один небольшой сайт бессмысленно.
>Уверяю всех кто знает PHP Drupal щелкается как конфетка
может быть, но долго щёлкается. спасибо ТС за материал. в закладки!
Спасибо за статью, а не подскажете есть где то информацию на русском про создание фильтров, полей, стилей для views в собственном модуле?
на английском то особо инфы нет, а на русском уж точно. лучше смотреть исходники модулей
Изучаю Друпал - да мощная система, не спорю... Но на счет самописных движков - не согласен. Сам имею самописный двиг собственного производства - уже несколько сайтов на нем хорошо работают. Постоянно его совершенствую... и по скорости он намного превосходит Друпал, и есть куда развиваться..
У друпала конечно свои плюсы - универсальная вещь, много модулей и т д.. т е можно сделать практически любой сайт и быстро,.. но если делать сильную веб систему (веб портал) для конкретных нужд - типа соц сеть - то Друпал - курит в сторонке ибо этот друпал прийдется ой как долго затачивать , т к очень много универсальности там будет только висеть в оперативке ненужным хламом, а также грузить процессор - легче написать систему с нуля, либо взять сырые заготовки для движка в инете и уже из этого делать портал.
На хабре была одна статься небольшая. Так сказать экскурс в ViewsAPI. Я с неё стартанул. Но там немного.
С этим никто особо и не спорит.
Быстродействие у сырья будет просто опупительное. Будут оптимизированы все кавычки, а принты заменены эхами.
Решил сесть за изучения Друпала. Ранее не много работал с Вордпрессом и Джумлой. Один друг расскзл о Друпале. Теперь я здесь. Спасибо за мануал.
Также поможет в освоении Pro Drupal Development-а список опечаток в этих книгах
http://www.drupalbook.com/errata3