Как делали сайт журнала "Популярная наука" (Popular Science Magazine, PopSci.com)

Главные вкладки

Аватар пользователя andyceo andyceo 30 марта 2008 в 12:55

Небольшое предисловие от меня. Эта запись является копией этой записи на моём блоге. Я нашёл эту статью давно, на сайте drupal.org. Она оказалась очень полезной, и я думал, что её кто-нибудь переведёт. Однако этого не случилось, и я решил сделать это сам. Пусть эта статья будет ответом всем скептикам, которые не верят в Drupal - на самом деле, вы просто не умеете его готовить. Также, статья будет весьма полезна всем тем, кто планирует вести большие проекты на Drupal.

По итогам анализа разработки сайта для журнала "Популярная Наука", представленного на конференции DrupalCon 2008 в Бостоне Кевином Бриджесом (Kevin Bridges, cyberswat), Лаура Скотт и другие сотрудники pingVision вместе с Меган Миллер и Джоном Махони из PopSci.com, представляют исследование подходов к разработке сайта PopSci.com. Мы приветствуем Ваши вопросы и отзывы.

Главная страница сайта Popular Science

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

Главная страница Popular Science - полный вид

Другой проблемой являлась интеграция сайта с несколькими сторонними сервисами, в том числе торговой системой ценных бумаг, видео сервисами и услугами хостинга, а также сервисами рекламы.

В ходе разработки нового сайта 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), предоставляя пользовательский, расширяемый фильтр ввода.

Статьи (Articles)

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

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

DME screenshot

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

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

Структура статьи

  • Article Images -- поле Node Reference, указывающее на изображения, используемые в статье.
  • Associated Photo Gallery -- поле Node Reference, указывающее на фотогалереи.
  • Body -- тело статьи.
  • Category Badge -- Изображение для таксономии, которое будет применяться в качестве графического значка этой статьи (типа бейджик).
  • Credit -- Автор статьи.
  • DEK -- краткое описание статьи.
  • Primary Category -- термин первичной таксономии, для сайта представленной основными навигационными зонами.
  • Related Articles -- поле Node Reference, предназначенное для размещения ссылок на схожие статьи.
  • Tags -- поле для ввода тегов (обычное поле для ввода терминов словаря с автозаполнением).
  • Title -- Название статьи (поле предоставлено ядром Drupal).
  • V7id -- ID оригинальной статьи в CMS Vignette 7, таким образом, возможны перекрестные ссылки. Это было полезно для перенаправления старых ссылок на новое содержимое в Drupal. [См. дискуссию по поводу импорта ниже]
  • Video Link -- поле Node Reference, указывающее на соответствующие видеоролики.

Свежий номер (Current Issue)

Recent screenshot

Тип материала "свежий номер" представляет собой номер журнала. Он используется для хранения изображений обложек журналов вместе с их датами. Этот тип материалов используется в различных промо-материалах на всём сайте.

Структура свежего номера

  • Cover -- изображение, представляющее обложку журнала.
  • Issue Date -- дата публикации этого номера.
  • Title -- название (поле предоставлено ядром Drupal).

Похожее (Featured Tout)

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

Feature tout screenshot

Структура Featured Tout

  • Associated Article -- поле Node Reference, указывающее на "расхваливаемую" статью.
  • DEK -- краткое описание этой статьи.
  • Index Display Link -- слово, используемое в качестве ссылки.
  • Title -- Название (поле предоставлено ядром Drupal).

Изображения (Images)

images screenshot

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

Структура изображений

  • Credit -- автор изображения.
  • DEK -- краткое описание изображения.
  • Photo Gallery Link -- поле Node Reference, указывающее на фотогалерею. Если изображение ссылается на галерею, оно проявляется в этой фотогалерее.
  • Photo Gallery Weights -- Это поле содержит последовательность пар чисел, где каждая пара представляет фотогалерею и вес изображения в этой фотогалерее.
  • Primary Category -- термин первичной таксономии, для сайта представленной основными навигационными зонами.
  • Title -- Название статьи (поле предоставлено ядром Drupal).
  • V7id -- ID оригинального изображения в CMS Vignette 7, таким образом, возможны перекрестные ссылки. Это было полезно для перенаправления старых ссылок на новое содержимое в Drupal. [См. дискуссию по поводу импорта ниже]
  • Video Link -- поле Node Reference, указывающее на соответствующие видеоролики.

Фотогалерея (Photo Gallery)

gallery

