SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
Что нам стоит сайт построить?


Рекомендации начинающим девелоперам
    по разработке сайтов на базе CMS
                 Drupal.
Gold Sponsor of
DrupalCamp Kyiv 2011
Silver Sponsors of
DrupalCamp Kyiv 2011
Не правильное размещение файлов темы и модулей будущего
                         сайта




          а) Удобство для других разработчиков

     б) Удобство в дальнейшем сопровождении сайта

            в) Удобство при обновлении кода

             г) Файлы как лицо исполнителя
Общие правила написания качественного кода
1. Стараться не использовать кирилицу в коде без явной на то необходимости.
2. Обязательное четкое разделение функций выполняющих получение данных,
   обрабатывающих данные, выводящих данные конечному пользователю.
а) Функция выполняющая запрос в БД и возвращающая обработанный массив или объект с результатами
    (в ней желательно предусмотреть параметры + static);

б) Функция обрабатывающая массив и готовящая данные для вывода пользователю (обычно это
    preprocess функция)

в) Функция выводящая обработанные данные theme_ или шаблон tpl.php



3. Использование API системы, в Друпал можно прицепиться фактически к любому
    процессу.
a) hook_nodeapi

б) hook_form_alter (и все его производные)

в) hook_menu_alter
Форк модулей, когда он бывает необходим?

Форк (англ. fork — вилка) — процесс расщепления программного проекта (обычно
      свободного) на два отдельных проекта (ветки). При этом каждая из веток
                развивается независимо от другой, разными авторами.


1. Модуль подходит нам менее чем на 50% - проще написать свой.
2. Модуль удовлетворяет наши потребности более чем на 50%, но в нем
   не предусмотрены первоначальными разработчиками хуки или какое
   либо АПИ. Либо модуль более не поддерживается.
В этом случае возможны 2 варианта:
а) Писать функционал в том же модуле просто расширяя его;
б) Писать свой модуль перенося из исходника функции заменяя их
   названия
Стандарты темизации и написания собственных модулей
                 1. Файлы и папки должны быть структурированы CSS + JS
                 2. Файлы должны подключаться с использованием
                    стандартных функций друпала.
                                      а) drupal_add_js(); drupal_add_css();




                 Зависимость от решения конкретной задачи в проекте.
                                 Использование бихевиоров при создании JS

                      3. Разделение файлов админской, рабочей и
                   темизирущей области модуля.
Стандарты темизации и написания собственных модулей
1. На сайт должен быть загружен favicon для темы сайта и для админской
   темы.
2. Для страниц администрирования и редактирования материалов должна
   быть установлена специальная тема (удобная для администрирования),
   но не тема проекта.
3. Верстка должна быть кроссбраузерная. Обязательно поддерживаются
   (по убыванию важности)
4. Использовать спрайты для увеличения скорости загрузки страниц и
   предотвращения нежелательных эффектов, связанных с подгрузкой
   графики. Группировать изображения в зависимости от их появления на
   страницах.
5. Внешний вид сайта не должен ломаться при увеличении или уменьшении
   размера текста в браузере (как минимум на 2 позии).
6. Логотип сайта желательно реализовывать как блок и должен быть
   ссылкой, которая ведет на главную страницу.
7. Не должно быть неприятных (побочных) эффектов во время загрузки
   страницы.
Стандарты темизации и написания собственных модулей
                     Верстка сайта должна быть валидна.
 Исключение могут составить непринципиальные моменты, от которых можно
    отказаться в пользу SEO или если не валидность вызвана особенностью
                                функционала.
       Cайт необходимо проверять на валидностьhttp://validator.w3.org.
Для проверки всего сайта можно использовать http://htmlhelp.com/tools/validator.
Удобная админка для пользователя
1. Создание качественной, удобной конечному потребителю админки.
а) Чем понятнее и интуитивнее будет админская часть для конечного пользователя, тем
   проще потом сдавать проект и меньше потратится времени на обучение заказчика или
   клиента.

б) Views + Bulck operation:
Удобная админка для пользователя

в) Роль редактора контента или почему не надо давать секретарше пароль
   суперадмина.
