План перехода на мерзость PHP5 в Drupal


8

Фон

Через год мои клиенты собираются портировать довольно сложную службу портала интранета (планирование, фактическое отслеживание и отчетность и т. Д.) На Drupal, потому что так говорит главный офис. Было сделано очень мало усилий, чтобы определить, является ли это правильным техническим выбором, и он находится вне контроля моих клиентов или даже их начальников.

Текущий портал - это мерзость, которая находится в процессе ре-факторинга, и я считаю, что наиболее экономически эффективным планом будет введение уровня модели домена с помощью Doctrine 2 и использование 99,9% всей логики проверки бизнеса и входных данных в моделях. , выплескивая мерзость, пока это не скелетный вид и логический уровень аутентификации.

Вопрос

Для любого специалиста по Drupal это кажется жизнеспособным подходом? Может ли Doctrine2 хорошо играть с Drupal, или для более высокой логики Drupal нужна более тесная интеграция с данными?

Ответы:


9

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

Когда мы делаем это, мы обычно создаем тип контента, чтобы «заглушить» контент в другой системе. Тип содержимого содержит только заголовок узла и поле CCK для уникального идентификатора в другой системе. Наряду с этим много функций hook_nodeapi . Например, loadловушка вызовет удаленную систему и добавит данные в узел. Вам также необходимо разработать метод получения внешних данных в результатах поиска. Есть несколько способов для этого, но они слишком длинны, чтобы войти сюда.

Хотя есть некоторые недостатки, мы считаем, что это хорошо работает и допускает обычные вещи в Drupal, такие как комментарии, теги и т. Д.


Если это должно быть внешним, это хороший подход.
Джереми Френч

4

Единственная разумная вещь, которую нужно сделать, учитывая временную шкалу, - это построить ее в Drupal 7. Одна из наиболее важных особенностей Drupal 7 - это сущности, DBNTG и поля.

Краткий обзор

  • Сущности - это способ определения структуры данных. Примеры сущностей, встроенных в Drupal: узлы (основной контент), пользователи, термины таксономии.
  • Поля - это то, что может быть присоединено к объекту, который также содержит данные. Преимущество использования полей заключается в наличии только одного места для обработки данных, и они могут расширяться различными способами. Примером поля может быть вложение файла или ссылка на другой объект.
  • DBTNG (база данных следующего поколения) - это то, что сообщество Drupal кодировало как новый уровень абстракции базы данных. До этого мы делали запросы с заполнителями (что все еще поддерживается), но теперь большинство запросов строятся с помощью класса. Причиной этого также является то, что поля получают свои таблицы базы данных, созданные на основе настроек. Это помогает создавать код, который будет работать, даже если поля создаются с разными настройками.

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

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


К сожалению, я оставляю своего клиента примерно через месяц, и после этого они остаются одни. Abomination находится под довольно значительной нагрузкой / использованием с новыми «функциями», добавляемыми, как мы говорим. Вся эта ситуация - беспорядок, от которого мне частично не удалось направиться в лучшую сторону. В свою защиту, он начал работать за неделю до того, как меня наняли, чтобы помочь освободить воду.
Дэвид

4

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

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

Типы контента - удобный способ разделения контента. Даже у мерзости были бы вещи типа I (я бы надеялся), которые сопоставляются с URL.

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

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

Я бы сказал, что стоило бы нанять кого-нибудь, чтобы сделать это. Были некоторые очень успешные миграции Drupal с огромными наборами данных. Но если у вас нет опыта работы с Drupal, вы можете сделать несколько ошибок и потратить много времени. (Я могу лично порекомендовать cyrve , у меня нет с ними текущей связи)


Я передам Cyrve моему клиенту; поскольку в отделе моего клиента или смежном отделе, который подталкивает Drupal, нет никого, кто имеет опыт в разработке в Drupal, поэтому должно быть интересно посмотреть, как это закончится через год.
Дэвид
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.