it-swarm-es.com

¿Cuándo es apropiado crear una Entidad en lugar de simplemente agregar un nuevo tipo de contenido?

¿Cuál es el beneficio de crear nuevos tipos de entidad en lugar de simplemente construir un nuevo tipo de contenido?

Parece un poco exagerado hacer toda la codificación personalizada que se requiere para crear una nueva entidad cuando tiene todas las funciones CRUD y Vistas ya integradas en los tipos de contenido.

86
revolt

No se trata tanto de cuáles son los beneficios, sino más de lo que es apropiado para una situación particular como usted ha dicho. Puede representar prácticamente cualquier cosa con un nodo y para el 99% de las situaciones (como he encontrado al menos) no necesitará implementar tipos de entidad personalizados.

Siempre pienso en el taxonomy_term tipo de entidad como un buen ejemplo de por qué no todo debería ser un tipo de nodo/contenido:

Un término de taxonomía es esencialmente para agrupar diferentes entidades y, como tal, no requiere la misma funcionalidad que un nodo. Si bien podría usar teóricamente un tipo de contenido para realizar esta funcionalidad (quizás con un campo de referencia de nodo), un término de taxonomía no necesita hacer lo mismo que un nodo, por lo que realmente no hace sentido hacerlo. Lo mismo puede decirse de user y taxonomy_vocabulary tipos de entidad.

Por lo tanto, un término de taxonomía se crea como una entidad separada y se programa para que haga solo lo que necesita, sin dejar de obtener los beneficios de poder tener campos adjuntos, etc.

Creo que la respuesta simple es que cuando un nodo/tipo de contenido no hace lo que necesita, o es solo una cantidad masiva de sobrecarga/sobrecarga para muy poco beneficio, entonces debe elegir Escribe una entidad personalizada.

Esto solo se basa en mi experiencia personal; Me interesaría escuchar lo que alguien directamente involucrado con Drupal core development tenía que decir sobre esto.

66
Clive

Una regla general muy simple que uso es si su contenido debe mostrarse públicamente por sí solo. Si es así, vaya al nodo, si no, elija una entidad. Entityforms ahora le permite crear una interfaz para completar sus entidades.

Por ejemplo, en un sitio web creado con D6, creamos un tipo de contenido publicitario (con su campo de imagen, fecha de inicio/finalización de visualización ...), pero luego debe hacerlo no publicado por defecto y le da a sus editores los derechos para editar/ver estos nodos y esperaba que ninguna vista/búsqueda los muestre en el mundo exterior. Es bastante engorroso y sería más fácil tratar con entidades.

16
tostinni

Una entidad representa un caso de uso específico .

Creo que el crédito para esta definición simple va a Fago , pero soy demasiado vago para encontrar una referencia.

Podríamos usar Content (también conocido como Nodes) para todos los casos de uso si quisiéramos, pero a menudo eso no tiene sentido.

Content tiene un autor y configuraciones para los comentarios y la ubicación del menú.

Users, representa un caso de uso lo suficientemente diferente de Content porque en un user ninguna de las anteriores tiene sentido, mientras que, por otro lado, un user debe tener un correo electrónico y una contraseña.

Taxonomy terms se destacan porque tienen la funcionalidad integrada para organizarse en una jerarquía, incluso circular.

Si su caso de uso es lo suficientemente similar a una entidad existente, use esa entidad. Sin embargo, si su entidad se rige por reglas significativamente diferentes a las existentes, cree una nueva.

También hay na introducción a las entidades , pero desafortunadamente realmente no responde a su pregunta.

12
Letharion

Creo que todo se trata del contexto, un nodo se usa en gran medida para el contenido, por lo que serían blogs, artículos, preguntas frecuentes, etc. Mientras que el usuario para perfiles como el personal, los clientes, etc.

  • Foro
  • Proyecto (en términos de gestión de proyectos)
  • Formar
  • Ticket de soporte
  • Grupo

Si bien podría usar un nodo para algo como un ticket de soporte, podría no ser la mejor plantilla y los valores predeterminados ... Espero que ayude.

5
WestieUK

Las entidades se pueden crear con menos sobrecarga que los nodos, ya que no necesitan tener todas las funcionalidades de servicio pesado que tienen las entidades.

También significa que el almacenamiento puede ser más simple: puede crearlos para obtener toda la información en una consulta simple sin UNIRSE si lo desea. Todos los campos muy bien en una sola mesa ordenada.

Esto puede ser un gran beneficio si tiene muchas funciones que necesitan hacer consultas en las entidades, y está actualizando muchas entidades simultáneamente con consultas de ACTUALIZACIÓN en la base de datos. Si puede asegurarse de que los datos están relativamente autocontenidos en una sola tabla, tiene menos preocupaciones y posibilidades de corrupción de datos.

1
James

Un tipo de contenido está diseñado para ser contenido del sitio. Es decir, cada tipo de contenido está diseñado para ser publicado y aparecer en el sitio. Por ejemplo, un artículo (listo para usar) está diseñado para aparecer en la primera página.

Ahora, supongamos que desea crear algo así como un formulario de solicitud de empleo o apartamento. Obviamente, no querrás publicar la solicitud de empleo de alguien en tu sitio web. Además, ¿qué sucede si desea crear una lista de contactos de clientes/clientes potenciales? ¿Desea arriesgarse a que esta información se publique por error en su sitio web? Personalmente, no lo haría.

Por lo tanto, el módulo de formulario de entidad que se analiza anteriormente. Le permite crear un tipo de entidad que no está diseñado para ser contenido. Sin embargo, estos tipos de entidad están disponibles para cualquier módulo que admita entidades como reglas, vistas y grupos orgánicos, por nombrar solo algunos.

Y luego entras en Drupal Comercio donde los productos son tipos de entidad. Básicamente, las entidades permiten a los desarrolladores extender Drupal de una manera nunca prevista por el original Drupal diseñadores.

0
Den Solis

Esto está sujeto a discusión y al final debe tomar sus decisiones como desarrollador.

Elijo entidades sobre nodos siempre que los datos no estén disponibles públicamente con su propia URL. Los nodos obtienen de forma predeterminada un alias de URL, estado publicado, un título, metaetiquetas, ... mientras que las entidades solo obtienen un registro en la base de datos.

"Quiero poder agregar tantos banners con texto como sea posible y luego, en una publicación de blog, elegir entre uno de ellos"

  • El tipo de contenido sería 'Blog'
  • La entidad personalizada sería 'Elemento de banner'
0
Stef Van Looveren