г) Вьюс и блоки:
- Для реализации страниц вьюсов (листинг нодов) мы не используем вьюс
   напрямую, вместо этого создается страница (node type Page), а вьюха делается
   блоком, который потом помещается на эту страницу. Вступительный текст
   реализуется как тело страницы, а не как заголовок вьюхи, также заголовок
   страницы, заголовок окна, мета теги и все остальное что важно для страницы,
   задается в ноде страницы.
Причины такого подхода:
1. Редактору сложно разбираться в админке вьюсов, все параметры страницы
    проще делать в знакомом интерфейсе нода Страницы.
2. Не возможно разделить доступ к отдельным частям вьюсов, поэтому приходится
    запрещать доступ к вьюсам.
3. Некоторые параметры страницы такие как Page Title не возмжно редактировать
    для вьюсов
Удобная админка для пользователя

2. Почему блоки?
- Все основные данные находятся в одном месте и пользователю не надо
   запоминать что настройка лого и иконок это «admin/build/themes/settings/global»,
   а футер меседжа и т. д. это по admin/settings/site-information. Вполне
   самодостаточно что управление всем этим находится - /admin/build/block


3. Обязательно создается роль Editor (редактор), которая будет выдана клиенту
   для управления сайтом. Этой роли разрешено делать все операции с нодами,
   блоками, меню ( только реально используемые меню), пользователями сайта.
Конфигурационные настройки, менющие структуру данных или поведение сайта
   этой роли недоступны.


- Меньше прав - легче саппортить
Производительность
1. Перед запуском сайта, все неиспользуемые модули, а так же служебные
   модули (которые используются для разработки) необходимо отключить.
2.В процессе разработки сайта необходимо анализировать какие
   используются вьюхи и какие пишутся собственные SQL запросы и в
   соответствии с этим создавать индексы по нужным полям. Создание
   индексов оформлять как update к модулю проекта.
3. ПОСЛЕ запуска сайта (т.е. на живом сервере) необходимо включить все
   возможные режимы кеширования:
- Кеширование блоков
- Кеширование views (в завиcимости от ситуации и возможности)
- Сжатие CSS и JavaScript
- Кеш страниц
Спасибо за внимание
Юрий Глушков — ARDAS GROUP
г.Днепропетровск.



Связь:
Skype: yuriglu
ICQ: 562-904-730
Тел: (066) 048-8485, (096) 186-7634
E-mail: yury.glushkov@ardas.dp.ua, glyuri@yandex.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его примененияMedia Gorod
 
Meet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovMeet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovAmasty
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1Natalia Odegova
 
Конвейерное производство приложений
Конвейерное производство приложенийКонвейерное производство приложений
Конвейерное производство приложенийRambler Android
 
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфікаОлена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфікаLEDC 2016
 
Panels
PanelsPanels
Panelszabej
 
Trening modul2-conf3-tema5
Trening modul2-conf3-tema5Trening modul2-conf3-tema5
Trening modul2-conf3-tema5olgaoov
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10OdessaFrontend
 
Программирование в Joomla - применение глобальных переменных для отображения ...
Программирование в Joomla - применение глобальных переменных для отображения ...Программирование в Joomla - применение глобальных переменных для отображения ...
Программирование в Joomla - применение глобальных переменных для отображения ...Joomla Secrets
 
Веб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerВеб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerArturDr
 
Eleanor CMS
Eleanor CMSEleanor CMS
Eleanor CMSSC3402
 
Создание и продвижение интернет ресурса общественной организации Азербайджа...
Создание и продвижение интернет ресурса общественной организации Азербайджа...Создание и продвижение интернет ресурса общественной организации Азербайджа...
Создание и продвижение интернет ресурса общественной организации Азербайджа...Gamid Mamedov
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...WDDay
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облакеAlexander Babich
 
Seo Drupal 6
Seo Drupal 6Seo Drupal 6
Seo Drupal 6andreyjw
 

Was ist angesagt? (18)

Drupal и возможности его применения
Drupal и возможности его примененияDrupal и возможности его применения
Drupal и возможности его применения
 
Meet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander KaigorodovMeet Magento Belarus - Alexander Kaigorodov
Meet Magento Belarus - Alexander Kaigorodov
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1
 
