Посмотрите видео с Друпалкона в Бостоне о создании этого сайта. В дополнение к видеозаписи с Друпалкона в Бостоне 2008 сделанное Кевином Брижджесом (cyberswat), Лаура Скот и другие сотрудники pingVision, включая Меган Миллер и Джона Махоуни из PopSci.com, написали эту статью о разработке этого сайта. Если вы хотите нас о чём-нибудь спросить, то мы будем рады ответить на ваши вопросы.
В феврале 2008 года, сайт ежемесячного журнал Popular Science был перезапущен на Друпале. Разработкой сайта занималась студия pingVision.
Журнал был основан в 1872 году под названием «What's New, What's Next». С тех пор издание засвидетельствовало, сообщило и оценило бесчисленное количество научных и технических разработок, от электричества до последних новинок сегодняшнего информационного века — образа жизни, работы, игр, путешествий, связи, понимания и взаимодействия с окружающим нас миром. В самом деле, архивы Popular Science отражают прогресс человечества за последние 135+ лет.
До этого года, сайт журнала работал на коммерческой системе управления содержанием. В связи с этим перезапуском, команда Popular Science захотела перейти в мир открытого программного обеспечения. Они выбрали Друпал и заказали разработку сайта в pingVision.
Ниже, мы вкратце расскажем вам о том, как разрабатывался этот сайт, чтобы соответствовать тем строгим требованиям, которые были выдвинуты командой журнала.
До перезапуска, 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. Этот модуль работает в связи с типами документов, которые были созданы с помощью модуля CCK.
Статьи являются основным типом документов на сайте. Все записи в блогах из TypePad и статьи из Vignette были перенесены в статьи Друпала.
Этот тип документов широко использует возможности DME. Ссылки на изображения могут быть помещены где угодно в документа благодаря использованию DME. Если ссылка на изображение, на которое нужно сослаться явно не определена в содержании документа модулем DME, то оно автоматически выводится вверху статьи и в кратком содержании этой статьи.
Используя DME изображения можно также разместить напрямую в кратком содержании. Этот подход обеспечивает максимальную гибкость при работе с изображениями добавленными через Друпал и изображениями, которые были унаследованы из предыдущих систем и не требует дополнительных усилий от редактора.
DME также используется для размещения связанного содержания (содержит ссылки на документы из поля CCK Node referance или документов с такими же терминами) в документ и установки пейджера для статьи.
Структура
Документ «Текущий номер» содержит информацию о текущем номере журнала. В этом документе сохраняется изображение обложки журнала и дата номера. Эти документы используются в рекламных целях в различных частях сайта.
Структура
Тип документов «Featured tout» создан для использования в Nodecarousel, который управляется Nodequeue. «Featured tout» требование редакторов Popular Science для создания графики, которая имеет определённые размеры. Она показывается на первой странице сайта.
Структура
Изображения широко используются на сайте и нуждаются в обращении к ним несколькими путями. Изображения используются в различных формах статей, виджетах краткого содержания и фотоальбомах. Если изображение имеет связанный с ним документ, ссылки на этот документ показываются везде, кроме видов с кратким содержанием. Изображения не являются самостоятельным элементом сайта, но к ним можно обращаться из статей и фотоальбомов.
Структура
Фотоальбомы служат для сбора изображений и документов. Изображения помещаются в альбом при их редактировании и выбора заголовка альбома в поле CCK Node Reference. Альбомы показываются в Nodecarousel, чтобы придать им скольжение и ощущение интерактивности.
Структура
Эти документы позволяют добавлять на сайт видео через сервисы YouTube или OnStream. Мы разработали специальный модуль, который создаёт поле CCK Media Profile, которое может быть прикреплено к любому документу, позволяя редакторам и администраторам ограничивать использующиеся сервисы на основе типов документов.
Специальный модуль отличается от существующего модуля Embedded Media Field, предоставляя большую гибкость — он позволяет пользователям загружать видео на поддерживаемые сервисы прямо из Друпала.
Структура
Одной из причин, которая потребовала переноса существующего содержания в Друпал, было желание избавиться от ограничений и платы связанной с CMS Vignette. База данных (Oracle) Vignette имела размер 1,66 ГБ и это не включая более 15 000 изображений, на которые ссылались эти данные.
Первым шагом был перенос данных в формат MySQL, который был сделан с использованием MySQL Migration Toolkit. Мы написали специальный модуль, который работал при запусках cron и частями забирал информацию из базы данных Oracle и обрабатывал её через Drupal API. Изображения импортировались путём считывания информации об их размещении из старой базы данных и последующим их скачиванием (через shell-скрипт выполнялись серии команд wget).
Содержание созданное в Друпале было автоматически тегировано с помощью модуля Yahoo Terms, который несмотря на некоторые ошибки дал хороший старт для работы с огромным количеством нетегированного содержания из Vignette.
После окончания приготовлений, весь процесс импорта данных занял по времени два полных дня. Частью процесса импорта был вопрос работы с адресами страниц, которые были сгенерированы Vignette. Нужно было, чтобы статья запрошенная по старому адресу была найдена в Друпале. Для решения этой задачи, в процессе импорта мы связали Vignette ID с каждой единицей импортируемой информации и поместили эти данные в поле CCK, которое указывало на новый адрес страницы в Друпале.
Чтобы начался поиск статьи в Друпале, был написан хук, который работает с модулем CustomError для просмотра старых адресов Vignette ID и при возникновении 404 ошибки перехаватывает обработку адреса и выполняет перенаправление. Мы получили возможность не только обработки старых адресов и управления перенаправлениями, но и сказали Google где нужно искать новые документы и в очень короткое время Google заменил ссылки в результатах своей выдачи.
Замысел страницы с результатом поиска потребовал сгруппировать результат по типам документов, с вкладками позволяющими переупорядочивать результат по соответствию запросу, дате публикации, просмотрам, рейтингу и количеству комментариев. Кроме того, пользователи могут подписаться на ленту результатов.
Мы получили этот результат путём разработки расширенной версии стандартной поисковой системы, показывая результаты в блоках с разбивкой их на страницы и вкладками использующими AJAX для переключения сортировки.
В разработанном нами дизайне страниц, используется много разнообразных вкладок, которые фильтруют выводимую на страницу информацию. Для реализации этих вкладок мы использовали модуль Tabs из пакета Javascript Tools. Однако, наборы вкладок показываемые на страницах рубрик и странице поиска, потребовали дополнительного кодирования, которое позволило реализовать нужную нам работу с данными.
Как и следовало ожидать, рассмотрение вариантов оборудования на котором работает сайт потребовало серьёзного подхода. Решить вопрос производительности нам помог модуль Memcache, который интегрирует с Друпалом Memcached и библиотеку PECL Memcache. Этот модуль хорошо нам подошёл и со своими стандартными возможностями, за одним исключением работы с альтернативными путями, из-за чего для загрузки страницы требовалось выполнять до 700 запросов, из которых значительная часть занималась выяснением альтернативных путей. Перенос этих запросов в Memcache дал нам нужную скорость обработки и сайт стал справляться с обработкой 60–70 страниц в секунду.
Настоящая сила Друпала заключена в людях, которые составляют сообщество. Эти модули были разработаны участниками и помогли решить нам стоявшие перед нами задачи.