Концепція Drupal

25.09.2017

Пропоную на розгляд Друпал-спільноти свій перший переклад статті з handbook drupal.org http://drupal.org/getting-started/before/overview. В цій статті описано як працює Drupal, для чого ця система застосовується, які її переваги над іншими CMS. Буду вдячна за зауваження, пропозиції, запитання і коментарі.Оригінал: http://drupal.org/getting-started/before/overview

Розуміння ідеї Drupal

„Початок - найважливіша частина роботи. Платон.”
Цей розділ містить в собі базову інформацію, яка допоможе вам зрозуміти концепцію і технології на яких базується Drupal.

Концепція Drupal

Перед тим як встановити Drupal і почати використовувати його, непогано було б зрозуміти, що собою являє Drupal, і як він працює. Цей розділ дасть вам розуміння того як функціонує Drupal зсередини, допоможе впорядкувати вже існуючі знання про Drupal і надасть змогу визначити чи підходить він для вашого проекту. Витративши час на прочитання цієї статті ви отримаєте можливість розвиватись і вдосконалюватись у вивченні цієї потужньої CMS.

Огляд Drupal

Drupal-шлях: керовані абстракції.
Ефективна веб-розробка обумовлена необхідністю забезпечення балансу гнучкості та простоти. Якщо система занадто проста, вона може бути використана тільки для простих цілей, але якщо вона буде дуже гнучка, вона може виявитися надто складною у вивченні для нових користувачів.
Drupal прагне примирити ці цілі, які суперечать одна одній, надаючи своїм користувачам інструменти, необхідні їм для того, щоб приймати свої власні рішення з управління контентом, в той же час надаючи деякі готові компоненти, щоб допомогти новачкам у їхніх починаннях. Таким чином, Drupal може бути охарактеризований одночасно, як система управління контентом (CMS) та середовище розробки веб-додатків(CMF, інша назва фреймворк)– це єдина система, яка прагне мати сильні сторони обох, уникаючи їх недоліки.
Більшість CMS схожі на іграшковий човен чи вантажівку – у них є конктретні завдання, які вони вирішуть, але в них важко додати щось своє. З іншого боку є фреймворки, які надають вам велику кількість інструментів, але для того щоб їх використовувати потрібно знати мови програмування, і мати чітке бачення самої розробки.

Drupal, схожий на конструктор Lego. Кваліфіковані розробники вже зробили будівельні блоки(у вигляді різноманітних модулів) для того щоб ви могли створити сайт, який відповідає вашим потребам, будь то сайт новин, інтернет-магазин, соціальна мережа, блоги, вікі-система, або щось інше.

Drupal в дії

Для того, щоб показати контраст між Drupal та іншими CMS розглянемо приклад сайту-новин. Наприклад, ви хочете отримати можливість розміщувати на сайті новини, а на головній сторінці виводити блок з 5 останніми. Далі, ви вирішуєте, що необхідно додати роздiл блогів, і вивести список посилань на п'ять останніх блогозаписів на головній сторінці.
Якщо ви використовували звичайні CMS, то спочатку встановлювали плагін, який обробляє новини і може ставити короткі посилання на головній сторінці. Далі, потрібно встановити плагін, який буде відслідковувати останні записи в блогах і теж вивести список посилань, на головній сторінці. Кожен плагін буде нести відповідальність тільки за відстеження та управління певним типом контенту, і буде залишатися у відносній ізоляції від інших.
Але що відбувається, коли одного дня у вас виникає геніальна ідея – об’єднати ці дві функції, показуючи список блогозаписів та останніх новин, які відсортовані за популярністю? Якщо ви використовуєте CMS типу "іграшкова вантажівка", вам не пощастило, тому що потрібно наймати розробників, щоб написати додатковий плагін з нуля. Але завдяки потужності Drupal, яка є системою керованої абстракці, можна отримати повний комплект запасних частин і складати їх одна до одної доволі швидко. (Підказка: просто використовуйте Views). Оскільки модулі в Drupal реалізують свою функціональність стандартним способом - через інтерфейс із спільним для всіх модулів принципом дії, будівництво різних цікавих та індивідуальних фіч(особливостей) є лише питанням прив'язки різних деталей одна до одної.
Звичайно гнучкість досягається певною ціною. „Іграшкова вантажівка” стає швидко зрозумілою і готовою для використання без великих знань, а конструктор для будівництва вимагає спершу прочитати інструкцію до нього. Є будівельні блоки, але вам необхідно дізнатись чи вони сумісні один з одним перед тим як зробити прототип і почати його втілювати в повнофункціональний сайт.
Ядро Drupal і тисячі додаткових модулів, які розроблені для нього, вимагають початкових інвестицій (особливо в часі, а іноді і в грошах на придбання книг, консультацій, поїздок на Drupal-кемпи...-прим. перекл.), але оволодіння Drupal винагороджує ці витрати незмірно.
Незгасаюче Drupal-ком’юніті є свідченням сили цієї системи, у розв’язанні дилеми простота/гнучкість. Після того, як ви спробуєте Drupal, то швидше за все залишите свої іграшкові вантажівки і човни в зачиненій, пильній шафі.