Конвейерное производство приложений
Конвейерное производство приложенийКонвейерное производство приложений
Конвейерное производство приложений
 
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфікаОлена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка
Олена Ольховик — Від frontend розробки до Drupal-темізації. Основи і специфіка
 
Panels
PanelsPanels
Panels
 
Trening modul2-conf3-tema5
Trening modul2-conf3-tema5Trening modul2-conf3-tema5
Trening modul2-conf3-tema5
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
 
Программирование в Joomla - применение глобальных переменных для отображения ...
Программирование в Joomla - применение глобальных переменных для отображения ...Программирование в Joomla - применение глобальных переменных для отображения ...
Программирование в Joomla - применение глобальных переменных для отображения ...
 
Веб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerВеб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере Polymer
 
Eleanor CMS
Eleanor CMSEleanor CMS
Eleanor CMS
 
Bootstrap 3
Bootstrap 3Bootstrap 3
Bootstrap 3
 
Создание и продвижение интернет ресурса общественной организации Азербайджа...
Создание и продвижение интернет ресурса общественной организации Азербайджа...Создание и продвижение интернет ресурса общественной организации Азербайджа...
Создание и продвижение интернет ресурса общественной организации Азербайджа...
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
 
Drupal as service.
Drupal as service.Drupal as service.
Drupal as service.
 
Bootstrap3 basics
Bootstrap3 basicsBootstrap3 basics
Bootstrap3 basics
 
Azure - хранение данных в облаке
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
 
Seo Drupal 6
Seo Drupal 6Seo Drupal 6
Seo Drupal 6
 

Ähnlich wie Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011

Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotkidrupalconf
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработкиAnna Fedoruk
 
Joomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruJoomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruhotwebstudio.ru
 
Eleanor
EleanorEleanor
EleanorSC3402
 
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.DrupalCampDN
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Eugene Fidelin
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NETMedia Gorod
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?Oleksandr Torosh
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1Nata Koinova
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11olgaoov
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesArtur Baranok
 
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...FMTeam
 

Ähnlich wie Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011 (20)

Drupal -organizaciya_razrabotki
Drupal  -organizaciya_razrabotkiDrupal  -organizaciya_razrabotki
Drupal -organizaciya_razrabotki
 
Drupal организация разработки
Drupal   организация разработкиDrupal   организация разработки
Drupal организация разработки
 
Joomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ruJoomla (Админка) www.hotwebstudio.ru
Joomla (Админка) www.hotwebstudio.ru
 
Eleanor
EleanorEleanor
Eleanor
 
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
Фичи н-н-нада? Или почему стоит использовать модуль Features. Евгений Фиделин.
 
Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.Фичи н-н-нада? Или почему стоит использовать модуль Features.
Фичи н-н-нада? Или почему стоит использовать модуль Features.
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Text
TextText
Text
 
1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET1С-Битрикс: Управление сайтом Версия .NET
1С-Битрикс: Управление сайтом Версия .NET
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Phalcon. Что нового?
Phalcon. Что нового?Phalcon. Что нового?
Phalcon. Что нового?
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
работа с блогом1
работа с блогом1работа с блогом1
работа с блогом1
 
YaC 2013 Notes
YaC 2013 NotesYaC 2013 Notes
YaC 2013 Notes
 
Trening modul2-webinar11
Trening modul2-webinar11Trening modul2-webinar11
Trening modul2-webinar11
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
 
Компоненты 2.0
Компоненты 2.0 Компоненты 2.0
Компоненты 2.0
 
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
Шичко И. Вопросы практического применения СУБД FileMaker при решении повседне...
 

Mehr von camp_drupal_ua

Peter Lozovitsky.Money under your feet or why you have not already training i...
Peter Lozovitsky.Money under your feet or why you have not already training i...Peter Lozovitsky.Money under your feet or why you have not already training i...
Peter Lozovitsky.Money under your feet or why you have not already training i...camp_drupal_ua
 
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011camp_drupal_ua
 
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011camp_drupal_ua
 
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011camp_drupal_ua
 
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011camp_drupal_ua
 
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...camp_drupal_ua
 
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011camp_drupal_ua
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011camp_drupal_ua
 
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011camp_drupal_ua
 
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011camp_drupal_ua
 
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...camp_drupal_ua
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011camp_drupal_ua
 
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011camp_drupal_ua
 
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011camp_drupal_ua
 
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011camp_drupal_ua
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011camp_drupal_ua
 
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011camp_drupal_ua
 
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011camp_drupal_ua
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011camp_drupal_ua
 
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011camp_drupal_ua
 

