Возможно ли создать скрипт для ввода данных с помощью Drupal?

StackOverflow https://stackoverflow.com/questions/1808721

  •  05-07-2019
  •  | 
  •  

Вопрос

Я планирую разместить инвентарь магазина на сайте Drupal, и мне интересно, возможно ли создать скрипт (возможно, на python / php?) для автоматического ввода данных в Drupal с помощью CCK?Заранее спасибо!

Это было полезно?

Решение

Существует несколько модулей Drupal, посвященных различным сценариям внешнего (массового) импорта. Проверьте этот обзор для опций / сравнений.

Если у вас есть очень специфические потребности, вы можете написать свой собственный модуль, используя существующие и ссылки / подсказки, предоставленные googletorps (+1) для получения рекомендаций о том, как выполнить фактическую вставку, игнорируя обобщения.

Другие советы

Самым быстрым и легким делом было бы сделать что-то с небольшим модулем Drupal, который вы создали для случая, вместо того, чтобы отправлять много сообщений на сервер и тратить ресурсы на загрузку узлов, а что нет.

В любом случае, то, что вам нужно для этого, очень похоже на то, что Mac отвечает здесь :

В этом случае вам не нужны все специальные файлы file_field, но вам все равно нужно вставить значения для различных полей cck, которые у вас могут быть, а также тело и заголовок узла. После установки значения, которое вы можете получить непосредственно из вашей базы данных, вы можете сохранить свой узел.

Если вы подключаетесь к БД напрямую, вам нужно иметь тот же тип, который вы используете для drupal, или делать это вне API-интерфейса Drupal. Если вы используете для этого API-интерфейс drupal, ознакомьтесь с db_set_active ()

Хенрик и Googletorp уже внесли много хороших предложений.

Несколько дополнительных элементов, которые следует учитывать при разработке вашей стратегии:

  1. Собираетесь ли вы создать полноценный интернет-магазин (предположительно реализованный с ubercart) или вы просто настраиваете представление узлов, просто чтобы представить инвентарь посетителям сайта?
  2. Сколько продуктов вы собираетесь импортировать?
  3. Как часто вы собираетесь их переназначать?

Решения, которые я бы предпочел исключить наверняка:

  • Публикация: как прокомментировал googletorp, это было бы слишком сложно.
  • Внешний скрипт: на самом деле вы не можете избежать (если только вам не нравится жить в опасной обстановке и / или у вас нет свободного времени) использования API drupal, будь то базовые API или API ubercart.Данные разбросаны по нескольким таблицам, и существует множество перехватов, которые срабатывают при вставке узла.Единственное исключение - это если вы создадите PHP-скрипт, который сначала выполнит начальную загрузку (см. Структуру index.php или xmlrpc.php чтобы посмотреть, как это работает), но в этом случае я бы предпочел вообще использовать модуль:гораздо более элегантный, портативный, ремонтопригодный.

Решения, которые я бы поддержал:

  • Создайте свой собственный модуль! Как указал googletorp, я привел несколько примеров кода о том, как добавить поля CCK в этот ответ.
  • Да, это так...это единственный, в кого я верю!;)

Однако то, что я узнал, не менее важно, так это то, что выберите подходящий источник данных для импорта.Вот мое мнение:

  • Чтение непосредственно из базы данных: Хорошо только в том случае, если вам нужно импортировать материал раз и навсегда и если схема базы данных экспортирующего приложения достаточно проста для построения разумных запросов.Программное обеспечение меняется и эволюционирует, за ним следуют схемы БД.Если через два месяца вам потребуется повторный импорт и схема вашего другого приложения изменится, вам придется изменить свой код, изменить тесты и т.д. И т.п...
  • Используйте XML-файлы: Если ваше исходное приложение может экспортировать в этом формате, с помощью PHP' SimpleXML и Xpath + Приведение типов PHP получить нужные данные в нужном формате действительно несложно за считанные минуты.Единственным недостатком этого метода является то, что он опирается на...Файлы.Итак, если вам нужен периодический беспилотный и автоматический импорт, немного сложно предвидеть все проблемы, которые могут возникнуть (неправильные разрешения в файловых системах, поврежденные файлы, неправильная кодировка ...) и принять контрмеры.И наоборот, мне очень нравится этот метод, когда я знаю, что кто-то будет постоянно контролировать процесс импорта и сможет вмешаться в случае возникновения проблем.
  • Веб-сервис: Это то, что мне нравится больше всего, если мне приходится импортировать автоматически и периодически.Самым большим преимуществом является то, что два приложения "общаются" друг с другом и раскрывают часть своей бизнес-логики, так что вы действительно можете провести сеанс, который выглядит как:"эй, мне нужны все товары, цены на которые изменились с прошлой недели" - "вот, пожалуйста, их должно быть 127, в трех категориях, вы поняли?" - "О да...Произнес все это громко и четко:127 наименований и 3 категории!".Это упрощает очень много отслеживание ошибок и исключений.Хотя Drupal работает как потребитель и поставщик веб-сервисов, вам придется реализовать webservice также в другом приложении, и это может быть сложно, а может и нет:это полностью зависит от экспортирующего приложения.

ХТХ!

CCK или иным образом, это просто хорошо сформированный POST-запрос (предположительно), поэтому обязательно сделайте это.

Если ваши исходные данные находятся в MySQL, я бы посмотрел на модуль Миграция , чтобы создать содержание. Вот выдержка из его страницы проекта:

  

... предоставляет гибкую структуру для миграции контента в Drupal из других источников (например, при конвертации веб-сайта из другой CMS в Drupal). Встроенная поддержка для создания основных объектов Drupal, таких как узлы, пользователи, файлы, термины и комментарии, включена в нее и может быть легко расширена для переноса других видов контента. Содержимое импортируется и откатывается с помощью встроенного веб-интерфейса (модуль Migrate UI) или включенных команд Drush (настоятельно рекомендуется).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top