Импорт 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.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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
                            Так вот, сначала нужно создать типы контента Б и В, а потом уже импортировать А :)

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