Фотогалерея является типом материалов, предназначенный для сбора изображений и материалов, которые будут отображаться для конечного пользователя в качестве фотогалереи. Изображения присоединяются к фотогалерее путём редактирования изображения - нужно ввести название галереи в соответствующем поле Node Reference. Галереи представлены в виде Node Carousels, что придаёт им глянцевости и интерактивности.

Структура фотогалереи

  • Category Badge -- Изображение для таксономии, которое будет применяться в качестве графического значка этой галереи (типа бейджик).
  • Credit -- Автор галереи.
  • DEK -- краткое описание галереи.
  • Icon -- поле Node Reference, указывающее на картинку, которая используется во время просмтора анонса галереи.
  • Primary Category -- термин первичной таксономии, для сайта представленной основными навигационными зонами.
  • Tags -- поле для ввода тегов (обычное поле для ввода терминов словаря с автозаполнением).
  • Title -- Название галереи (поле предоставлено ядром Drupal).
  • V7id -- ID оригинальной галереи в CMS Vignette 7, таким образом, возможны перекрестные ссылки. Это было полезно для перенаправления старых ссылок на новое содержимое в Drupal. [См. дискуссию по поводу импорта ниже]

Пользовательское Видео (User Video)

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

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

Структура Video

  • Category Badge -- Изображение для таксономии, которое будет применяться в качестве графического значка этого видео (типа бейджик).
  • Credit -- автор видео.
  • DEK -- краткое описание видео.
  • Primary Category -- термин первичной таксономии, для сайта представленной основными навигационными зонами.
  • Tags -- поле для ввода тегов (обычное поле для ввода терминов словаря с автозаполнением).
  • Title -- Название видео (поле предоставлено ядром Drupal).
  • Video Link -- A hosted video handled by an extension to the media module. Размещённое видео через расширение файла привязывается к медиа-модулю.

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

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

Поиск

Special search module screenshot

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

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

Каждый поиск кешируется, ему присвается хэшированный номер (ID), и связывается с пользователем, выполнившим этот поиск, позволяя сберегать время поиска в будущем.

AJAX-вкладки (AJAX Tabs)

Во многих случаях дизайнерские работы, что мы получали, требовали сделать вложенный набор вкладок (табов), которые могли бы функционировать как фильтр того материала, который отображается на определенной странице. Это было в значительной степени реализовано с помощью компонента Tabs из модуля Javascript Tools. Вместе с тем, для вкладок с большими объёмами данных, отображаемых на главных страницах основных категорий и в результатах поиска, необходимо было собственное решение (оптимизированный код), чтобы иметь возможность работать и реагировать быстро при больших объемах данных.

Производительность

Естественно, был произведён тщательный отбор аппаратного обеспечения для размещения сайта журнала Popular Science, но настоящим лидером оптимизации этого проекта стал модуль Memcache, который интегрирует Drupal с Memcached и библиотекой PECL Memcache. Прямо "из коробки", этот модуль работал очень хорошо для нас, за исключением работы с псевдонимами URL: полная загрузка страницы генерировала больше 700 запросов для определения псевдонимов URL. Направление этих запросов через Memcache дало нам необходимую скорость, чтобы сохранить первоначальную среднюю нагрузку в примерно 60-70 просмотров страниц в секунду.

