Как мне разрешить этот конфликт между двумя функциональными модулями?
У меня есть два типа контента с различными меню, представлениями, меню и т.д. который я упаковал в виде двух функциональных пользовательских модулей. Оба типа контента используют таксономию и используют несколько одинаковых полей в базе данных. Когда я загружаю эти функциональные модули на новый сайт, они показывают конфликты друг с другом из-за этих общих полей и словарного запаса, и я не уверен, что было бы лучшим способом разрешить конфликт.
Хотя функциональные модули предназначены для работайте вместе, им не нужно, чтобы оба присутствовали на одном и том же сайте. Каждый из них также может работать с другими различными функциями. Они оба используют таксономию и поля для фильтрации представлений и т. Д., Поэтому имеет смысл, чтобы каждый из них включал эти компоненты в свое определение функций. Должен ли я:
- Удалить поля и таксономию из одного из модулей и объявить зависимость от другого? Это нежелательно, так как каждый может работать без другого.
- Сделайте две версии функции, одна для независимого использования, а другая для совместной работы.
- Определить поля и таксономию как отдельную функцию?
- Игнорировать конфликт и включить модули? (Если я это сделаю, будут ли они оба делить поле?)
- Другое решение?
Я еще не проверял это, но будет ли отключение или удаление одного из двух модулей функций удалять поля из базы данных, даже если этого требует другой модуль?
3 answers
Создайте третью функцию, определяющую компоненты (*), используемые двумя другими независимыми функциями.
В двух других функциях удалите компоненты, на которые теперь претендует третья функция, и вместо этого перечислите третью функцию в качестве зависимости.
(*) Однако в функциях для Drupal 7 эта функция еще не закреплена - см. http://drupal.org/node/1064472 , и помогите просмотреть предлагаемый там код. - Этот патч был привержен функциям 7.x-2.x.
Это решение в d.o отлично работало для меня, гораздо более надежное для экспорта на различные сайты, чем создание третьей функции, которая создавала бы осиротевшие поля на другом несвязанном сайте.
Одно из решений, которое сработало для меня, состояло в том, чтобы объединить две функции в одну большую функцию.Это разрешило конфликты.