Mehr von camp_drupal_ua (20)

Peter Lozovitsky.Money under your feet or why you have not already training i...
Peter Lozovitsky.Money under your feet or why you have not already training i...Peter Lozovitsky.Money under your feet or why you have not already training i...
Peter Lozovitsky.Money under your feet or why you have not already training i...
 
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
Alexandr Shvets.Trends in drupal.DrupalCamp Kyiv 2011
 
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
Dmitry Kostyuk.Cloud hosting for drupal.DrupalCamp Kyiv 2011
 
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
Pavel Makhrinsky.Field API.DrupalCamp Kyiv 2011
 
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
 
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
Vadim Mirgorod.Best practices for cross browser compatibility of drupal websi...
 
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
Sergey Korzh.CCK 3 presentation.DrupalCamp Kyiv 2011
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
 
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
Artem Pankov.Eclipse.DrupalCamp Kyiv 2011
 
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
Vasily Yaremchuk.Single page website.DrupalCamp Kiev 2011
 
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
Anton Paschenko.Geolocation with Apach Solr using search API.DrupalCamp Kyiv ...
 
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
Sergei Stryukov.Drush.Why it should be used.DrupalCamp Kyiv 2011
 
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
 
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
Pavel Prischepa.node load without-restrictions.DrupalCamp Kiev 2011
 
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
Eugene Poltorakov.HTML 5 and drupal.DrupalCamp Kiev 2011
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
 
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
Viktor Levandovsky.Why drupal.DrupalCamp Kyiv 2011
 
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
Petrov Olexandr.Varnish and drupal.DrupalCamp Kyiv 2011
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
 
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
Nickolay Shmalenuk.Render api eng.DrupalCamp Kyiv 2011
 

Kürzlich hochgeladen (9)

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 

