| Август 2008 | ||||||
| ПН | ВТ | СР | ЧТ | ПТ | СБ | ВС |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Небольшое предисловие от меня. Я нашёл эту статью давно, на сайте drupal.org. Она оказалась очень полезной, и я думал, что её кто-нибудь переведёт. Однако этого не случилось, и я решил сделать это сам. Пусть эта статья будет ответом всем скептикам, которые не верят в Drupal - на самом деле, вы просто не умеете его готовить. Также, статья будет весьма полезна всем тем, кто планирует вести большие проекты на Drupal.
Статья породила множество комментариев и вопросов (на английском языке), авторы же любезно на них ответили. Пока что я просто читаю эти комментарии, и если найду их полезными и немного времени, то напишу статью-сборник из этих вопросов-ответов, переведённых на русский язык.
По итогам анализа разработки сайта для журнала "Популярная Наука", представленного на конференции DrupalCon 2008 в Бостоне Кевином Бриджесом (Kevin Bridges, cyberswat), Лаура Скотт и другие сотрудники pingVision вместе с Меган Миллер и Джоном Махони из PopSci.com, представляют исследование подходов к разработке сайта PopSci.com. Мы приветствуем Ваши вопросы и отзывы.

В феврале 2008, Popular Science, пятый старейший регулярно выпускаемый ежемесячный журнал, возобновил свое присутствие в Интернете с помощью сайта корпоративного уровня, основанного на Drupal и разработанного студией pingVision.
Основанный в 1872 году журнал Popular Science, являющийся журналом всего нового и перспективного, был свидетелем, сообщал и оценивал многочисленные научно-технические разработки, начиная со времени рассвета электроэнергии и заканчивая последними нововведениями сегодняшней информационной эпохи - достижений, которые легли в основу современного образа жизни, работы, игр, путешествий, общения, способов понимания и взаимодействия с миром. В самом деле, архивы журнала Popular Science отражают прогресс человечества за последние 135 с лишним лет.
До этого года, присутствие журнала Popular Science в Интернете обеспечивали по преимуществу проприетарные системы управления веб-контентом. При планировании этого обновления, команда журнала Popular Science хотела перевести управление онлайн-версией журнала в мир с открытым исходным кодом. Они приняли решение о Drupal в качестве веб-платформы и выбрали студию pingVision для разработки.
Ниже вы прочтёте краткий, "галопом по европам" обзор о том, как pingVision разрабатывала сайт для удовлетворения строгих требований сотрудников журнала Popular Science.
До перезапуска, сайт журнала Popular Science использовал различные системы для публикации и управления содержанием сайта. Одна из целей нового сайта заключается в том, чтобы привести эти разрозненные сайты к единому пользовательскому интерфейсу вместе с повышением удобства использования и функциональности. Неотъемлемые качества Drupal - гибкость и расширяемость - отвечает поставленным журналом Popular Science функциональным требованиям и практичности. Одна из больших проблем была, однако, в преобразовании и импорте накопленного за несколько лет контента из CMS Vignette 7 и нескольких блогов TypePad.

Другой проблемой являлась интеграция сайта с несколькими сторонними сервисами, в том числе торговой системой ценных бумаг, видео сервисами и услугами хостинга, а также сервисами рекламы.
В ходе разработки нового сайта PopSci.com, мы воспользовались различными сторонними модулями, и создали ряд собственных модулей, в их числе - Drupal Markup Engine для отображения контента за пределами документов (нод) и Node Carousel для отображения контента.
Наконец, масштабируемость являлась главной задачей, так как PopSci уже имеет большую базу активных пользователей. Благодаря сбалансированной распределённой нагрузке на несколько серверов вычислительного кластера, на котором размещается сайт, в сочетании с использованием Memcache, PopSci.com после обновления смог выдержать нагрузку в среднем 60 страниц в секунду, с пиком из более чем 1,1 млн. просмотров страниц за 24 часа - новый рекорд для Popular Science.
Для редакторов PopSci.com было важно, чтобы они полностью контролировали размещение материалов и могли бы управлять ими не только в режиме полного просмотра, но и в режиме анонса. Они хотели иметь возможность разбивать на страницы большие статьи и размещать любое количество изображений или просто связанных блоков в документе. Размещение материалов также должно было быть достаточно интеллектуальным, чтобы работать в режиме совместимости с контентом, импортируемым из Vignette и Typepad. Большинство из этих требований удалось добиться при создании нового модуля под названием Drupal Markup Engine, или DME. DME работает совместно с типами контента, которые были созданы для этого проекта с помощью модуля Content Construction Kit (CCK), предоставляя пользовательский, расширяемый фильтр ввода.
Статьи являются основным типом материалов на этом сайте. Все посты из блогов TypePad и статьи из Vignette были объединены как статьи в Drupal.
В статьях широко используется модуль DME. Изображения можно разместить в любом месте в статье, используя DME. Если явно не указано с помощью DME, где именно располагать картинку в теле статьи, она автоматически отображается в верхней части этой статьи и в режиме полного просмотра, и в режиме анонса.

Используя DME, изображения также могут быть размещены непосредственно для режима анонса. Такой подход обеспечивает максимальную гибкость работы с изображениями через Drupal, и с изображениями из наследуемого контента, который не потребует вмешательства человека, чтобы закончить обновление.
DME также используется для того, чтобы разместить блок со ссылками на похожие статьи (он будет содержать ссылки на материалы в полях CCK Node Reference, или материалы похожими терминами таксономии), на содержание и установить количество страниц для статьи.

