2010-06-17 20 views
5

Recientemente he creado una tabla CRUD muy simple donde el usuario almacena algunos datos. Para los datos, creé un nodo personalizado. La funcionalidad funciona muy bien para crear, editar y borrar datos en la tabla CRUD utilizando la funcionalidad básica del nodo (de hecho, me sorprende lo rápido y fácil que fue programar la funcionalidad básica con los controles de acceso adecuados con solo un poquito de código) ....¿Cuándo no utilizar un nodo Drupal?

Dado que los datos no están destinados a ser tratados de la misma manera que 'contenido', como una publicación de blog (¿no debería aparecer el título, el cuerpo, los comentarios ni las revisiones? q = página de nodos, sin vistas previas, sin avances, etc.) ... Me parece que paso la mayor parte del tiempo 'desconectando' y modificando las cosas que drupal hace automáticamente para los nodos.

Sé que es una cuestión de gusto, pero ¿dónde debería trazarse la línea de lo que debería tratarse como un nodo y qué no? En otras palabras, ¿sería mejor programar esto desde cero sin usar nodos?

+0

Como seguimiento ... Decidí no usar un nodo es mi instancia particular. Sentí que simplemente estaba usando una parte de 'datos' que (en mi opinión) nunca requeriría cosas como comentarios y control de versiones; y en su mayor parte se mantendría personal para un usuario individual (piense en datos financieros). Decidí que era más fácil de manejar, no como un nodo. Una vez dicho esto, el sistema de menú de Drupal, la API de formulario y la API de base de datos aún hacen que el 'flujo de trabajo' sea fácil de programar y personalizar. Divulgación: me gusta el control que obtengo al no usar CCK/views (pero eso es una cuestión de gusto, supongo). – stotastic

Respuesta

6

Usando los nodos para los datos personalizados tiene bastantes beneficios adicionales, además de fácil de editar/actualizar/funcionalidad de eliminación:

  • posible categorización a través de la taxonomía
  • implícita 'propiedad' a través de autor seguimiento
  • seguimiento implícita de la creación/tiempo de modificación
  • control de acceso básico de forma predeterminada, ampliable mediante una gran selección de módulos
  • generación de consulta flexible/listado/filtrado a través de vistas
  • posibles ad hoc extensiones/anotaciones a través de los campos CCK
  • posible definición de flujos de trabajo, acciones y similares
  • un gran número de ganchos para interceptar programación/ajuste casi todos el uso aspecto/escenario
  • comentando, votación , calificación y un montón de otra funcionalidad proporcionada por los módulos de terceros que trabajan en/con nodos ...

Teniendo en cuenta todo esto, yo diría que necesita una muy buena razón para no nodos utilizan para almacenar datos en Drupal. Los nodos son simplemente los bloques de construcción fundamentales para casi todo en el ecosistema de Drupal, y la sobrecarga de eliminar algunas 'características' predeterminadas no deseadas parece bastante pequeña en comparación con las ganancias.

Dicho esto, una posible razón/argumento para manejar datos separados del sistema de nodos podría ser si esos datos están directamente dirigidos a anotar otros nodos (piense en taxonomía). Pero dado que puede hacer referencia fácilmente a los nodos de otros nodos (con muchas opciones diferentes sobre cómo hacerlo), el argumento no es fuerte.

Otro argumento (mucho más fuerte) sería integridad de los datos-Drupal no es muy fuerte (por decirlo suavemente) en relación con, el almacenamiento de datos relacional normalizado, integridad referencial, el tratamiento de transacciones y otros temas relacionados. Si tiene requisitos en esa dirección, es posible que no tenga más remedio que omitir el concepto de nodo y crear y mantener una isla de datos separada dentro del sistema por su cuenta.

3

Ayuda a pensar también que un nodo no necesita ser público tampoco. Algunos nodos son privados/internos y se pueden controlar aún más con controles de acceso. La forma en que lo está haciendo, sea lo que sea que esté haciendo, hace que toda la escalabilidad y la ampliación sobre sus hombros.

Probablemente lo abordaría con CCK/Taxonomía según lo que estaba haciendo. De esta forma, obtengo el beneficio adicional de la integración del módulo Vistas/Paneles/etc. sin escribir ningún código adicional.

+0

¿Puede explicar lo que quiere decir con nodos "privados/internos"? ¿Hay algún ejemplo que pueda señalar? – stotastic

+0

No todo el contenido de Drupal tiene que ser público en un sitio web. Depende de lo que estés tratando de hacer. Por ejemplo, si no necesita un cuerpo, deshabilite ese campo en el tipo de contenido. Si no necesita un título, implemente el módulo de títulos automáticos de nodo y lo ocultará. Puede deshabilitar comentarios para tipos de nodos. Para deshabilitar el nodo o /? Q = node, puede cambiar la página principal en Información del sitio. – Kevin

+0

@stotastic Aunque los nodos son el contenido principal de un sitio, no significa que todos puedan acceder a ellos. Con diferentes módulos, puede crear diferentes reglas de acceso basadas en tipos de nodos de taxonomía, etc. Cuando mantiene los nodos, obtiene el poder de que cada módulo que trabaje con nodos, funcione con su tabla CRUD, sin necesidad de hacer ningún trabajo adicional . Esto también puede ser un gran ahorro de tiempo. – googletorp