Entidades em Drupal 7


13

O que são entidades do Drupal no Drupal 7? Entendo que a Drupal Commerce construiu Produtos como uma Entidade. Agora eu sei que existe uma API de entidade principal e um complemento de contribuição para a API de entidade.

Tenho alguns projetos este ano em que gostaria de usar o Drupal 7, NoSQL e, possivelmente, a API de entidade, se for necessário, mas estou tendo problemas para ver onde seria necessário.

Supondo que você estivesse criando um site de listagem de empregos - um trabalho não é necessariamente como o conteúdo do nó, você poderia / faria disso uma Entidade?

Além disso, você ainda pode conversar com os módulos com a Entidade e como isso é feito? Por exemplo, uma entidade de publicação de emprego obtém um alias com o Pathauto e é exposta no Views, além de aparecer no XML Sitemap.

Respostas:


9

Uma entidade é uma estrutura de dados definida por hook_entity_info () e pode ser montável em campo, o que significa que você pode adicionar campos a eles.

No Drupal 7 Core, nós, usuários, comentários, vocabulários e termos são entidades.

No Contrib, há muito mais, por exemplo, mensagens privadas e comércio como uma dúzia delas;)

No entanto, acho que as ofertas de emprego são perfeitas como nós :) As entidades não têm automaticamente integração com Pathauto (Tokens), Views etc.


9

As entidades são um meta nível acima de nós, usuários etc.

Essencialmente, se você olhar para o D6, existem muitos módulos duplicados e funcionalidades nesses tipos de coisas. Por exemplo, existem módulos para anexar campos cck a usuários e termos de taxonomia.

No D7, foi tomada a decisão de tratá-los da mesma maneira, arquitetonicamente, portanto, se você tiver um módulo que faça algo com entidades, ele funcionará para nós, termos e usuários.

Nas versões anteriores do Drupal, um módulo como o Commerce teria duas opções: criar um tipo de nó personalizado ou sair completamente dos sistemas internos do Drupal e definir seu próprio tipo de coisa. Com entidades, é possível descrever um Produto como um tipo de coisa, diferente dos tipos existentes, mas ainda aproveitando recursos como campos em sua composição.

Supondo que você estivesse criando um site de listagem de empregos - um trabalho não é necessariamente como o conteúdo do nó, você poderia / faria disso uma Entidade?

Você poderia. Eu acho que você deve tomar cuidado para tornar entidades das coisas muito rapidamente. Geralmente, os tipos de nós personalizados ainda fazem o que você deseja. Um trabalho que lista um tipo diferente de coisa para um nó ou é um nó com algumas propriedades especiais?


3

Comecei a usar entidades em alguns dos meus projetos para coisas que não eram realmente "conteúdo". Nós os usamos para coisas em que realmente não nos importamos quando foi publicado ou quem era o autor.

Os benefícios reais de definir entidades são se você estiver desenvolvendo seus próprios módulos personalizados. Você obtém uma boa estrutura de tabela e um monte de vantagens do Drupal (integração de campo, visualizações, ...) gratuitamente. Não é mais necessário criar suas próprias estruturas de tabela personalizadas ou adaptar um tipo de nó às suas necessidades. Além disso, eu gosto de quão leves elas são para que as entidades com desempenho melhor sejam melhores. Se você fez alguma consulta no D6 com nós, entenderá o que quero dizer.


1

Nós, usuários, taxonomias são exemplos de entidades Drupal. A principal característica de uma entidade é que ela pode ser atribuída a outras entidades: um usuário está associado a um nó e uma taxonomia pode ser atribuída a nós e usuários.

Se o que você descreve como trabalho puder ser atribuído a um usuário ou nó, eu o tornaria uma entidade. Se o que você pode "trabalhar" é apenas um tipo de conteúdo, eu não o tornaria uma entidade.


1

Se você quer dizer isso em poucas palavras, pode dizer que en entity é apenas um dado que o drupal está ciente e pode ser armazenado em qualquer lugar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.