Модули, разработанные сообществом

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

  • Администрирование
    • Abuse -- позволяет пользователям помечать материалы и комментарии к ним, как оскорбительные, для последуещего просмотра администратором.
    • Avatar Approval -- создает рабочий процесс для модерации пользовательских аватаров.
    • Custom Error -- позволяет администратору сайта создавать собственные страницы ошибок для ситуаций 404 (не найдено), и 403 (отказано в доступе), без необходимости создания документов для каждой из них.
    • JQuery Update -- упрощает модернизацию jQuery в Drupal 5. JQuery 1.0.1 входит в Drupal 5, однако он не очень хорошо поддерживается в сообществе jQuery.
    • Path Auto -- автоматически генерирует синоним URL для различных видов содержания (документов, категорий, пользователей), не требуя от пользователя вручную указывать путь для синонима.
    • Update Status -- проверяет один раз в день сайт drupal.org, чтобы узнать, существуют ли новые официально опубликованные версии Drupal и любых модулей, которые вы используете.
    • URL List -- создает список URL-адресов документов в виде /q=urllist.txt (или /urllist.txt для чистых URL) для последующей отправки в поисковые системы, такие, как Yahoo! Site Explorer.
  • Пользователи: доступ и аутентификация
    • Account Reminder -- посылает заново приветственное письмо для пользователей, которые зарегистрировались на сайте, но пока еще не вошли в систему.
    • Login Toboggan -- предлагает ряд изменений в системе управления пользователями Drupal во внешнем модуле.
  • CCK
    • Content Construction Kit ( CCK ) -- позволяет Вам создавать и настраивать поля к документам с помощью веб-браузера.
    • CCK Taxonomy Fields -- словари таксономии будут отображаться как поля, которые могут быть добавлены к типам материалов, используя CCK.
    • Date -- гибкое поле "дата/время" для модуля CCK.
    • Fivestar -- добавляет чистый, привлекательный виджет голосования в документы (ноды) Drupal 5.
    • ImageField -- обеспечивает загрузку изображений для CCK.
    • Link -- предоставляет поле CCK, которое позволяет добавить полную ссылку на ваш тип материала.
  • Коммерция/реклама
    • AdSense -- предоставляет владельцам сайта средства, чтобы заработать прибыль от посетителей, размещая объявления от компании Google AdSense или SiteSearch на своих сайтах.
  • Разработчик
    • API -- реализация генератора спецификаций и документации Doxygen, настроенный для выдачи в соответствии с основным кодом Drupal.
    • Coder -- позволяет просматривать код и помогает при обновлениях.
    • DBA -- предоставляет администраторам Drupal прямой доступ к таблицам базы данных Drupal из стандартного пользовательского интерфейса Drupal.
    • Devel -- набор модулей, содержащий полезные утилиты для разработчиков модулей и тем.
    • Javascript Tools -- предлагает интегрированный набор Javascript- и AJAX-модулей и общий набор методов для расширения тех возможностей, которые имеются в ядре Drupal (drupal.js) для разработки Javascript- и AJAX-модулей под Drupal.
    • Simple Test -- фреймворк для автоматизированного запуска тестов модулей в Drupal.
  • Фильтры ввода/редакторы
    • Filter by node type -- Позволяет администратору ограничивать, какой фильтр ввода доступен для пользователя, через редактирование прав доступа для роли пользователя. Модуль, однако, не позволяет администраторам задавать форматы ввода отдельно для каждого типа материалов.
    • HTML Corrector -- корректирует HTML-код, введённый в поле ввода материала.
  • Медиа
    • ImageCache -- инструмент для динамической обработки и кэширования изображений.
    • Taxonomy Image -- позволяет администраторам сайта связывать изображение с термином таксономии.
  • Безопасность
    • CAPTCHA -- простой тест в виде "вопрос-ответ", наиболее часто помещаемый в веб-формах, для того, чтобы определить, является ли посетитель сайта человеком или роботом.
  • Интеграция со сторонними продуктами
    • Import Typepad / MoveableType -- позволяет импортировать TypePad-контент, из файла-экспорта TypePad.
    • Memcahce -- для совместного использования Memcached и библиотеки PECL Memcache с Drupal.
    • Omniture -- интегрирует систему мониторинга статистики Omniture Site Catalyst с Drupal-сайтом.
    • Service Links -- позволяет администраторам добавить ссылки на ряд таких социальных сервисов, как сайты социальных закладок, сайты для поиска по блогам и т.д.
    • XML Sitemap -- создаёт карту сайта в соответствии со спецификациями sitemaps.org.
    • Yahoo Terms -- предоставляет другим модулями интерфейс для использования сервиса Yahoo Term Extractor.
  • Почта
    • Mime Mail -- модуль для компонента Mime Mail.
    • Send -- добавляет возможность (ссылку) "сообщить другу" для любого типа материалов, отслеживает свои действия в системе CiviCRM (если она установлена), и ведет историю отправленных элементов.
  • Отображение содержимого
    • Node Carousel -- простой в использовании способ отображения документов, используя библиотеку jCarousel для jQuery.
    • Node Queue -- позволяет администратору произвольно добавлять документы в группы, для любых целей.
    • Site Map -- предоставляет карту сайта, которая даёт посетителям общее представление о вашем сайте.
    • Views -- представляет собой гибкий метод для разработчиков Drupal-сайтов контролировать, как будут представлены списки материалов.
    • Views Bookmark -- гибкая система закладок, которая может полностью настраивается администратором.
  • Содержимое
    • Meta Tags -- позволяет вам установить некоторые метатеги отдельно для каждого документа, какого-либо вида (элемента модуля Views) или страниц, сгенерированных с помощью модуля Panels.
    • Scheduler -- позволяет опубликовывать и снимать с публикации документы в указанное время.
    • Similar Terms -- пытается определить смысл, контекст документа, показывая блок со ссылками на другие материалы схожего содержания.
  • Связанные с темами модули
    • Simple Menu -- создаёт меню, которое отображается в верхней части каждой страницы.
  • Утилита
    • Token -- токены (лексемы) - это маленькие кусочки текста, которые могут быть помещены в более крупные документы через простые обозначения, например такие, как %site-name или [user].
  • Оценка/рейтинг
    • Voting API -- помогает разработчикам, которые хотят использовать стандартизированное API и методы для хранения, поиска, и сведения голосов, отданных за тот или иной документ Drupal.