Тип материала "свежий номер" представляет собой номер журнала. Он используется для хранения изображений обложек журналов вместе с их датами. Этот тип материалов используется в различных промо-материалах на всём сайте.
Featured Tout является типом материалов, созданным для использования исключительно в модуле Node Carousel, управляемым в свою очередь Node Queue. Featured Tout просто требует от редакторов журнала Popular Science создать графику соответствующего размера. Это можно увидеть на главной странице http://popsci.com/.


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

Фотогалерея является типом материалов, предназначенный для сбора изображений и материалов, которые будут отображаться для конечного пользователя в качестве фотогалереи. Изображения присоединяются к фотогалерее путём редактирования изображения - нужно ввести название галереи в соответствующем поле Node Reference. Галереи представлены в виде Node Carousels, что придаёт им глянцевости и интерактивности.
Материал типа Video позволяет размещать видеоролики на сервисах YouTube и OnStream. Мы разработали собственный медиа-модуль, который создает поле CCK Media Profile, которое может быть прикреплено к любому документу, что позволяет редакторам и администраторам ограничивать используемые сервисы на основе типа материала.
Собственный медиа-модуль отличается от существующего модуля Embedded Media Field тем, что предоставляет большую гибкость - например, позволяя пользователям загружать видео на сервисы прямо из Drupal.
Часть мотивации, чтобы переместить существующее содержимое в Drupal заключалась в том, чтобы избежать возрастающей сложности и расходов, связанных с CMS Vignette. Набор данных для Vignette занимал 1.66GB базы данных на Oracle, - и это не включая более 15000 изображений, размещённых в документах Vignette, которые также должны были быть импортированы в новый сайт.
Первый шаг в процессе миграции состоял в том, чтобы использовать MySQL Migration Toolkit для передачи данных в MySQL. Мы написали собственный модуль, который использует cron (запуск скриптов по расписанию), чтобы пропустить данные из БД Oracle через API Drupal, деля их на приемлемые куски. И, наконец, мы импортировали изображения путем извлечения их ссылок из БД Oracle, и через шелл-скрипт выполняя ряд команд wget, чтобы загрузить изображения.
Каждый документ, импортированный в Drupal, был помечен тегами с помощью модуля Yahoo Terms, который, несмотря на некоторые нерегулярные результаты, сделал хорошие стартовые метки для огромного количества не помеченных данных из CMS Vignette.
Как только подготовка к импорту была завершена, весь процесс импорта данных занял около двух полных дней, потраченных на вычисления.
Некоторое время в процессе импорта было посвящено работе со ссылками, которые были сгенерированы CMS Vignette, для того, чтобы статьи, привзанные к своему старому адресу от CMS Vignette, можно найти в новой архитектуре Drupal. Для того чтобы добиться этого, в ходе импорта мы взяли соответствующий Vignette ID для каждой единицы информации, импортируемой из Vignette в Drupal, и разместили его в специально заведённом для этого поле CCK конечного документа Drupal. Чтобы найти эти статьи в Drupal, был написан хук, который работает с модулем Custom Error, он ищет старый Vignette ID в строке URL, когда возникает 404 ошибка, и возвращает корректный код переадресации. Не только здесь мы использовали редирект, до тех пор пока использовались старые ссылки, но в очень короткое время Google обновил свои результаты поиска с указанием новых путей.

Конструкция и дизайн результатов поиска на PopSci требовала того, чтобы результаты поиска были сгруппированы по типу материала, с закладками, позволяющими отсортировать результаты по релевантности, времени добавления, количеству просмотров, рейтингу, и количеству комментариев. Кроме того, пользователи должны иметь возможность подписки на rss-ленты с результатами.
Мы достигли этой функциональности путем разработки расширенной версии стандартного модуля поиска Drupal, отображения различных результатов в блоках разбитого на страницы контента, с AJAX-вкладками для доступа к другим сортировкам результатов поиска.
Каждый поиск кешируется, ему присвается хэшированный номер (ID), и связывается с пользователем, выполнившим этот поиск, позволяя сберегать время поиска в будущем.
Во многих случаях дизайнерские работы, что мы получали, требовали сделать вложенный набор вкладок (табов), которые могли бы функционировать как фильтр того материала, который отображается на определенной странице. Это было в значительной степени реализовано с помощью компонента Tabs из модуля Javascript Tools. Вместе с тем, для вкладок с большими объёмами данных, отображаемых на главных страницах основных категорий и в результатах поиска, необходимо было собственное решение (оптимизированный код), чтобы иметь возможность работать и реагировать быстро при больших объемах данных.
Естественно, был произведён тщательный отбор аппаратного обеспечения для размещения сайта журнала Popular Science, но настоящим лидером оптимизации этого проекта стал модуль Memcache, который интегрирует Drupal с Memcached и библиотекой PECL Memcache. Прямо "из коробки", этот модуль работал очень хорошо для нас, за исключением работы с псевдонимами URL: полная загрузка страницы генерировала больше 700 запросов для определения псевдонимов URL. Направление этих запросов через Memcache дало нам необходимую скорость, чтобы сохранить первоначальную среднюю нагрузку в примерно 60-70 просмотров страниц в секунду.
Подлинная мощь Drupal заключается в людях, которые участвуют в этом проекте. Эти модули были предоставлены со стороны сообщества и помогли сделать работу, которую мы сделали, возможной:
drupal.js) для разработки Javascript- и AJAX-модулей под Drupal.
Комментарии
спасибо! :))
спасибо! :))
Рад быть
Рад быть полезным :)
Да, большой труд
Спасибо, теперь можно будет давать ссылку на эту статью тем кто сомневается в возможностях Drupal!
Да уж, пришлось
Да уж, пришлось попотеть! Два дня переводил, в два присеста.
PS: Я же говорил, что не брошу Друпал! :)
Интересная и
Интересная и полезная статья. Спасибо вам, вы не зря потратили свое время!