11 января 2011 в 22:42

Импорт Content type вместе с CCK полями


Я как-то уже описывал процесс импорта Views, а теперь хочу расказать как импортировать Content type со всеми CCK полям.

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

Написал, чтобы самому не забыть, и другим помочь :)
Постарался максимально все описать, так что понятно будет даже новичкам.


Для начала необходимо активировать модуль "Content Copy", который входит в состав CCK
.

Теперь, если посмотреть список контента, то должна появиться новая вкладка:


Шмякаем ее, и выбираем какой контент будем импортировать:


Выбираем необходимые поля:


В результате получи нечто похожее на это:


Теперь в папке с модулем нужно создать файл module_name.install и написать в него hook_install() следующего содержания:
/**
* Implementation of hook_install()
*/
function module_name_install() {
$content_type_import = "..."; // текст импортированного типа контента

$form_state = array();
$form_state['values']['type_name'] = '';
$form_state['values']['macro'] = $content_type_import;

drupal_execute('content_copy_import_form', $form_state);
}


Кстати, есть модуль cck_import, который в точности повторяет выше мною описанное.
Также для импорта есть более серьезный модуль features.
Дмитрий @mrded
карма
49,5
рейтинг 0,0
Senior Pomidor
Самое читаемое Разработка

Комментарии (14)

  • +4
    Пора уже про семёрку писать :)
    • +4
      согласен! когда все необходимые мне модули на ней будут, сразу напишу:)
      • 0
        Пишите сейчас — чем быстрее и сильнее вырастет ее популярность, тем скорее появятся модули. :)
  • +2
    Советую features, лучше сразу привыкать к хорошему
  • 0
    интересно. если доживу до второго сайта на друпале, то вероятно воспользусь)
  • +3
    В info модуля нужно добавить dependencies модулей, который будет использоваться в полях, например date, imagefield, и так далее. Следует учесть, что тут будет импортированы только поля с некоторыми данными о контенте, таксономию и прочее нужно подтягивать вручную (ну или дописать в install). Поэтому такой вид экспорта/импорта следует применять только в простых случаях.
    Features отсюда выглядит более полезным.
  • 0
    Активно использую в своих модулях views и возможность программного импорта заготовок по умолчанию. Видимо пора начинать это делать и для Content. Хотя замечание по поводу применения features более жизнеспособны в случае с обновлением | переконструированием настроек во время жизни проекта (когда надо актуализировать на production то, то наделал d test zone)
  • 0
    в 5 версии у меня была проблема с экспортом полей nodereference, там проблема заключалась в том что если тип содержания еще не создан а уже производится импорт на этот тип, то нельзя было импортировать.
    • 0
      думаю было бы логичным сначала создать тип материала, а потом отмечать его в nodereference
      • 0
        Я импортировал типы материалов у которых уже были поля нодереференце. Как по вашему мне лучше было сделать в этом случае?
        • 0
          Я не очень понял, если честно. Не могли бы Вы по подробнее описать ситуацию?
          • 0
            Ok. Скажем есть 10 типов содержания. В каждом из них есть поле нодереференце(на самом деле полей было несколько, но это сути не меняет) на какой то из этих 10 типов содержания. На експорт идет без проблем, а вот импортировать уже не могу. К примеру:
            • 0
              импортируется тип А и в нем поле нодереференце на тип содержания Б и В, которые еще не созданы(!)
              Собственно в этом и заключалась проблема.
              • 0
                Так вот, сначала нужно создать типы контента Б и В, а потом уже импортировать А :)

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.