Источник: Popular Science Magazine (PopSci.com) Case Study

Комментарии

Аватар пользователя andyceo andyceo 31 марта 2008 в 18:57

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

А остальное - за нами! Давайте и мы напишем какую-нибудь замечательную статью, и тогда уже её будут переводить с русского на английский!

Аватар пользователя Valeratal Valeratal 31 марта 2008 в 21:24

Кто нибудь щупал DME
это удобная штука?
А то я просто не совсем понимаю, в чем преимущество перед обычной вставкой картинок

Аватар пользователя kyky kyky 1 апреля 2008 в 14:01

сразу же после прочтения статьи скачал DME - там написано, что пока в наличии только документация и сырые исходниики... видимо не торопятся публиковать. А судя по тексту, это модуль макроязыка для создания сложной разметки без помощи panels.
И кстати, на офицальном сайте есть статья про сайт New York Observer - думаю, полезной информации в ней не меньше... Когда б найти время для перевода!

Аватар пользователя andyceo andyceo 1 апреля 2008 в 18:56

И кстати, на офицальном сайте есть статья про сайт New York Observer - думаю, полезной информации в ней не меньше... Когда б найти время для перевода!

Вы про эту статью говорите? - http://drupal.org/nyobserver ?

Кстати, в этом же разделе, где находится статья про NYO, полно других не менее интересных. Я приметил вот эту:

Information.dk - Another Drupal Newspaper Site

В общем, я взялся за их перевод Smile Ждите, скоро будет.

Аватар пользователя kyky kyky 2 апреля 2008 в 8:05

Да, я имел в виду именно эту статью. Меня она заинтересовала уже тем, что выдаётся почти в каждом запросе поиска, что бы я не искал! Думаю, что в скорем времени тоже займусь переводом (с англицким у меня в порядке).

Аватар пользователя andyceo andyceo 2 апреля 2008 в 12:46

Опа-ньки, спасибо Pozniy Вам за ссылку... не очень хочется мартышкин труд делать. Я уже пару абзацев было перевёл.

kyky, предлагаю договориться, кто какие статьи будет переводить, чтобы не делать одну и ту же работу несколько раз. Я тогда, в свете вышеуказанной ссылки, перевожу сейчас Information.dk - Another Drupal Newspaper Site В Яндексе посмотрел, вроде пока её нет ещё на русском.

Аватар пользователя rajaka rajaka 13 апреля 2008 в 18:18

Спасибо за хорошую обзорную статью. В ней есть главное -- представление Архитектуры подобных проектов.

Аватар пользователя Niksir Niksir 12 октября 2008 в 23:03

т.е. поставив те модули, что тут указаны в статье в принципе можно сделать свою газету (журнал) ?
(я вас правильно понимаю ?)

Аватар пользователя PVasili PVasili 13 октября 2008 в 0:10

В принципе правильно...
Берём подходящий кусок скальной породы, хороший инструмент и получаем отличную статую (с)

Аватар пользователя dfaker dfaker 12 октября 2008 в 23:31

Niksir надо было смайл поставить а то некоторые могут всерьез воспринять эти слова. Разработчик превращает функционал в работающий и отвечающий требованям сайт

Аватар пользователя dfaker dfaker 13 октября 2008 в 9:38

PVasili ага приверно так, только нужно еще написать - убираем все лишнее получаем отличную статую Smile Микеланжело (с)

Аватар пользователя Valeratal Valeratal 14 октября 2008 в 10:14

Niksir - там половина модулей не в открытом доступе

P.S. Много у них модулей конечно, интересно, какая посещаемость и какое железо это тянет

Аватар пользователя penexe penexe 6 ноября 2008 в 18:12

"zloi_bober" wrote:
Спасибо от новичка, общий подход и описание назначения модулей - для старта неочемо.

о_О

Аватар пользователя Gats Gats 26 августа 2009 в 13:27

"Pozniy" wrote:
Статья про New York Observer уже переведена (если не ошибаюсь). Видел на одном из авторских родственных друпаловских проектов. Нужно поюзать поиск в яндексе...
Ага, вот - http://www.q2u.ru/newyork_observer[/quote]

Ссылка мертвая. Sad Может у кого остался оригинал переведенной статьи? Выложите куда-нибудь, если не сложно.