Drupal 7의 엔터티


13

Drupal 7의 Drupal 엔티티는 무엇입니까? Drupal Commerce가 제품을 엔터티로 구축했음을 이해합니다. 핵심 Entity API와 Entity API에 대한 추가 기능이 있다는 것을 알고 있습니다.

올해 Drupal 7, NoSQL 및 Entity API를 사용하려는 경우 몇 가지 프로젝트가 있지만 필요한 곳을 찾는 데 문제가 있습니다.

작업 목록 사이트를 구축한다고 가정하면, 작업은 반드시 노드 컨텐츠와 같지 않을 수 있습니다. 엔티티를 만들 수 있습니까?

또한 Entity를 사용하여 모듈과 대화하는 기능을 계속 사용할 수 있습니까? 마찬가지로 Job Posting 엔터티는 Pathauto로 별칭을 지정하고 뷰에 노출되고 XML Sitemap에 나타납니다.

답변:


9

엔터티는 hook_entity_info ()로 정의 된 데이터 구조이며 필드를 지정할 수 있으므로 필드를 추가 할 수 있습니다.

Drupal 7 Core에서 노드, 사용자, 의견, 어휘 및 용어는 엔티티입니다.

Contrib에는 개인 메시지 및 상거래와 같은 수십 가지가 더 있습니다.)

그러나 나는 직업 게시가 노드처럼 완벽하다고 생각합니다. :) 엔티티에는 자동으로 Pathauto (Tokens), Views 등이 통합되어 있지 않습니다.


9

엔터티는 노드, 사용자 등의 메타 수준입니다.

기본적으로 D6을 살펴보면 이러한 유형의 항목에 많은 중복 모듈과 기능이 있습니다. 예를 들어 cck 필드를 사용자 및 분류 용어에 첨부하는 모듈이 있습니다.

D7에서는 이러한 구조를 아키텍처와 동일한 방식으로 처리하기로 결정 했으므로 엔티티에 무언가를 수행하는 모듈이있는 경우 노드, 용어 및 사용자에 대해 작동해야합니다.

이전 버전의 Drupal에서 Commerce와 같은 모듈에는 사용자 정의 노드 유형을 작성하거나 Drupal의 내부 시스템을 완전히 벗어나 자체 유형을 정의하는 두 가지 옵션이있었습니다. 엔터티를 사용하면 제품을 기존 유형과 다른 유형의 물건으로 설명 할 수 있지만 여전히 메이크업 필드와 같은 기능을 활용할 수 있습니다.

작업 목록 사이트를 구축한다고 가정하면, 작업은 반드시 노드 컨텐츠와 같지 않을 수 있습니다. 엔티티를 만들 수 있습니까?

당신은 할 수 있습니다. 나는 당신이 사물의 엔티티를 너무 빨리 만드는 데 조심해야한다고 생각합니다. 종종 사용자 정의 노드 유형은 여전히 ​​원하는 것을 수행합니다. 작업이 노드와 다른 유형의 항목을 나열합니까, 아니면 특정 특성이있는 노드입니까?


3

나는 실제로 "콘텐츠"가 아닌 것들을 위해 몇몇 프로젝트에서 엔티티를 사용하기 시작했습니다. 우리는 출판 당시 또는 저자가 누구인지에 대해 신경 쓰지 않는 것에 사용합니다.

엔터티를 정의하면 실제로 사용자 지정 모듈을 개발할 때 이점이 있습니다. 멋진 테이블 구조와 Drupal의 장점 (Fieldability, Views integration, ...)이 무료로 제공됩니다. 더 이상 사용자 정의 테이블 구조를 작성하거나 필요에 따라 노드 유형을 개조하지 않아도됩니다. 또한 성능이 우수한 엔터티가 더 가벼워 야하는 것이 좋습니다. D6에서 노드를 사용하여 쿼리를 수행 한 경우 의미를 이해할 수 있습니다.


1

노드, 사용자, 분류법은 Drupal 엔티티의 예입니다. 엔터티의 주요 기능은 다른 엔터티에 할당 될 수 있다는 것입니다. 사용자는 노드와 연결되고 분류 체계는 노드와 사용자에게 할당 될 수 있습니다.

당신이 직업이라고 묘사 한 것이 사용자 나 노드에게 할당 될 수 있다면, 나는 그것을 엔티티로 만들 것입니다. 당신이 "작업"할 수있는 것이 단지 컨텐츠 타입이라면, 나는 그것을 엔티티로 만들지 않을 것입니다.


1

실제로 몇 마디로 말하면 en 엔터티는 drupal이 알고있는 데이터 조각 일 뿐이며 어디에서나 저장할 수 있다고 말할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.