Yury Glushkov.What should we build a website.Drupal Camp Kyiv 2011

  • 1. Что нам стоит сайт построить? Рекомендации начинающим девелоперам по разработке сайтов на базе CMS Drupal.
  • 4. Не правильное размещение файлов темы и модулей будущего сайта а) Удобство для других разработчиков б) Удобство в дальнейшем сопровождении сайта в) Удобство при обновлении кода г) Файлы как лицо исполнителя
  • 5. Общие правила написания качественного кода 1. Стараться не использовать кирилицу в коде без явной на то необходимости. 2. Обязательное четкое разделение функций выполняющих получение данных, обрабатывающих данные, выводящих данные конечному пользователю. а) Функция выполняющая запрос в БД и возвращающая обработанный массив или объект с результатами (в ней желательно предусмотреть параметры + static); б) Функция обрабатывающая массив и готовящая данные для вывода пользователю (обычно это preprocess функция) в) Функция выводящая обработанные данные theme_ или шаблон tpl.php 3. Использование API системы, в Друпал можно прицепиться фактически к любому процессу. a) hook_nodeapi б) hook_form_alter (и все его производные) в) hook_menu_alter
  • 6. Форк модулей, когда он бывает необходим? Форк (англ. fork — вилка) — процесс расщепления программного проекта (обычно свободного) на два отдельных проекта (ветки). При этом каждая из веток развивается независимо от другой, разными авторами. 1. Модуль подходит нам менее чем на 50% - проще написать свой. 2. Модуль удовлетворяет наши потребности более чем на 50%, но в нем не предусмотрены первоначальными разработчиками хуки или какое либо АПИ. Либо модуль более не поддерживается. В этом случае возможны 2 варианта: а) Писать функционал в том же модуле просто расширяя его; б) Писать свой модуль перенося из исходника функции заменяя их названия
  • 7. Стандарты темизации и написания собственных модулей 1. Файлы и папки должны быть структурированы CSS + JS 2. Файлы должны подключаться с использованием стандартных функций друпала. а) drupal_add_js(); drupal_add_css(); Зависимость от решения конкретной задачи в проекте. Использование бихевиоров при создании JS 3. Разделение файлов админской, рабочей и темизирущей области модуля.
  • 8. Стандарты темизации и написания собственных модулей 1. На сайт должен быть загружен favicon для темы сайта и для админской темы. 2. Для страниц администрирования и редактирования материалов должна быть установлена специальная тема (удобная для администрирования), но не тема проекта. 3. Верстка должна быть кроссбраузерная. Обязательно поддерживаются (по убыванию важности) 4. Использовать спрайты для увеличения скорости загрузки страниц и предотвращения нежелательных эффектов, связанных с подгрузкой графики. Группировать изображения в зависимости от их появления на страницах. 5. Внешний вид сайта не должен ломаться при увеличении или уменьшении размера текста в браузере (как минимум на 2 позии). 6. Логотип сайта желательно реализовывать как блок и должен быть ссылкой, которая ведет на главную страницу. 7. Не должно быть неприятных (побочных) эффектов во время загрузки страницы.
  • 9. Стандарты темизации и написания собственных модулей Верстка сайта должна быть валидна. Исключение могут составить непринципиальные моменты, от которых можно отказаться в пользу SEO или если не валидность вызвана особенностью функционала. Cайт необходимо проверять на валидностьhttp://validator.w3.org. Для проверки всего сайта можно использовать http://htmlhelp.com/tools/validator.
  • 10. Удобная админка для пользователя 1. Создание качественной, удобной конечному потребителю админки. а) Чем понятнее и интуитивнее будет админская часть для конечного пользователя, тем проще потом сдавать проект и меньше потратится времени на обучение заказчика или клиента. б) Views + Bulck operation:
  • 11. Удобная админка для пользователя в) Роль редактора контента или почему не надо давать секретарше пароль суперадмина. г) Вьюс и блоки: - Для реализации страниц вьюсов (листинг нодов) мы не используем вьюс напрямую, вместо этого создается страница (node type Page), а вьюха делается блоком, который потом помещается на эту страницу. Вступительный текст реализуется как тело страницы, а не как заголовок вьюхи, также заголовок страницы, заголовок окна, мета теги и все остальное что важно для страницы, задается в ноде страницы. Причины такого подхода: 1. Редактору сложно разбираться в админке вьюсов, все параметры страницы проще делать в знакомом интерфейсе нода Страницы. 2. Не возможно разделить доступ к отдельным частям вьюсов, поэтому приходится запрещать доступ к вьюсам. 3. Некоторые параметры страницы такие как Page Title не возмжно редактировать для вьюсов
  • 12. Удобная админка для пользователя 2. Почему блоки? - Все основные данные находятся в одном месте и пользователю не надо запоминать что настройка лого и иконок это «admin/build/themes/settings/global», а футер меседжа и т. д. это по admin/settings/site-information. Вполне самодостаточно что управление всем этим находится - /admin/build/block 3. Обязательно создается роль Editor (редактор), которая будет выдана клиенту для управления сайтом. Этой роли разрешено делать все операции с нодами, блоками, меню ( только реально используемые меню), пользователями сайта. Конфигурационные настройки, менющие структуру данных или поведение сайта этой роли недоступны. - Меньше прав - легче саппортить
  • 13. Производительность 1. Перед запуском сайта, все неиспользуемые модули, а так же служебные модули (которые используются для разработки) необходимо отключить. 2.В процессе разработки сайта необходимо анализировать какие используются вьюхи и какие пишутся собственные SQL запросы и в соответствии с этим создавать индексы по нужным полям. Создание индексов оформлять как update к модулю проекта. 3. ПОСЛЕ запуска сайта (т.е. на живом сервере) необходимо включить все возможные режимы кеширования: - Кеширование блоков - Кеширование views (в завиcимости от ситуации и возможности) - Сжатие CSS и JavaScript - Кеш страниц
  • 14. Спасибо за внимание Юрий Глушков — ARDAS GROUP г.Днепропетровск. Связь: Skype: yuriglu ICQ: 562-904-730 Тел: (066) 048-8485, (096) 186-7634 E-mail: yury.glushkov@ardas.dp.ua, glyuri@yandex.ru