Использование CCK для этого - действительно плохая идея.
- CCK может работать только с той архитектурой базы данных, которую он создает. Использование существующих полей CCK в существующей архитектуре базы данных практически невозможно.
- CCK изменяет структуру базы данных в зависимости от ее конфигурации. Например. Создание поля «несколько» или повторное использование поля в другом типе контента резко изменит порядок и нормализует базу данных: создание новых таблиц, удаление столбцов и т. д.
Ваш внешний скрипт должен учитывать все это. Единственный правильный способ - это обработать все через CCK API, что включает в себя написание cron-реализаций или скриптов drush.
Это оставляет вам один действительно хороший вариант: создать модуль, который определяет свои собственные типы контента. Такой модуль получает возможность определять все поля (без CCK, просто $node->foo
) любым удобным для него способом.
Это хороший пример, например, создавать узлы, которые имеют контент от внешних сервисов. Скажем, поле $ node-> price, где цена извлекается из некоторого внешнего сервиса SOAP.
Это также хороший пример, когда у вас есть устаревшие базы данных, где вам нужно читать, записывать или обновлять данные.
Еще одним преимуществом этого подхода является то, что вы можете легко ограничить действия: например, только чтение или создание и чтение, но без обновления. CCK не позволяет такие вещи (легко).