Додати поле для кількох типів вмісту одночасно?


9

Я хочу додати поле до декількох типів вмісту одночасно та налаштувати його для всіх одночасно.

Причина полягає в тому, що у мене є багато типів контенту, які потрібно оновлювати, додаючи це нове поле до кожного. Це поле буде налаштовано однаково для всіх типів вмісту. Я повинен повторити цей процес додавання, а потім налаштування поля для кожного типу вмісту, до якого я хочу додати його, і він через деякий час стає важким.

Чи є спосіб зробити масове додавання / налаштування нового поля для багатьох типів вмісту?


Скільки типів вмісту у вас є?
bobylapointe

Я припускаю, що це питання більше не актуальне для ОП, але є актуальним для Найджела Уотерса, який встановив виграш. Чи хотіли б Ви Найджела прокоментувати?
Kari Kääriäinen

Є 25 (Це дуже великий сайт, який вимагає, щоб вони були окремими типами вмісту).
Найджел Уотерс

До речі, ще одне рішення - найняти когось дешевого для подібних матеріалів :)
donquixote

Або макрос браузера?
donquixote

Відповіді:


9

Широкими лініями за допомогою модуля "Особливості" можуть бути:

  1. Додайте поле до двох (щоб побачити візерунок) типів вмісту вручну
  2. Створіть функцію, включаючи бази полів та екземпляри полів для новостворених полів
  3. Відредагуйте створений модуль, помноживши бази та екземпляри полів на всі необхідні типи вмісту
  4. Увімкнути відредагований модуль

Я не пам’ятаю, як саме функція стосується полів .. чи можливо вимкнути цю функцію після створення полів?
donquixote

Модуль для новонародженого буде залежати від особливостей, так що в основному ні, наскільки я знаю.
Kari Kääriäinen

Я маю на увазі відключення модуля для новонароджених, а не відключення функцій. Питання полягає в тому, чи все ще будуть польові екземпляри. Можливо, Лестер Пібоді або Найджел Вотерс можуть спробувати це і повідомити.
donquixote

Ой, вибачте. Так, насправді обидва можуть бути відключені, поля будуть жити далі в базі даних, я бачу, як зараз тестую це сам.
Kari Kääriäinen

Це правильна відповідь і для налаштувань друпалів за замовчуванням, і для більшості інших установок Drupal. Але якщо у вас доступні різні режими відображення для різних типів вмісту, вам краще налаштувати поля для кожного типу вмісту вручну або переконайтесь, що ви використовуєте правильні типи відображення в коді масиву field_instance.
Sumeet Pareek

5

Використовуйте модуль « Польові інструменти» :

Колекція корисних інструментів інтерфейсу для роботи з полями:

Overview of fields with links to edit single instances, and all instances at once
Clone any field instance to multiple entities and bundles
Clone all field instance of a bundle to multiple entities and bundles
Import and export fields
Delete multiple instances of a field
Apply a vocabulary to multiple entities and bundles at once (the same way vocabularies were applied to content types on Drupal 6)
... your idea here. Patches welcome!

Це звучить досить приголомшливо, мені доведеться це подивитися.
Лестер Пібоді

3

Якщо ви не заперечуєте проти написання спеціального модуля для цього, додати поле до типу вмісту за допомогою коду порівняно просто:
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

Вищевказаний код додасть поле "field_firstname" до типу вмісту з назвою машини "person". Таким чином, ви можете створити модуль, щоб форма, яка дозволяє вибрати поле та ряд типів вмісту, а після подання поле додається до всіх вибраних типів вмісту.


1

Кілька разів, що мені довелося це зробити, я використовував колекцію польових .

Забезпечує поле для збору полів, до якого можна приєднати будь-яку кількість полів.

Це все ще досить важко, тому що вам потрібно додати поле колекційного поля до кожного типу вмісту. Це означає, що якщо ви додаєте 5 або 6 полів до кількох типів вмісту, вам потрібно лише налаштувати початкові 5 або 6 полів один раз у колекції полів.

Після цього ви створюєте поле для збору полів (для аргументів, давайте назвемо його field_collection_field) для одного зі своїх типів вмісту, а потім повторно використовуєте те саме поле для всіх інших.

Як я вже говорив, вам все одно доведеться налаштувати одне поле на x кількість типів вмісту. Але це краще, ніж створювати 10 полів на 10 типів вмісту (наприклад).


аа..сорі. Я також перечитав ваше запитання, і йому потрібно лише одне поле. Вибачте за те, що ви витратили час> _ <
Чапабу

Це означає, що ви можете помістити це поле в колекцію полів і налаштувати його так, як вам потрібно, а потім посилатись на колекцію полів із уже налаштованим полем. Однак це трохи непосильне.
Чапабу

Немає проблем Чапабу, це все-таки корисна інформація, яка рухається вперед, якщо мені потрібно щось подібне зробити вниз.
Лестер Пібоді

1

Якщо вам зручно керувати базою даних безпосередньо, польові екземпляри зберігаються в таблиці {field_config_instance}. Ви можете додати / налаштувати своє поле для одного типу вмісту, а потім знайти запис у таблиці бази даних і дублювати його.

Вам доведеться змінити два значення стовпця у повторюваному рядку:

  • id: повинно бути нове ціле число, унікальне для таблиці
  • пакет: Має бути назва машини нового типу вмісту
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.