Pregunta

Estoy planeando colocar el inventario de una tienda en un sitio de Drupal y me pregunto si es posible crear un script (¿quizás en python / php?) para ingresar los datos automáticamente a Drupal con CCK? Gracias de antemano!

¿Fue útil?

Solución

Hay un par de módulos de Drupal dedicados a diferentes escenarios de importaciones externas (en masa); consulte esta descripción general para opciones / comparaciones.

Si tiene necesidades muy específicas, puede escribir su propio módulo, utilizando los existentes y el enlaces / sugerencias proporcionadas por googletorps (+1) para obtener orientación sobre cómo realizar la inserción real mientras se ignoran las generalizaciones.

Otros consejos

Lo más rápido y fácil sería hacer las cosas con un pequeño módulo de Drupal que creas para el caso, en lugar de tener que enviar muchas publicaciones al servidor y gastar recursos en cargas de nodos y otras cosas.

De todos modos, lo que necesitas para esto es bastante similar a lo que Mac responde aquí :

En este caso, no necesita todas las cosas especiales de file_field, pero aún necesita insertar los valores para los diferentes campos cck que pueda tener y el cuerpo y título del nodo. Después de establecer el valor que puede obtener directamente de su base de datos, puede guardar su nodo.

Si te conectas directamente a la base de datos, debes tener el mismo tipo que el que usas para drupal, o hacerlo fuera de la api de Drupal. Si utiliza la API drupal para ello, eche un vistazo a db_set_active ()

Henrik y Googletorp ya han hecho muchas buenas sugerencias.

Algunos elementos adicionales a considerar para diseñar su estrategia:

  1. ¿Vas a hacer una tienda electrónica completa (probablemente se realizó con ubercart ) o ¿simplemente está configurando una vista de nodos, solo para presentar el inventario a los visitantes del sitio?
  2. ¿Cuántos productos vas a importar?
  3. ¿Con qué frecuencia va a reimportarlos?

Soluciones que me gustaría excluir con seguridad:

  • POST: comentado por googletorp, sería demasiado complicado.
  • Secuencia de comandos externa: realmente no puede evitar (a menos que quiera vivir peligrosamente y / o tenga tiempo que perder) usando la API de drupal, ya sean las principales o las de ubercart. Los datos se encuentran dispersos en varias tablas, y hay muchos enlaces que se activan cuando se inserta un nodo. La única excepción es si realizaría un script PHP que ejecutara primero la rutina de arranque (vea la estructura de index.php o xmlrpc.php para ver cómo funciona), pero en ese caso, preferiría un módulo en conjunto: mucho más elegante, portátil y fácil de mantener.

Soluciones que yo apoyaría:

  • ¡Haz tu propio módulo! Como lo señaló googletorp, di un código de ejemplo sobre cómo agregar campos de CCK en esta respuesta .
  • Sí, eso es ... ¡es el único en el que creo! ;)

Sin embargo, lo que aprendí es igualmente importante, es seleccionar una fuente de datos adecuada para la importación . Aquí está mi opinión:

  • Lea directamente desde la base de datos: Solo es bueno si tiene que importar cosas de una vez por todas y si el esquema de base de datos de la aplicación de exportación es lo suficientemente simple para crear consultas razonables . El software cambia y evoluciona, y los esquemas DB siguen. Si se encuentra en la necesidad de volver a importar dentro de dos meses y el esquema de su otra aplicación ha cambiado, tendrá que cambiar su código, cambiar pruebas, etc., etc. ...
  • Use archivos XML: si su aplicación original puede exportar en este formato, con PHP ' SimpleXML y Xpath + PHP typecasting es realmente una brisa para obtener los datos que desea en el formato que desee en cuestión de minutos. El único inconveniente de este método es que se basa en ... archivos. Por lo tanto, si necesita realizar importaciones periódicas no tripuladas y automáticas, es un poco difícil prever todos los problemas que pueden suceder (permisos incorrectos en sistemas de archivos, archivos dañados, codificación incorrecta ...) y poner en marcha contramedidas . A la inversa, me gusta mucho este método porque sé que alguien supervisará el proceso de importación todo el tiempo y puede intervenir en caso de problemas.
  • Servicio web: Es el que más me gusta si tengo que importar de forma automática y periódica. La mayor ventaja es que las dos aplicaciones " hablar " entre sí, y exponga parte de su lógica empresarial, para que pueda tener una sesión que parezca: "hey, necesito todos los productos que han cambiado los precios desde la semana pasada" - "aquí estás, deberían ser 127, en tres categorías, ¿copia eso?" - " Oh, sí ... ¡Todos son fuertes y claros: 127 elementos y 3 categorías! " Esto simplifica mucho atrapando errores y excepciones. Mientras Drupal trabaja en la caja como un consumidor y proveedor de servicios web, tendrá que implementar el servicio web también en la otra aplicación, y esto podría o no ser difícil: depende totalmente de la aplicación exportadora.

HTH!

CCK o de otro modo, es solo una consulta POST bien formada (presumiblemente), seguro, adelante.

Si sus datos de origen están en MySQL, estaría buscando en el módulo Migrate para crear contenido. Aquí hay un extracto de su página del proyecto:

  

... proporciona un marco flexible para migrar contenido a Drupal desde otras fuentes (por ejemplo, al convertir un sitio web de otro CMS a Drupal). Fuera de la caja, se incluye soporte para crear objetos centrales de Drupal, como nodos, usuarios, archivos, términos y comentarios; se puede extender fácilmente para migrar otros tipos de contenido. El contenido se importa y se retrotrae mediante una interfaz web integrada (módulo UI de Migrate) o comandos Drush incluidos (muy recomendable).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top