Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NovoselovDRUPAL_FINAL_DRAFT.docx
Скачиваний:
8
Добавлен:
01.04.2015
Размер:
396.56 Кб
Скачать

Глава 2. СmsDrupal История

Начал разработку в 2000 году бельгиец Дрис Байтаерт (DriesBuytaert), который и поныне является руководителем проекта. Название drupal является искажённым произношением голландского слова druppel (капля) и появилось в результате забавной ошибки. В 2000 году несколько студентов антверпенского университета использовали общий ADSL-модем для доступа в интернет, и для общения пользователей этой маленькой локальной сети Дрис создал внутренний сайт. Программа, на которой работал сайт, не имела имени, пока Дрис не собрался регистрировать доменное имя для нового сайта, и в результате опечатки вместо dorp.org (от голландского dorp — деревня, вполне уместное имя для небольшого сообщества) был зарегистрирован drop.org (англ.drop — капля). Аудитория нового сайта со временем сменилась на интересующихся развитием новых веб-технологий, и новый сайт постепенно перешёл из любительского эксперимента в проект по обсуждениям идей веб-программирования. В 2001 году Дрис опубликовал исходный код drop.org под именем «Drupal». С тех пор разработка переместилась на зарегистрированный позднее сайт drupal.org, который приобрёл статус официального сайта проекта.

В данное время проект уже поддерживают десятки тысяч программистов, которые тесно сотрудничают, присылают свои решения модулей и тем оформления, делятся идеями, помогают новичкам. Организуют мастер-классы, дискуссии, встречи. Также, немаловажно, что пользователи данной системы систематизирую все её расширения. То есть все модули, темы оформления и прочее загружают на официальный сайт. Это позволяет избежать дублирования и помогает в совместных крупномасштабных проектах.

Drupal каркасная система.Drupal не только CMS, но и как CMF. Content Management Framework — каркасная система для управления содержимым. CMF — это инструментарий для создания систем управления содержимым, а также веб-приложений вообще.CMFв отличии отCMSпозволяет расширения стандартных средствCMS. Это позволяет вDrupalсоздавать новые тип материалов. Также уже имеются готовые функции ядра, достаточно вызвать нужную функцию. Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF, хотя провести чёткую границу между CMS и CMF порой сложно. Предлагая решения с помощью установки и настройки готовых модулей Drupal также выгодно смотрится в качестве конструктора для программистов, которых не устраивают стандартные решения. Drupal имеет подробный API. СистемаAPIпозволяет создавать новые расширения на основе уже имеющихся функцийCMS. Это позволяет не создавать новые функции или работать непосредственноphp-командами. На основеAPIстроятся все модули.APIвDrupalс компактным ядром и очень гибкими возможностями расширения, включая механизмы замены стандартных функций и модулей собственными, что даёт возможности в большинстве случаев изменять поведение ядра и сторонних модулей, не изменяя, непосредственно, их кода.

АрхитектураDrupal

Архитектура Drupal позволяет применять его для построения различных типов сайтов — от блогов и форумов, до информационных архивов или сайтов новостей. Функциональность обеспечивается подключаемыми модулями, обращающимися к общему API Drupal. Стандартный набор модулей включает, например, такие функции как комментирование, добавление материала, новостная лента, блог, форум, загрузка файлов, голосования, поиск, обратная связь и д.р. Большое количество дополнительных модулей, значительно расширяющих базовые функции можно скачать с официального сайта.

База данных. Drupalхранит всю информацию в таблицах баз данных Гибкий уровень абстракции Drupal позволяет легко работать с различными типами баз данных, например MySQL или PGSQL. Он максимально сохраняет синтаксис и мощь SQL, изменяя отдельные параметры запросов для разных типов баз и оставляя основные элементы безопасности неизменными.

Большинство обращений к базам данных выполняется с помощью функций APIDrupal, такими какdb_query() или db_query_range(). Разработчикам стоит обратить внимание на такие, как функция pager_query(), которая используется в случае запросов, результаты которых нужно будет вывести постранично, и функцию tablesort_sql(), которая формирует запросы для сортируемых таблиц. Также стоит отметить компактность и тесное взаимодействие таблиц в БД. Например, при создании материала(в Drupalе принято называть их называть ноды) указывается номер ноды, категория, текст, оглавление и д.р. То есть в отличии от других CMS не создается отдельная таблица разных типов материала или категорий, и перенос материала в другую категорию потребует лишь измнения одного числа в записи, а не фактического переноса в другую таблицу.

Немаловажный преимуществом является то, что встроенные возможности Drupalпозволяют выполнять один програмный код для разных СУБД, что позволяет сократить код исходного модуля.

Основные понятия CMS Drupal

Нода– единица материала, имеет различные типы, от новостных страниц до альбомов с изображениями.

Callback(каллбэк) – обратный вызов. Позволяет в функции исполнять код, в аргументах при её вызове. Используется в урл-ссылках.

