SlideShare a Scribd company logo
goo.gl/iczYR




  Создание
custom модуля
 yulia.tsyba@volcanoideas.com
2/21

1. Структура модуля
2. Способы создания
3. Стандарты кодирования
4. Настройка редактора, систем управления
версиями файлов для автоматического
контроля стандартов.
5. Подготовка к публикации модуля
на drupal.org
3/21
ИДЕЯ        ПОИСК



СОЗДАНИЕ    АВТО
 МОДУЛЯ


           ПРОВЕРКА
 РУЧНОЕ
             КОДА



               SANDBOX
1. Структура модуля                         4/21

                                 css
                      .install
 .module     .info


                                            PHP
                                       js
1.                5/21
modulename.info
1.                   6/21
modulename.install
2. Создание модуля   7/21
2.   8/21
2. Способы создания                                  9/21




    Module Builder          +       DRUSH
  $ drush mbdl
  $ drush mb-list
  $ drush mb my_module menu --name="My module" --dep=
  “views“ --write
  $ drush mb my_module --name="My module" --noi --
  write --yes
3. Стандарты кодирования                   10/21




      http://drupal.org/coding-standards
3. Стандарты кодирования                     11/21




 Настрой свою IDE!


            http://drupal.org/node/723470


            http://drupal.org/node/1019816
4. Coder   12/21
4. DRUPAL CODE SNIFFER                                            13/21


          PHP_CodeSniffer + Drupal Coding Standards
$ phpcs /path/to/code/my_dir

$ phpcs --standard=Drupal --report=xml --report-file=rep.xml --
extensions=php,module,inc,install /path/to/test

$ alias drupalcs='phpcs --standard=/path/to/drupalcs/Drupal/ruleset.
xml --extensions=php,module,inc,install,test,profile,theme'

$ drupalcs /path/to/test > log.log
4. DRUPAL CODE SNIFFER                                                                                                                                   14/21

FILE: ...unk/sites/all/modules/contrib/coder/coder_review/coder_review.
drush.inc
--------------------------------------------------------------------------------
FOUND 14 ERROR(S) AFFECTING 14 LINE(S)
--------------------------------------------------------------------------------
  22 | ERROR | String concat is not required here; use a single string instead
  25 | ERROR | String concat is not required here; use a single string instead
  26 | ERROR | String concat is not required here; use a single string instead
  53 | ERROR | Missing function doc comment
  85 | ERROR | BREAK statements must be followed by a single blank line
  93 | ERROR | BREAK statements must be followed by a single blank line
  98 | ERROR | BREAK statements must be followed by a single blank line
 108 | ERROR | If the line declaring an array spans longer than 80 characters,
      |           | each element should be broken into its own line
 247 | ERROR | Concat operator must be surrounded by spaces
.......................................................................................................................................................
--------------------------------------------------------------------------------
4. PAREVIEW.SH                                                     15/21

 Install:
git clone --branch 7.x-1.x http://git.drupal.org/project/pareviewsh.git
sudo ln -s ${HOME}/${DDD}/pareviewsh/pareview.sh /usr/local/bin

Usage:
cd /path/to/drupal
pareview.sh GIT-URL [BRANCH]
pareview.sh DIR-PATH

Online review:
http://ventral.org/pareview
4. SVN PRE-COMMIT REVIEW                                16/21

Копируем файл шаблона хука:
  cd $REPO/hooks/
  mv pre-commit.tmpl pre-commit
Редактируем:
  #!/bin/sh
  REPOS="$1"
  TXN="$2"
  /usr/bin/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN"
--standard=Drupal >&2 || exit 1
  exit 0
Даем права на выполнение:
  chmod +x pre-commit
4. SVN PRE-COMMIT REVIEW       17/21

Результаты:




И уже знакомый вывод ошибок:
4. GIT PRE-COMMIT REVIEW                            18/21

phpcs-pre-commit
git clone https://github.com/s0enke/git-hooks.git
Копируем файл шаблона хука:
.git/hooks/pre-commit
Редактируем:
PHPCS_BIN = /usr/bin/phpcs
PHPCS_CODING_STANDARD = Drupal
5. Публикация модуля на drupal.org                          19/21
1. http://drupal.org/user таб Edit->Git access (Desired Git
username)
2. http://drupal.org/node/add/project-project можно создать проект
  - Project categories (модуль, тема, ... ; Категория - Content,
Mobile, ...)
 - Vocabularies (Maintenance status, Development status)
 - Project information (title, description)
 - Project resources
 - Revision information
3. release-ready
4. Project application checklist
5. Открыть новый вопрос в http://drupal.
org/project/issues/projectapplications
5. Публикация модуля на drupal.org                             20/21
 Review bonus

- Issues for Drupal.org Project applications ( выбрать >= 3)
- Reviews of other projects: и дать прямую ссылку на
комментарии
- Issue tags: PAReview: review bonus
Вопросы




yulia.tsyba

yulia.tsyba@volcanoideas.com

More Related Content

What's hot (13)

PPTX
Как быть с большими сайтами на Word press
vovasik
 
