Создание контента Drupal CCK программно / через API - PullRequest
5 голосов
/ 21 апреля 2009

Я работаю с системой Drupal 6.x для создания программ упражнений / персональных тренировок и использую CCK с типами контента «Упражнение и программа», где программа содержит несколько полей заголовка и список ссылок на узлы для упражнений это состоит из. Это прекрасно работает, и я могу вручную создавать программы, которые работают нормально. Теперь я хочу создать модуль, который может генерировать эти программы автоматически на основе ряда разработанных мной алгоритмов, процесс будет выглядеть следующим образом:

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

Упражнение имеет ряд связанных атрибутов, и хотя я мог бы выполнить все вышеперечисленное, используя SQL непосредственно в таблицах, это было бы довольно сложно и неправильно. Я хотел бы на шаге 1 загрузить упражнения в виде массива объектов Exercise (node_load?), А затем создать программный объект и сохранить. Возможен ли такой подход типа ОО или мне приходится прибегать к манипулированию данными напрямую?

Ответы [ 4 ]

5 голосов
/ 21 апреля 2009

Лучший способ решить эту проблему - написать собственный модуль для этого.

Шаг 1: вы можете выполнить node_load ($ nid) для всех функций Шаг 2 вы можете использовать user_load ($ uid) Шаг 3: вам нужно будет перебрать объект пользователя и сопоставить его с соответствующими значениями. Шаг 4/5 Я бы создал новый $ node = stdClass (); возьмите объект и заполните атрибуты правильными данными, затем выполните node_save ($ node); это назначит ему $ node-> id и т. д.

Если вы не знаете, какие атрибуты находятся в узле вашей обучающей программы, то выполните print_r ($ node); на одном вы уже создали.

Phil

1 голос
/ 21 апреля 2009

Drupal не предоставляет никакого «каскадного» механизма сохранения для сохранения иерархии узлов одним махом. Вам нужно будет построить каждый узел в коде и явно вызвать для него node_save (), как описано Филом Картером.

Модуль Экспорт узла может генерировать пример кода для программного создания узла (с полями CCK).

0 голосов
/ 23 апреля 2009

Я не думаю, что "создание" этих программ даже необходимо.

Почему бы просто не отобразить список упражнений, которые соответствуют вашим требованиям, и поделиться «характеристиками» с пользователем.

Я бы достиг этого, сделав так называемые «характеристики» таксономией. Затем присоединяется к пользователям либо с профилем, либо с таксономическим флагом. Затем отобразите список (возможно, даже вид вначале) и список с теми же характеристиками в упражнениях.

Это будет динамически и специфично для пользователя, и к сведению требуется предварительная загрузка нескольких программ.

Мысль.

0 голосов
/ 21 апреля 2009

Существует множество модулей, которые пытаются правильно выполнить импорт. Взгляните на их сравнение http://groups.drupal.org/node/21338

Если вам нужны стратегии или примеры импорта содержимого в узлы, это отличный ресурс.

...