Модульная структура. Готовые решения типовых задач. Модуль это набор функцийAPI, решающий определенную задачу на сайте. Новостной сайт, сайт-визитка компании, блог или форум — такие сайты можно построить пользуясь только модулями движка идущими в поставке, вам нужно только включить соответствующие модули, настроить их по своему вкусу и перенести сайт на хостинг.

Drupal, как и другие системы имеет свои модули, позволяющие быстро решить определенные стандартные задачи, например, галерея или опрос. Но хочется отметить, что Drupal имеет удобные многофункциональные модули, решающие более глобальные вопросы. Например, для крупной корпорации удобным может оказаться модуль ERP, решающий задачиEnterpriseResourcePlaningсистем. Системы планирования ресурсов предприятия создают единое информационные пространство предприятия и, тем самым, помогают предприятию правильнее использовать весь свой потенциал, производя максимум прибыли. Также имеются аналогичные уже готовые модули для решения задач, как малого бизнеса, так и решения проблем для целых корпораций.

Темы/шаблон. Дизайн сайта на Drupal строится на основе сменных тем оформления. Как таковой нет единственной схемы построения дизайна, взамен Drupal даёт возможность использовать различные «движки» тем, использующие шаблоны удобные для редактирования (шаблоны XML в движках xtemplate и Smarty или шаблоны на HTML+встроенный PHP в движке phptemplate и т. п.), либо создавать темы оформления напрямую обращающиеся к API Drupal. Начиная с версии 4.7 Drupal поддерживает технологию Ajax, для динамической подгрузки содержимого без полного обновления страниц.

Учетные записи. Учетные записи пользователей, позволяют определять с каким именно пользователем происходит взаимодействие. Информация о записях хранится в отдельной таблице базы данных и содержит информацию о пользователях.

Роли и права доступа. Права доступа разрешают или запрещают доступ к отдельным функциям модулей. Набор прав доступа создает, так называемые роли. Роли позволяют группировать пользователей с одинаковыми права. Это также позволяет давать права не каждому пользователю индивидуально, а группе пользователей одновременно.

Таксономия. Каждый документ сайта может входить в одну или несколько рубрик. Сами же рубрики могут составлять списки или сложные иерархические структуры произвольной вложенности (с множественными предками и перекрестными ссылками элементов).Возможна сквозная рубрикация по всем типам документов сайта (например список ключевых слов, общий для форумов и блогов). В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия — механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько «родителей» и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список «ключевых слов» для всех документов сайта и т. п.

Навигация, дружественные ссылки и поиск.Для удобства доступа к архивным материалам служат рубрикация контента и поиск с учётом видов контента, рубрик и содержимого. Документы сохраняют неизменные ссылки все время своей жизни (т.н. перманентные ссылки). Также с помощью дружественных ссылок и псевдонимов сайт приобретает запоминающиеся имена разделов и отдельных страниц, не использующие специальных символов и поэтому хорошо индексируемые поисковыми системами. На сайте Drupal вы не увидите длинных неудобоваримых ссылок типа modules.php?op=modload&name=News&file=article&sid=166&mode=&order=0&thold=0 (пример с реального сайта), которыми по сию пору страдает немало CMS.

Система меню. Определяет навигационные меню и преобразует запросы страниц в вызовы функций, привязанные к путям на сайте.

Система меню Drupalуправляет как навигационной системой c точки зрения пользователя, так и callback системой, которую Drupal использует, чтобы реагировать на URL, полученный из браузера. Поэтому, правильное понимание системы меню является основой для создания сложных модулей.

Система меню Drupalподдерживает простую иерархию определяемую путями. Реализации hook_menu() определяют пункты меню и назначают им пути (которые должны быть уникальными). Система меню собирает эти пункты и определяет иерархию меню из путей. .

В ответ на запрос страницы, система меню проверяет, был ли путь, который запросил браузер, зарегистрирован как пункт меню с коллбэком (функцией, отвечающей данному пути). Если нет, то система продолжает искать в дереве меню наиболее полное совпадение (с коллбэком), которое можно найти. Если путь a/b/i был запрошен в дереве, показанном выше, будет использован коллбэк для a/b.

Коллбэк найденного пункта меню, вызывается с аргументами, в порядке, указанном в 'pagearguments' спецификации этого пункта меню. Атрибуты должны быть помещены в массив. После этих аргументов, к компонентам указанного пути добавляются дополнительные аргументы.

Локализация. Система поддерживает локализацию интерфейса для различных языков. Имеется поддержка русского языка. Используется собственный механизм для локализации с хранением переводов в базе данных, наравне с остальным содержимым сайта. При этом несложной является адаптация к работе со стандартной библиотекой gettext. Импорт и экспорт переводов сайта также осуществляется в виде po-файлов (формат используемый библиотекой gettext).Полная локализация содержимого поддерживается сторонними модулями (не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков). ВDrupalимеется возможность перевода текста модулей динамически в административной панели.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]