Создание контента Drupal CCK программно / через API
Я работаю с системой Drupal 6.x для создания программ упражнений / персональных тренировок, и я использую CCK с типами содержимого Exercise и Program, где Program содержит несколько полей заголовка и список ссылок на узлы для упражнений, из которых она состоит, Это прекрасно работает, и я могу вручную создавать программы, которые работают нормально. Теперь я хочу создать модуль, который может генерировать эти программы автоматически на основе ряда разработанных мной алгоритмов, процесс будет выглядеть так:
- Загрузить все упражнения в массив
- Загрузить личные данные пользователей (введено ранее)
- Установите наиболее подходящие упражнения
- Создать новый тип контента программы
- Сохранить программу
Упражнение имеет ряд связанных атрибутов, и хотя я мог бы выполнить все вышеперечисленное с использованием SQL непосредственно в таблицы, это было бы довольно сложно и не показалось бы правильным. Я хотел бы на шаге 1 загрузить упражнения в виде массива объектов Exercise (node_load?), А затем создать программный объект и сохранить. Возможен ли такой подход типа ОО или мне приходится прибегать к манипулированию данными напрямую?
4 ответа
Лучший способ решить эту проблему - написать собственный модуль для этого.
Шаг 1: вы можете выполнить node_load($nid) для всех выражений. Шаг 2: использовать user_load ($ uid). Шаг 3: вам нужно будет выполнить итерацию по объекту пользователя и сопоставить его с соответствующими значениями. Шаг 4/5 Я бы создал новый $node = stdClass(); возьмите объект и заполните атрибуты правильными данными, затем выполните команду node_save($node); это назначит ему $node->id и т. д.
Если вы не уверены, какие атрибуты находятся в узле вашей обучающей программы, то выполните print_r($node); на одном вы уже создали.
Фил
Drupal не предоставляет никакого "каскадного" механизма сохранения для сохранения иерархии узлов одним махом. Вам нужно будет построить каждый узел в коде и явно вызвать для него node_save(), как описано Филом Картером.
Модуль Node Export может генерировать пример кода для программного создания узла (с полями CCK).
Существует множество модулей, которые пытаются правильно выполнить импорт. Взгляните на их сравнение http://groups.drupal.org/node/21338
Если вам нужны стратегии или примеры импорта содержимого в узлы, это отличный ресурс.
Я не думаю, что "создание" этих программ даже необходимо.
Почему бы просто не отобразить список упражнений, соответствующих вашим требованиям, и поделиться "характеристиками" с пользователем.
Я бы сделал это, сделав так называемые "характеристики" таксономией. Затем прикрепляется к пользователям либо с профилем, либо с таксономическим флагом. Затем отобразите список (возможно, даже вид вначале) и список с теми же характеристиками в упражнениях.
Это было бы динамично и специфично для пользователя, и к сведению требуется предварительная загрузка нескольких программ.
Мысль.