Як Drupal це робить?

Заінтриговані? Давайте розглянемо детальніше як працює Drupal.
Зазвичай люди думають що веб-сайт це сукупність статичних сторінок з певною функціональністю(наприклад блоги чи двигунець новин) всередині. Коли люди керують своїм сайтом вони міркують категоріями деревоподібнї ієрархії: є сторінки, які вони переглядають і редагують.
Drupal діє іншим чином. Він надає можливість використовувати типи контентів, які грунтуються на понятті "нода" (на сьогодні це переважаюча концепція). Статичні сторінки, блогозаписи і новини(приклади типів контенту) зберігаються одним і тим же способом, а сама структура сайту зроблена окремо за допомогою меню, виглядів (списків контенту) і блоків (контент який знаходитья збоку і часто містить в собі посилання на інші розділи сайту).
Таке розділення відповідає стандартам XHTML-розмітки і забезпечує смислову структуру представлення інформації, в той час як CSS відповідає за зовнішнє представлення сайту. В Drupal, ноди містять структуровану інформацію, яка відноситься до блогозаписів (такі як назва, вміст, автор, дата) чи новин (назва, вміст, дата створення, дата оновлення), а система меню, таксономія(мітки контенту) і вигляди створюються структуру подачі інформації. А шар теми у поєднанні з модулями(такими як Panels, які відповідають за відображення контенту) контролює, як все це буде відображатись для відвідувачів сайту.
Поки ці шари будуть відокремлені ви можете забезпечити абсолютно різну навігацію і вигляд вашого контенту для різних користувачів, відповідно до їхніх потреб і ролей. Сторінки можна по-різному групувати, розміщувати в будь-якому порядку, а різну функціональність чи контент можна показувати при потребі.

Ноди: Секрет гнучкості Drupal

Ми не говоримо про "ноди", кожен день, але оскільки вони знаходяться в основі розробки Drupal, то для розуміння того як працює система ми мусимо детально їх дослідити. За своєю суттю, нода являє собою набір даних. При створенні нового блогозапису, ви не тільки вказуєте її основний текст, але і назву, зміст, автора, дату створення, таксономію (мітки) і т.д. Деякі з цих елементів будуть показані на рівні теми, коли нода буде відображатись. Інші мета-дані контролюють, як нода буде відображатися - наприклад, таксономія і статус опублікованості.
Оскільки кожен елемент контенту зберігається у вигляді нод, і має одну й ту ж структуру побудови, то ядро Drupalа чи будь-який сторонній модуль може змінити ноду певним чином. Це дозволяє розробникам сайту вибирати, де саме вони хочуть, показати контент, і як саме він має виглядати в кожному окремому випадку. Велику частину часу Drupal-розробники витрачають на визначення, які види інформації, вони хочуть зберігати в різних нодах, а також на налаштування структури (меню, таксономії дерев, виглядів, панелей) для їх відображення.
Як зазначалося раніше, ви не обмежені одним способом представлення контенту вашого сайту. Ви можете визначити різні типи навігації, користувацьких тем ("скіни" для сайту), блоків (маленькі шматочки контенту, такі як 5 останніх блогозаписів, як описувалось раніше), і набір можливостей, для різних відвідувачів вашого сайту.
Коментарі в порівнянні з нодами є вторинним засобом представлення контенту в Drupal, але вони також відносяться до так званого Drupal-шляху(метод побудови сайту, в основі якого лежать певні правила визначені Drupal-спільнотою). Коментарі не є самостійною частинкою, як наприклад блогозапис. Коментарі можуть бути увімкненні в будь-якому вузлі вибраного типу - блогу, новині, книжковій сторінці (яка забезпечує основні функції wiki-системи) і в будь-якому іншому типі, який ви створите.

Механізм взаємодії в ядрі

Створення інформаційного сайту, який працює шляхом "один до багатьох" є те, що більшість CMS вміє прямо з коробки. Однак Drupal дійсно неперевершений, тоді коли ви хочете розширити можливості сайту, і надати користувачам можливість створювати контент і спілкуватися один з одним – тобто Drupal здійснює перехід від "один до багатьох" на "багато до багатьох".

З деякими CMS, ви можете створювати блоги, можете встановити плагіни для роботи з спільнотою користувачів. Але що станеться, якщо ви захочете, щоб кожному користувачеві належав окремий блог, щоб ви могли здійснувати сортування його вмісту, щоб кожен блог мав свій унікальний вигляд чи створити крос-блог тематичного дайджесту, список топ-5 блогів, посилання на зовнішні ресурси, індивідуальні профілі користувачів? Що робити, якщо ви хочете все це інтегрувати у форум, вікі-середовище, і дати кожному користувачу свою галерею фотографій?