PPT
Drupal -organizaciya_razrabotki
drupalconf
 
PPT
Drupal Do
Inna Tuyeva
 
PPTX
Bootstrap 3. Адаптивная верстка для WordPress
Igor Sazonov
 
PDF
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
2ГИС Технологии
 
PPTX
Bootstrap
Timofey Chukleev
 
PPT
Drupal Vs Other
Andrii Lundiak
 
PDF
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Andrey Taritsyn
 
PDF
02 - Web-технологии. Web-клиенты
Roman Brovko
 
PDF
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Yandex
 
PDF
Василий Устинов - Drupal + Drush
DrupalSPB
 
PPTX
Создаем Drupal дистрибутив: от идеи до сопровождения.
DrupalForumZP2012
 
PDF
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex
 
Как быть с большими сайтами на Word press
vovasik
 
Drupal -organizaciya_razrabotki
drupalconf
 
Drupal Do
Inna Tuyeva
 
Bootstrap 3. Адаптивная верстка для WordPress
Igor Sazonov
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
2ГИС Технологии
 
Bootstrap
Timofey Chukleev
 
Drupal Vs Other
Andrii Lundiak
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Andrey Taritsyn
 
02 - Web-технологии. Web-клиенты
Roman Brovko
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Yandex
 
Василий Устинов - Drupal + Drush
DrupalSPB
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
DrupalForumZP2012
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex
 

Viewers also liked (8)

PPT
Ilmu warren buffett
Endang Prijatna
 
PPTX
F.study bin h
Amir Salah Aldeen (Tsm)
 
PDF
Kernel-Based_Retrieval_of_Atmospheric_Profiles_from_IASI_Data.pdf
grssieee
 
PPTX
operations strategy_1
midhunraj007
 
PPT
5_IGARSS-2011-Joint-TSM-TDM-Mission-Planning-System_final.ppt
grssieee
 
PPTX
FR4.L10.2: A MICROWAVE SCATTERING MODEL OF VEGETATED SURFACES BASED ON BOR/DD...
grssieee
 
PPT
FR2.L09 - PROCESSING AND ANALYSIS OF AIRBORNE SYNTHETIC APERTURE RADAR IMAGER...
grssieee
 
DOCX
Các vấn đề xuất nhập khẩu việt nam
Tantrung Nguyenquoc
 
Ilmu warren buffett
Endang Prijatna
 
Kernel-Based_Retrieval_of_Atmospheric_Profiles_from_IASI_Data.pdf
grssieee
 
operations strategy_1
midhunraj007
 
5_IGARSS-2011-Joint-TSM-TDM-Mission-Planning-System_final.ppt
grssieee
 
FR4.L10.2: A MICROWAVE SCATTERING MODEL OF VEGETATED SURFACES BASED ON BOR/DD...
grssieee
 
FR2.L09 - PROCESSING AND ANALYSIS OF AIRBORNE SYNTHETIC APERTURE RADAR IMAGER...
grssieee
 
Các vấn đề xuất nhập khẩu việt nam
Tantrung Nguyenquoc
 
Ad

Similar to Creating custom module (20)

PDF
Yaremchuk - Drupal CodeLobster
Andrii Podanenko
 
PDF
Непрерывная интеграция - шаг к непрерывному деплойменту
Игорь Родионов
 
PPT
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 
PPT
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
 
PDF
Drupal code sprint для новичков
Ovadiah Myrgorod
 
PPT
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest
 
PDF
сравнение Drupal и 1с битрикс
Andrii Podanenko
 
PDF
Drupal 8: Теперь со вкусом Symfony
Kate Marshalkina
 
PPT
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
PVasili
 
PDF
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
PPT
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
 
PPTX
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
LEDC 2016
 
PPTX
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Alex Barkov
 
ODP
Создаем Drupal дистрибутив: от идеи до сопровождения
Ovadiah Myrgorod
 
PPT
Drupal conf2011 2_kolosov
Алексей Колосов
 
PPT
Инструментарий начинающего разработчика Drupal.
PVasili
 
PDF
Чингис Саднанов. Drupal как платформа
i20 Group
 
PPT
Работа с материалами (nodes) в Drupal 7
Eugene Fidelin
 
PPTX
Drupal: система для быстрой и комфортной разработки web-сайтов
Alex Barkov
 
PDF
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
 
Yaremchuk - Drupal CodeLobster
Andrii Podanenko
 
Непрерывная интеграция - шаг к непрерывному деплойменту
Игорь Родионов
 
Easy authcache 2 кеширование для pro родионов игорь
drupalconf
 
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
 
Drupal code sprint для новичков
Ovadiah Myrgorod
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest
 
сравнение Drupal и 1с битрикс
Andrii Podanenko
 
Drupal 8: Теперь со вкусом Symfony
Kate Marshalkina
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
PVasili
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
DrupalCamp MSK
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
 
Алексей Горобец - Building Drupal Distributions. Why? When? and How?
LEDC 2016
 
Drupal Camp Kyiv 2013. Удобная разработка drupal проекта. Полезные модули.
Alex Barkov
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Ovadiah Myrgorod
 
