Дайджест интересных материалов из мира Drupal #4
Всем привет!
Самое интересное и полезное из мира Drupal за прошедшие 3 недели.
По-русски
- Первые шаги в освоении Twitter Bootstrap и Drupal поможет сделать статья Bootstrap + Drupal 7: быстрый экскурс для начинающих [1].
- Ещё один обоюдоострый инструмент друпала, о котором стоит знать: hook_module_implements_alter() [2].
- @xandeadx делится джентльменским набором модулей [3].
- На Хабре вышла статья Управление конфигурациями в Drupal 8, обзор для разработчиков [4]. Если что-то из примеров уже не работает, просмотрите Change records [5], где логируются все изменения API.
- Краткость — сестра таланта. Микросовет — global $user в функциях [6]. Да, и конечно, называйте такой параметр $account, а не $user :)
Drupal-lite
Наша постоянная рубрика для начинающих.
- Простой пример кастомизации контактной формы: изменяем заголовок и перенаправление [7].
- Изучаем шаблоны полей в Display Suite [8], спокойно, по шагам, со скриншотами.
- С помощью семейства модулей Workbench [9] можно организовать на сайте гибкую систему модерации и документооборота. Пример добавления нового состояния документа смотрите в статье Add a New Moderation State Tab to Workbench [10].
- 5 антиспам-модулей [11] + ещё столько же в комментариях. Засветился и Simple Anti-Spam [12].
- В друпале просто
$(function() {})
не прокатит. Подробно о Javascript и Drupal behaviors [13] читайте в свежей статье луллаботов.
Drupal и Git
- Для тех, кто ещё не сделал в своей жизни ни одного коммита, автор Drupal-блога CodeKarate разразился серией статей о Git: 1 [14], 2 [15], 3 [16], 4 [17], 5 [18].
- В статье “Git setup with hook for post-receive” [19] рассматривается способ, как избежать хранения Git репозитория в docroot’e вашего сервера, основанный на автоматической синхронизации при помощи post-receive хуков.
- Довольно часто приходится иметь дело с несколькими удаленными Git-репозиториями одновременно, например, с кодом ядра друпала и с кодом разрабатываемого сайта. В данном случае возникает проблема, когда с оригинальным репозиторием мы также утаскиваем всю его историю, а это может значительно повлиять на занимаемое место. В статье “Multiple git remotes, the --depth parameter and repo size” [20] находится решение данной проблемы.
Всё для Drupal-разработчика
- В статье “Rapid Drupal Scaffolding with Yeoman” [21] рассматриваются вопросы генерации кода сущностей, модулей и т.п. на основе шаблонов при помощи Yeoman Generator [22]. В прододжение стоит ознакомиться со статьей “Creating Custom Ctools Layout Plugins with Yeoman” [23], которая посвящена генерации плагинов к Ctools, а также с “Yo Hedley!” [24] на тему Headless Drupal. Теперь вы знаете о Yeoman всё!
- Современная разработка страниц часто предполагает использование панелей, Views’ов и прочих фич, которые в конечном счете становятся переносимыми при помощи модуля Features [25]. В статье “Code Management in Drupal 7 using Features, Ctools, and Panels” [26] рассматриваются вопросы создания листингов при помощи стандартных средств (EntityFieldQuery и т.п.), а не при помощи модуля Views, с фокусом на правильную интеграцию всего этого добра с модулем Panels, и последующей упаковкой в фичу.
- Drush продолжает обзаводиться красивыми сайтами с документацией: к http://drushcommands.com/ [27] добавился http://docs.drush.org/en/master/ [28].
- Кстати, Drush можно запускать автоматически через Grunt [29], если очень хочется.
- Кеширование в Drupal — тема всегда актуальная. Углубляемся в дебри ядра [30], чтобы понять почему не отрабатывает кеш страниц для анонимных пользователей. На эту же тему можно почитать у 2bits [31].
- Как использовать свою функцию темизации для формы? [32] Полезно, когда верстка формы очень специфическая.
Drupal 8
- Карьерный план Drupal-разработчика от WebOmelette: 6 необходимых шагов, чтобы стать разработчиком Drupal 8 [33].
- Краткий базовый курс [34] (опять же, для разработчика) называется «Drupal 8 in 2 steps». Почему шага должно быть именно два, — просим помощи у зала :)
- Третьим шагом логично поставить изучение Twig (новый движок шаблонов, пришедший на смену PHPTemplate) по статье “Gettin` Twiggy” [35].
- Вышла очередная бета (шестая) Drupal 8 [36]. К сожалению, нормального Upgrade path по-прежнему нет [37].
- Продолжает публиковаться серия статей, посвященная программному расширению модуля Views: полей [38], фильтров [39].
- Gabor Hojtsy продолжает всех радовать своей работой на благо интернационализации, и в его серии Drupal 8 multilingual tidbits [40] появилась уже семнадцатая (!) статья под названием Content translation [41].
- В журнале Drupal Watchdog [42] вышла статья, посвященная созданию интерактивных туров [43] в Drupal 8.
- Если вы искали чёткие определения различным терминам в Drupal, свазанные с работой меню (menu, path, uri), то мы вам советуем ознакомиться со статьей “How does Drupal use these different terms? Route, Path, URL, URI, Link, Menu item“ [44].
- Заметка о том [45], зачем нужны аннотации и вообще и в друпале в частности.
Бизнес и сообщество
Drupal вне кода:
- Несколько недель назад сообщество активно ретвитило статьи про использование Drupal в Умном Доме [46]. И хотя авторы нещадно эксплуатируют все bad practices, которые можно найти в друпале, это всё равно очень весело.
- Chx [47] снова уходит, теперь из агрегатора Drupal Planet. Дружное Drupal-сообщество очень его любит [48] и надеется, что скоро он опять вернётся, отдохнувший и с магнитиками :)
- Начинается DrupalCon Latin America [49], а это значит, что скоро будет много новых видео.
- Ассоциация опубликовала состав участников Друпалконов в 2014 году [50].
Интересные модули
- Views Fast Field [51] — отображение полей сущности без загрузки самой сущности.
- Views Accelerator [52] — автоматическая оптимизация post execute фазы Views с анализом, статистикой, когда недостаточно стандартного кеширования по времени. Эффективно для работы с геоданными, полями с префиксами и суффиксами и т.п.
- Memcache Storage [53] — альтернатива для Memcache модуля, который обеспечивает интеграцию Drupal с Memcached для обеспечения высокой производительности. Memcache Storage имеет ряд дополнительных возможностей по сравнению с оригиналом.
- Corresponding Entity References [54] — если сущность A ссылается на сущность B, а сущность B ссылается на A, то при апдейте или удалении оригинальных сущностей связь может стать некорректной. Данный модуль решает эту проблему.
- Translation Management Tool [55] — инструментарий для перевода содержимого из разных источников, включая ручной, машинный и интеграцию с любыми сервисами перевода.
- Drupal Issue Tracking [56] — расширение для Chrome, которое позволяет мониторить статус любых тикетов (issue) с Drupal.org.
- Apido [57] — пользовательский скрипт (userscript) для Chrome/Opera/Firefox, который подсвечивает переменные и фигурные скобки при отображении кода на api.drupal.org и drupalcode.org.
- Pushbullet API [58] — отправка Push-уведомлений на мобильные устройства, а также в ваши браузеры (статья [59]).
- Machine Name [60] — добавляет поле для хранения машинного имени (хранит букво-цифровое (alphanumeric) значение, которое должно быть уникальным и крайне редко изменяться (статья [61]).
Пишете статьи о Drupal на благо сообщества? Пожалуйста, свяжитесь с нами: Олег Кот [62], Катя Маршалкина [63].
Автор: k0teg
Источник [64]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/cms/82422
Ссылки в тексте:
[1] Bootstrap + Drupal 7: быстрый экскурс для начинающих: http://petu.ru/drupal/bootstrap-drupal-7-bystryy-ekskurs
[2] hook_module_implements_alter(): http://sanchiz.net/blog/drupal-7-change-hook-order
[3] джентльменским набором модулей: http://xandeadx.ru/blog/drupal/817
[4] Управление конфигурациями в Drupal 8, обзор для разработчиков: http://habrahabr.ru/post/248629/
[5] Change records: https://www.drupal.org/node/2407153
[6] Микросовет — global $user в функциях: http://graker.ru/news/2015/01/30/mikrosovet_global_user_v_funktsiyakh
[7] изменяем заголовок и перенаправление: http://www.symphonythemes.com/drupal-blog/how-customize-drupal-contact-form-form-title-result-redirect
[8] шаблоны полей в Display Suite: http://webwash.net/tutorials/how-use-display-suite-field-templates-drupal-7
[9] Workbench: https://www.drupal.org/project/workbench
[10] Add a New Moderation State Tab to Workbench: https://www.ostraining.com/blog/drupal/workbench-tab/
[11] 5 антиспам-модулей: http://www.annertech.com/blog/5-best-modules-stop-spam-drupal-website
[12] Simple Anti-Spam: http://xandeadx.ru/blog/drupal/619
[13] о Javascript и Drupal behaviors: https://www.lullabot.com/blog/article/understanding-javascript-behaviors-drupal
[14] 1: http://codekarate.com/blog/introduction-git-part-1
[15] 2: http://codekarate.com/blog/introduction-git-part-2
[16] 3: http://codekarate.com/blog/introduction-git-part-3
[17] 4: http://codekarate.com/blog/introduction-git-part-4
[18] 5: http://codekarate.com/blog/introduction-git-part-5
[19] “Git setup with hook for post-receive”: http://drupaldump.com/git-setup-hook-post-receive
[20] “Multiple git remotes, the --depth parameter and repo size”: http://dcycleproject.org/blog/87/multiple-git-remotes-depth-parameter-and-repo-size
[21] “Rapid Drupal Scaffolding with Yeoman”: https://echo.co/blog/rapid-drupal-scaffolding-yeoman
[22] Yeoman Generator: http://yeoman.io/generators/
[23] “Creating Custom Ctools Layout Plugins with Yeoman”: http://atendesigngroup.com/blog/creating-custom-ctools-layout-plugins-yeoman
[24] “Yo Hedley!”: http://www.gizra.com/content/yo-hedley/
[25] Features: https://www.drupal.org/project/features
[26] “Code Management in Drupal 7 using Features, Ctools, and Panels”: https://echo.co/blog/code-management-drupal-7-using-features-ctools-and-panels
[27] http://drushcommands.com/: http://drushcommands.com
[28] http://docs.drush.org/en/master/: http://docs.drush.org/en/master/
[29] запускать автоматически через Grunt: http://kevinquillen.com/grunt/2015/02/04/using-drush-with-grunt/
[30] Углубляемся в дебри ядра: http://www.mediacurrent.com/blog/why-isnt-my-page-caching
[31] можно почитать у 2bits: http://2bits.com/articles/beware-drupal-modules-disable-page-cache.html
[32] Как использовать свою функцию темизации для формы?: http://drupal.stackexchange.com/questions/312/how-to-a-use-a-template-file-to-theme-a-form
[33] 6 необходимых шагов, чтобы стать разработчиком Drupal 8: http://www.webomelette.com/6-steps-new-drupal-8-developers
[34] базовый курс: http://capgemini.github.io/drupal/drupal-8-in-2-steps/
[35] “Gettin` Twiggy”: http://drupalwatchdog.com/volume-4/issue-1/gettin-twiggy-with-it
[36] очередная бета (шестая) Drupal 8: https://www.drupal.org/node/2415675
[37] нет: https://www.drupal.org/project/issues/search/drupal%3Fproject_issue_followers%3D%26status%255B%255D%3D1%26status%255B%255D%3D13%26status%255B%255D%3D8%26status%255B%255D%3D14%26status%255B%255D%3D4%26categories%255B%255D%3D1%26categories%255B%255D%3D2%26version%255B%255D%3D8.x%26issue_tags_op%3D%253D%26issue_tags%3DD8%2Bupgrade%2Bpath
[38] полей: http://www.webomelette.com/creating-custom-views-field-drupal-8
[39] фильтров: http://www.webomelette.com/creating-custom-views-filter-drupal-8
[40] Drupal 8 multilingual tidbits: http://hojtsy.hu/multilingual-drupal8
[41] Content translation: http://hojtsy.hu/blog/2015-jan-27/drupal-8-multilingual-tidbits-17-content-translation-basics
[42] Drupal Watchdog: http://drupalwatchdog.com/
[43] созданию интерактивных туров: http://drupalwatchdog.com/volume-4/issue-1/touring-drupal
[44] “How does Drupal use these different terms? Route, Path, URL, URI, Link, Menu item“: http://kattekrab.net/route-path-link
[45] Заметка о том: http://www.lakshminp.com/annotations-in-drupal-8/
[46] про использование Drupal в Умном Доме: http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone/blog/2014/12/29/basic-iot-home-automation-using-a-beaglebone-black-and-drupal
[47] Chx: http://www.drupal4hu.com/node/419
[48] очень его любит: http://flickrhivemind.net/Tags/chxcannotbedistracted/Interesting
[49] DrupalCon Latin America: https://latinamerica2015.drupal.org/program/schedule/tuesday
[50] состав участников Друпалконов в 2014 году: https://assoc.drupal.org/blog/leighc/infographic-who-attends-drupalcon
[51] Views Fast Field: https://www.drupal.org/project/views_fast_field
[52] Views Accelerator: https://www.drupal.org/project/views_accelerator
[53] Memcache Storage: https://www.drupal.org/project/memcache_storage
[54] Corresponding Entity References: https://www.drupal.org/project/cer
[55] Translation Management Tool: https://www.drupal.org/project/tmgmt
[56] Drupal Issue Tracking: https://chrome.google.com/webstore/detail/drupal-issue-tracking/gigmieclehjecoglmlmgokcekfklonmb
[57] Apido: https://www.drupal.org/project/apido
[58] Pushbullet API: https://www.drupal.org/project/pushbullet
[59] статья: http://niklan.net/blog/70
[60] Machine Name: https://www.drupal.org/project/machine_name
[61] статья: http://webwash.net/tutorials/how-add-machine-names-content-types-drupal-7
[62] Олег Кот: mailto:Aleh_Kot@epam.com
[63] Катя Маршалкина: mailto:marshalkina@licel.ru
[64] Источник: http://habrahabr.ru/post/250223/
Нажмите здесь для печати.