З самого початку Drupal розроблявся так, щоб розробники сайту могли делегувати права на створення контенту, не тільки адміністрації сайту, але і користувачам. Все, що вам потрібно зробити, це визначити, хто отримає можливість робити те чи інше на вашому сайті (з допомогою прав користувачів).

Швидкий початок і широкі можливості для індивідуальних рішень

Гнучкість Drupal це щось неймовірне, але його інсталяція є ще більш дивовижною за своєю простотою. За допомогою простого завантаження файлів по FTP і кількох запитань, ви зможете встановити зв’язок з базою даних і ваш перший сайт на Drupal запрацює через декілька хвилин.

Виберіть одну з стандартних тем і просто почніть додавати контент. Ви хочете, щоб відвідувачі могли увійти на сайт? Ви можете вімкнути чи вимкнути аутентифікацію. Які ще інструменти входять до коробки? Увімкніть форум; дозвольте коментування нод; увімкніть модуль book для співпраці типу wiki; створюйте форуми та опитування; використовуйте таксономію, щоб надати контенту сайту структурованості, ієрархічної класифікації або категоризацію у формі міток.

Ви хочете, щоб ваша власна тема застосовувалась на сайті? Тема Drupal використовує сніпети(фрагменти коду) PHP, які можна вставити у відповідні місця вашої теми замінюючи статичний текст на динамічний контент. Розмітка, яку генерує Drupal є чистию і відповідє стандартам XHTML. Ні старій школі таблиць. Ні мотлоху. Без жартів:)

Drupal зсередини

Якщо ви хочете більше знати про Drupal, ви повинні зрозуміти, як потоки даних оброблюються у шарах системи. Є п'ять основних шарів, які необхідно розглянути:
Зображення видалено.

  1. В основі системи Drupal є ноди – сукупність даних. Перш ніж контент буде відображатися на сайті, він має бути введеним у вигляді даних.
  2. Наступний шар- це модулі. Модулі це функціональні плагіни, які є або частиною ядра Drupal, або йдуть окремо від нього і розробляються учасниками Drupal-спільноти. Модулі,побудовані на ядрі Drupal. Вони дозволяють налаштовувати представлення даних(поля) в ваших типах контенту; встановлювати сайти інернет-магазини; програмно сортувати і відображати контент(вивід налоштовується фільтрами, які ви визначаєте), і так далі. Репозитарій додаткових модулів швидко зростає і наразі налічує тисячі плагінів. Модулі є результатом інноваційної діяльності і зусиль як окремих розробників, так і великих компаній.
  3. До настурного шару відносяться блоки і меню. Блоки найчастіше створюються модулями або ви можете самостійно створити блок і розмістити його в будь-якому місці вашої теми. Блоки можуть налаштовуватись по багатьом параметрам, наприклад, ви можете налаштувати на яких сторінках або для яких користувачів відображати певний блок.
  4. Наступний шар – це права користувачів. Це налаштування, в яких можна вказати, що можуть робити чи переглядати певні типи користувачів. Права надаються для різних ролей, в свою чергу користувачам назначаються ролі.
  5. В останньому шарі знаходиться тема. Вона складається переважно з XHTML і CSS, з вставками PHP-змінних(які містять контент згенерований Drupal) в певних місцях теми. Також в кожну тему включений набір функцій, які можуть перевизначати стандартні функції в модулях для того щоб забезпечити повний контроль над тим, як модулі генерують вивід контенту. Вивід також може формуватись „на льоту” на основі прав користувачів.

Проглянувши вищенаведену схему можна зрозуміти, як працює Drupal. Ви додали нову функціональність, а вона не працює? Можливо ви завантажили модуль, але не увімкнули його. Саме тому все, що знаходиться нижче цього модуля не працює(як А на діаграмі вище).

Можливо ви встановили і активізували модуль, але досі не бачите те що ви хочете бачити на сайті? Ви не забули вивести в потрібному місці блок, як в В на діаграмі? Чи не суперечать ті права, які ви надали користувачам, тому, що ви хочете бачити як в С?

На завершення — як згадувалось раніше — для того, щоб мати повний контроль над XHTML, який виводять модулі, ви мусите розуміти концепцію, яка була наведена вище. Уявіть, що ви використовуєте модуль, який робить все що ви хочете, але те як він виводить дані дещо відрізняється від того, що вам потрібно. Або можливо, ви хочете використати додаткові HTML-теги чи додати CSS-клас до чогось. Ви можете здійснити це, скопіювавши функцію з модуля і вставивши її в вашу тему. Відредагуйте код так як вам потрібно, і при генеруванні виводу система побачить вашу функцію і застосує її.