Estou trabalhando na documentação da API da entidade aqui: https://drupal.org/developing/api/entity .
A pergunta é grande demais para responder em detalhes e depende se você precisa de conteúdo ou de entidades de configuração. Supondo que você queira entidades de conteúdo (armazenadas no banco de dados, que possam ser colocadas em campo / revisáveis / ..., detalhes no link acima), é necessário fazer algo assim: a documentação vinculada acima acabará por cobrir cada etapa, incluindo tutoriais, agora , abrange apenas os primeiros passos.
- Forneça uma classe de entidade e adicione as anotações necessárias para expô-la como uma entidade.
- Forneça a (s) tabela (s) necessária (s), você não precisará alterar muito se já possui o esquema 7.x, mas deseja adicionar uma coluna de uuid e possivelmente langcode se sua entidade puder ter um idioma / ser traduzível. Consulte o exemplo do nó vinculado na etapa se você deseja tornar alguns campos base (propriedades) traduzíveis ou revisáveis, atualmente você precisa fornecer as tabelas necessárias.
- Forneça as definições de campo base no seu método baseFieldDefinitions (). . Observe que a maneira como isso funciona mudará em https://drupal.org/node/2047229 (de matrizes para classes).
- Implemente os métodos pré / pós Save / load / Delete necessários, se você tiver uma lógica personalizada que precise ocorrer, por exemplo, antes de salvar uma entidade (como atualizar o carimbo de data / hora alterado).
- Implemente um controlador de acesso se você tiver uma lógica de acesso não trivial e substitua os métodos checkAccess () e checkCreateAccess () ou especifique o admin_permission na sua anotação se você tiver apenas uma permissão que permita acesso total.
- É recomendável, embora não seja tecnicamente necessário, fornecer uma interface para sua classe de entidade (por exemplo, NodeInterface for Node) que inclua métodos úteis (geralmente get / set / isSomething ()) para seus campos base, para que você possa digitar dicas na interface e obtenha o preenchimento automático para esses métodos.
Dependendo do que você precisa, também haverá outras etapas, como definir os formulários necessários, possivelmente um controlador de renderização e assim por diante, mas essas provavelmente devem ser perguntas separadas se você precisar de mais informações.
Notas:
- As entidades de configuração são basicamente semelhantes, exceto que você precisa usar o controlador de armazenamento de configuração ( https://drupal.org/node/2119905 facilitará isso), não é necessário definir esquemas de tabela (obviamente), mas é necessário fornecer um arquivo de esquema de configuração, consulte, por exemplo, os vocabulários de taxonomia ou os tipos de nós.
- As entidades de conteúdo não têm seus campos base definidos como propriedades públicas ou protegidas; eles são gerenciados automaticamente nas propriedades de valores e campos. Acesse-os através de get () / set () ou dos métodos mágicos correspondentes. ($ node-> title é igual a $ node-> get ('title')).
- Ajuda na documentação seria muito bem vinda. Eu criei um esboço básico para o conteúdo / estrutura que eu gostaria de ter, então apenas crie uma nova página e comece por exemplo. Também estou interessado em ter tutoriais simplificados, para entidades de configuração, já existe um aqui que eu passará para a documentação da entidade quando estiver pronto: https://drupal.org/node/1809494
- O Core possui um número bastante grande de implementações de entidade de conteúdo, se você quiser ver exemplos de trabalho: Nó, Usuário, Termo, Comentário, CustomBlock, ... como o artigo vinculado na etapa 1 explica, você sempre pode encontrar os tipos de entidade fornecidos por um módulo no namespace da entidade.
- O @fago acabou de fazer uma apresentação sobre a Entity API no DrupalCamp Vienna neste fim de semana, abrange muito do que escrevi aqui e muito mais.