2009-11-30 4 views
1

Sitecore의 XSL 현지화

Sitecore에 의해 상자에서 제공하는 간단한 렌더링 요식
/xsl/sample rendering.xslt

, 내가 항목의 아이들을 출력 루프, 모든 어린이가 포함되어 있음을 알 ..로 테스트 할 때 해당 항목의 버전이 현재 언어인지 여부에 관계없이

정상입니까? ... 우리가 원하는 항목 만 표시되도록 언어를 강제/확인하는 방법이 있습니까?

답변

2

Sitecore 항목은 언어 장벽을 넘어 항상 공존합니다. 이것은 표준 템플릿을 모두 상속한다는 사실과 함께 (적어도 하나의 이유라고 생각합니다.)이 템플릿에는 "공유"라고 표시된 필드가 있습니다. 즉, 모든 언어에 대해 암묵적으로 사용할 수 있습니다.

그러나 항목에없는 것은 현재 언어로 된 버전입니다. 필드 값은 null을 반환합니다.

이에 샘플 Rendering.xsl을 수정하여이 직접 테스트 할 수 있습니다

<xsl:for-each select="item"> 
    <xsl:value-of select="@name" /> (<sc:text field="title" />) 
    <br /> 
</xsl:for-each> 

나는 빠른 테스트를 실행하고,이 내 결과였다. 샘플 항목 3은 컨텍스트가없는 언어로 작성됩니다.

Sitecore에 Sitecore에 오신 것을 환영합니다

샘플 항목 1 (샘플 항목 1) 샘플 항목 2 (샘플 항목 2) 샘플 항목 3()

+0

내가 생각했던 것 즉, 감사 확인을 위해. 이것은 또한 메뉴에서 자식을 성공적으로 숨기기 위해 .NET 컨트롤을 사용하여 언어 버전을 확인해야 할 필요가 있음을 의미합니다. 그것은 xslt의 꽤 제한입니다. 다국어 환경에서는 세미 쓸모 없게 만듭니다. Dang. – misteraidan

+0

사실 - 나는 그것에 대해 잘못 생각하고 있습니다. 특정 언어의 항목을 표시하거나 숨길 수있는 "AppearInNav"와 같은 필드를 간단히 추가 할 수 있습니다. 언어가 존재하는 것처럼 표시하는 것만 큼 깔끔하지는 않지만 어쨌든이 같은 필드를 필요로하는 것은 꽤 표준 적입니다. 이제 xslt에서 해킹을 중지하고 조금만 더 사용하십시오. – misteraidan

+0

나는 최근에 나 자신과 같은 결론에 이르렀다. 때때로 Sitecore의 상자 밖에서 생각하는 것이 실제로 매우 도움이됩니다. 당신이 언급 한 그 분야는 당신이 발견했을지도 모르는 다른 방법으로 시도하는 것보다 훨씬 쉬운 일이됩니다. –