Drupal conf2011 2_kolosov
Алексей Колосов
 
Инструментарий начинающего разработчика Drupal.
PVasili
 
Чингис Саднанов. Drupal как платформа
i20 Group
 
Работа с материалами (nodes) в Drupal 7
Eugene Fidelin
 
Drupal: система для быстрой и комфортной разработки web-сайтов
Alex Barkov
 
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
 
Ad

Creating custom module

  • 2. 2/21 1. Структура модуля 2. Способы создания 3. Стандарты кодирования 4. Настройка редактора, систем управления версиями файлов для автоматического контроля стандартов. 5. Подготовка к публикации модуля на drupal.org
  • 3. 3/21 ИДЕЯ ПОИСК СОЗДАНИЕ АВТО МОДУЛЯ ПРОВЕРКА РУЧНОЕ КОДА SANDBOX
  • 4. 1. Структура модуля 4/21 css .install .module .info PHP js
  • 5. 1. 5/21 modulename.info
  • 6. 1. 6/21 modulename.install
  • 8. 2. 8/21
  • 9. 2. Способы создания 9/21 Module Builder + DRUSH $ drush mbdl $ drush mb-list $ drush mb my_module menu --name="My module" --dep= “views“ --write $ drush mb my_module --name="My module" --noi -- write --yes
  • 10. 3. Стандарты кодирования 10/21 http://drupal.org/coding-standards
  • 11. 3. Стандарты кодирования 11/21 Настрой свою IDE! http://drupal.org/node/723470 http://drupal.org/node/1019816
  • 12. 4. Coder 12/21
  • 13. 4. DRUPAL CODE SNIFFER 13/21 PHP_CodeSniffer + Drupal Coding Standards $ phpcs /path/to/code/my_dir $ phpcs --standard=Drupal --report=xml --report-file=rep.xml -- extensions=php,module,inc,install /path/to/test $ alias drupalcs='phpcs --standard=/path/to/drupalcs/Drupal/ruleset. xml --extensions=php,module,inc,install,test,profile,theme' $ drupalcs /path/to/test > log.log
  • 14. 4. DRUPAL CODE SNIFFER 14/21 FILE: ...unk/sites/all/modules/contrib/coder/coder_review/coder_review. drush.inc -------------------------------------------------------------------------------- FOUND 14 ERROR(S) AFFECTING 14 LINE(S) -------------------------------------------------------------------------------- 22 | ERROR | String concat is not required here; use a single string instead 25 | ERROR | String concat is not required here; use a single string instead 26 | ERROR | String concat is not required here; use a single string instead 53 | ERROR | Missing function doc comment 85 | ERROR | BREAK statements must be followed by a single blank line 93 | ERROR | BREAK statements must be followed by a single blank line 98 | ERROR | BREAK statements must be followed by a single blank line 108 | ERROR | If the line declaring an array spans longer than 80 characters, | | each element should be broken into its own line 247 | ERROR | Concat operator must be surrounded by spaces ....................................................................................................................................................... --------------------------------------------------------------------------------
  • 15. 4. PAREVIEW.SH 15/21 Install: git clone --branch 7.x-1.x http://git.drupal.org/project/pareviewsh.git sudo ln -s ${HOME}/${DDD}/pareviewsh/pareview.sh /usr/local/bin Usage: cd /path/to/drupal pareview.sh GIT-URL [BRANCH] pareview.sh DIR-PATH Online review: http://ventral.org/pareview
  • 16. 4. SVN PRE-COMMIT REVIEW 16/21 Копируем файл шаблона хука: cd $REPO/hooks/ mv pre-commit.tmpl pre-commit Редактируем: #!/bin/sh REPOS="$1" TXN="$2" /usr/bin/scripts/phpcs-svn-pre-commit "$REPOS" -t "$TXN" --standard=Drupal >&2 || exit 1 exit 0 Даем права на выполнение: chmod +x pre-commit
  • 17. 4. SVN PRE-COMMIT REVIEW 17/21 Результаты: И уже знакомый вывод ошибок:
  • 18. 4. GIT PRE-COMMIT REVIEW 18/21 phpcs-pre-commit git clone https://github.com/s0enke/git-hooks.git Копируем файл шаблона хука: .git/hooks/pre-commit Редактируем: PHPCS_BIN = /usr/bin/phpcs PHPCS_CODING_STANDARD = Drupal
  • 19. 5. Публикация модуля на drupal.org 19/21 1. http://drupal.org/user таб Edit->Git access (Desired Git username) 2. http://drupal.org/node/add/project-project можно создать проект - Project categories (модуль, тема, ... ; Категория - Content, Mobile, ...) - Vocabularies (Maintenance status, Development status) - Project information (title, description) - Project resources - Revision information 3. release-ready 4. Project application checklist 5. Открыть новый вопрос в http://drupal. org/project/issues/projectapplications
  • 20. 5. Публикация модуля на drupal.org 20/21 Review bonus - Issues for Drupal.org Project applications ( выбрать >= 3) - Reviews of other projects: и дать прямую ссылку на комментарии - Issue tags: PAReview: review bonus