2013-11-21 3 views
2

항목 ID로 항목 (페이지)을 검색하는 데 문제가 있습니까? 클라이언트가 페이지를 삭제하고 재 - 추가하는 경우Sitecore - 하드 코딩 항목 ID

유일한 시나리오가 변경 될 수 있습니다 어디 생각할 수는

은 Normaly 우리는 우리의 데이터베이스

답변

0

I을 업데이트 TDS 또는 DB의 복사본을 사용입니다 ... 가능한 경우 항목 ID를 사용하는 것에 대한 과도한 의존을 피하려고 노력할 것입니다. 그러나 다른 답변에서 말한 것처럼 이것이 효과가 있습니다. 이렇게하면 ID가 코드에서 참조되는 항목에 대한 보안 제한을 설정하여 사용자가 삭제하지 못하도록하는 것이 좋습니다 (사용자가 편집하지 못하도록하지는 않음).

템플릿 ID를 대신 사용할 수도 있습니다. 템플릿 ID로 항목/하위 항목을 검색하는 몇 가지 확장 메서드를 작성하는 것이 매우 간단하며 솔루션이 더욱 강력해질 수 있습니다.

1

id로 검색하는 데 문제가 없습니다. 그들은 당신이 그들을 사용하고있는 범위 내에서 유일한 영원을 위해 사용하는 것이 가장 좋습니다. 코드 내에서 가독성 문제가 있지만이를 완화하는 정적 ID 클래스를 만들 수 있습니다. 예를 들어 Sitecore.ItemIDsSitecore.TemplateFieldIDs을 참조하십시오.

4

아니요, ID로 항목에 액세스하는 데 문제가 없습니다. 경로가 ID보다 더 쉽게 변경 될 수 있기 때문에 선호되는 방법입니다. 작성자는 항목 (또는 조상)을 삭제하고 다시 만들 때보 다 이름을 변경하거나 이동할 가능성이 큽니다.

일반적으로 다른 핵심 항목 (예 : 검색 결과 페이지, 기타 설정 항목 등)을 가리키는 트리리스트 필드가 많은 설치마다 (또는 사이트 당 가끔씩) 하나의 항목이 있습니다. 이 글로벌 링크 항목의 ID를 구성 파일에 저장 한 다음 Glass Mapper 또는 Custom Item Generator를 사용하여 모델 클래스를 설정합니다. 이렇게하면 다음과 같은 멋진 구문을 얻을 수 있습니다.

var searchPage = ClientName.Configuration.Settings.GlobalLinks.SearchResultsPage; 
+0

Ben의 접근 방식은 우리 팀과 동일합니다. 또한 TDS를 사용하고 있으므로 T4 생성 템플릿을 사용하여 TDS 프로젝트에서 소스 제어를 수행하는 항목을 기반으로 클래스 또는 ID를 생성 할 수 있습니다. –