Вы здесь

Popular Science Magazine

Версия системы: 
Друпал 6

Посмотрите видео с Друпалкона в Бостоне о создании этого сайта. В дополнение к видеозаписи с Друпалкона в Бостоне 2008 сделанное Кевином Брижджесом (cyberswat), Лаура Скот и другие сотрудники pingVision, включая Меган Миллер и Джона Махоуни из PopSci.com, написали эту статью о разработке этого сайта. Если вы хотите нас о чём-нибудь спросить, то мы будем рады ответить на ваши вопросы.

Popular Science Magazine

В феврале 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.

Popular Science Magazine

Типы документов

Для редакторов PopSci.com было важным управлять не только размещением медиаданных в полных версиях документов, но и управлять этими данными в кратком содержании. Они хотели получить возможность разбивать длинные статьи на несколько меньших, размещать в статье любое количество изображений или даже связанных с документов блоков в содержание документа. Размещение медиаданных также должно было поддерживать работу с содержанием импортированным из Vignette и Typepad. Большинство из этих вопросов было решено путём создания модуля Drupal Markup Engine. Этот модуль работает в связи с типами документов, которые были созданы с помощью модуля CCK.

Статьи

Popular Science Magazine

Статьи являются основным типом документов на сайте. Все записи в блогах из TypePad и статьи из Vignette были перенесены в статьи Друпала.

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

Используя DME изображения можно также разместить напрямую в кратком содержании. Этот подход обеспечивает максимальную гибкость при работе с изображениями добавленными через Друпал и изображениями, которые были унаследованы из предыдущих систем и не требует дополнительных усилий от редактора.

DME также используется для размещения связанного содержания (содержит ссылки на документы из поля CCK Node referance или документов с такими же терминами) в документ и установки пейджера для статьи.

Структура

  • Article Images — для добавления ссылок на изображения используется поле Node Reference
  • Associated Photo Gallery — поле Node Reference в Photo Gallery
  • Body — содержание статьи
  • Category Badge — значок термина
  • Credit — авторы статьи
  • DEK — краткое содержание
  • Primary Category — рубрика из основного меню сайта
  • Related Articles — поле Node Reference указывающее на другие документы этого типа
  • Tags — автозаполняемое поле
  • Title — заголовок документа
  • V7id — идентификатор оригинальной статьи из CMS Vignette 7 (используется для перенаправления на текущий адрес статьи, при запросе пользователем старого адреса)
  • Video Link — поле Node Reference для ссылки на видео

Текущий номер

Popular Science Magazine

Документ «Текущий номер» содержит информацию о текущем номере журнала. В этом документе сохраняется изображение обложки журнала и дата номера. Эти документы используются в рекламных целях в различных частях сайта.

Структура

  • Cover — изображение обложки
  • Issue Date — дата номера
  • Title — заголовок документа

Featured Tout

Popular Science Magazine

Тип документов «Featured tout» создан для использования в Nodecarousel, который управляется Nodequeue. «Featured tout» требование редакторов Popular Science для создания графики, которая имеет определённые размеры. Она показывается на первой странице сайта.

Структура

  • Associated Article — поле Node Reference ссылающееся на статью
  • DEK — краткое содержание документа
  • Index Display Link — слово, которое используется в качестве ссылки на статью
  • Title — заголовок документа

Изображения

Popular Science Magazine

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

Структура

  • Credit — автор изображения
  • DEK — краткое описание
  • Photo Gallery Link — поле Node Reference для ссылки на фотоальбом. Если изображение связано с альбомом, то оно показывается в этом альбоме
  • Photo Gallery Weights — это поле содержит два элемента: фотоальбом и вес изображения в этом альбоме
  • Primary Category — рубрика из основного меню сайта
  • Title — заголовок документа
  • V7id — идентификатор оригинального изображения из CMS Vignette 7 (используется для перенаправления на текущий адрес изображения, при запросе пользователем старого адреса)
  • Video Link — поле Node Reference для ссылки на видео

Фотоальбом

Popular Science Magazine

Фотоальбомы служат для сбора изображений и документов. Изображения помещаются в альбом при их редактировании и выбора заголовка альбома в поле CCK Node Reference. Альбомы показываются в Nodecarousel, чтобы придать им скольжение и ощущение интерактивности.

Структура

  • Category Badge — значок термина
  • Credit — автор изображения
  • DEK — краткое описание
  • Icon — поле Node Reference ссылающееся на значок, который используется для изображения при выводе краткого описания
  • Primary Category — рубрика из основного меню сайта
  • Tags — автозаполняемое поле
  • Title — заголовок документа
  • V7id — идентификатор оригинального фотоальбома из CMS Vignette 7 (используется для перенаправления на текущий адрес фотоальбома, при запросе пользователем старого адреса)

Видео

Эти документы позволяют добавлять на сайт видео через сервисы YouTube или OnStream. Мы разработали специальный модуль, который создаёт поле CCK Media Profile, которое может быть прикреплено к любому документу, позволяя редакторам и администраторам ограничивать использующиеся сервисы на основе типов документов.

Специальный модуль отличается от существующего модуля Embedded Media Field, предоставляя большую гибкость — он позволяет пользователям загружать видео на поддерживаемые сервисы прямо из Друпала.

Структура

  • Category Badge — значок термина
  • Credit — автор документа
  • DEK — краткое описание видео
  • Primary Category — рубрика из основного меню сайта
  • Tags — автозаполняемое поле
  • Title — заголовок видео
  • Video Link — ссылка на добавляемое видео, загрузка которого управляется медиамодулем

Импорт данных

Одной из причин, которая потребовала переноса существующего содержания в Друпал, было желание избавиться от ограничений и платы связанной с 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 заменил ссылки в результатах своей выдачи.

Поиск

Popular Science Magazine

Замысел страницы с результатом поиска потребовал сгруппировать результат по типам документов, с вкладками позволяющими переупорядочивать результат по соответствию запросу, дате публикации, просмотрам, рейтингу и количеству комментариев. Кроме того, пользователи могут подписаться на ленту результатов.

Мы получили этот результат путём разработки расширенной версии стандартной поисковой системы, показывая результаты в блоках с разбивкой их на страницы и вкладками использующими AJAX для переключения сортировки.

AJAX-вкладки

В разработанном нами дизайне страниц, используется много разнообразных вкладок, которые фильтруют выводимую на страницу информацию. Для реализации этих вкладок мы использовали модуль Tabs из пакета Javascript Tools. Однако, наборы вкладок показываемые на страницах рубрик и странице поиска, потребовали дополнительного кодирования, которое позволило реализовать нужную нам работу с данными.

Быстродействие

Как и следовало ожидать, рассмотрение вариантов оборудования на котором работает сайт потребовало серьёзного подхода. Решить вопрос производительности нам помог модуль Memcache, который интегрирует с Друпалом Memcached и библиотеку PECL Memcache. Этот модуль хорошо нам подошёл и со своими стандартными возможностями, за одним исключением работы с альтернативными путями, из-за чего для загрузки страницы требовалось выполнять до 700 запросов, из которых значительная часть занималась выяснением альтернативных путей. Перенос этих запросов в Memcache дал нам нужную скорость обработки и сайт стал справляться с обработкой 60–70 страниц в секунду.

Дополнительные модули

Настоящая сила Друпала заключена в людях, которые составляют сообщество. Эти модули были разработаны участниками и помогли решить нам стоявшие перед нами задачи.