2013-01-06 2 views
0

Umbraco newbie here. 나는 톤을 연구했지만, 내가 찾고있는 것을 찾을 수없는 것 같습니다.Umbraco - 특정 노드의 각 자식에 대한 특정 이미지 표시

홈페이지에 슬라이더가있는 사이트가 있습니다. 슬라이더는 for-each (노드 자식)의 매크로를 사용하여 최종 목표로 해당 doctype의 'heroImage'이미지를 표시합니다. 아래 "랜딩 페이지"문서 유형

HOME 
PORTFOLIO 
- First Item 
- Another Item 
ABOUT 
CONTACT US 

홈, 포트폴리오에 대한CONTACT US, 아이들 : 난을 heres 내 콘텐츠 구조를이 사이트에 초보자로 이미지를 게시하지만, 어차피 포트폴리오 (첫 번째 항목다른 항목)은 "포트폴리오 항목"문서 유형입니다. 아래 코드는 "방문 페이지" 슬라이드 쇼 매크로를 호출하는 코드입니다.

포트폴리오 엔트리 필드를 가지고

  • heroImage
  • 이미지
  • 본체

슬라이드 매크로 분명히이 강조되고. 충분히 쉬워. Heres는 내 매크로 코드를 보여줍니다. 각 노드마다 'for-each'에 대한 heroImage를 표시하려고합니다.

<xsl:template match="/"> 

    <!-- slider --> 
    <div id="slideshow"> 
     <div id="slider" class="nivoSlider"> 
      <xsl:for-each select="umbraco.library:GetXmlNodeById(1081)/*[@isDoc and position() &lt; 4]"> 
       <xsl:variable name="mediaId" select="umbraco.library:GetMedia(@id, 'false')/data [@alias = 'umbracoFile']" /> 
       <xsl:if test="$mediaId &gt; 0"> 
        <xsl:variable name="mediaNode" select="umbraco.library:GetMedia($mediaId, 0)" /> 
        <xsl:if test="count($mediaNode/data) &gt; 0 and string($mediaNode/data[@alias='umbracoFile']) != ''"> 
         <img src="{$mediaNode/data[@alias='umbracoFile']}" alt="[image]" /> 
        </xsl:if> 
       </xsl:if> 
      </xsl:for-each> 
     </div> 
    </div> 
    <!-- data-transition="slideInLeft" --> 
    <script type="text/javascript"> 
     $(window).load(function() { 
     $('#slider').nivoSlider(); 
     }); 
    </script> 

</xsl:template> 

내가 너무 가까이 메신저 같은 느낌, 그리고 솔루션의 대부분의 I 매크로의 다른 측면에서 매크로에 전달되는 imageId에 의존했다 발견 검색 쿼리에서 실행 한 같으면 일하지 마라.

호프 Ive가 충분히 설명했으며 도움을 주셔서 감사합니다.

답변

0

우선, 부모 노드 ID를 하드 코딩하는 것처럼 보입니다. 방금 제공 한 코드에서 인 경우은 id가 1081 인 노드의 하위 항목을 가져 오는 것으로 보입니다. 방금 게시 한 내용을 읽으면 모든 방문 페이지에서 개별 포트폴리오 항목을 표시하려고합니다.

어느 쪽이든, 나는 ID를 하드 코딩하지 않을 것입니다. 노드 ID가 어떤 방식 으로든 변경되면 (사용자가 노드를 삭제하면 패키지가 실제 환경에 패키지로 내보내 짐) 코드가 작동을 멈 춥니 다. 대신 $ currentPage를 사용합니다.

필터로 판단하면 처음 세 항목 만 슬라이더에 표시하는 것으로 생각합니다. 코드는 정확하지만, 이지만 당신은 이전 스키마와 관련 xpath를 사용하고있는 것처럼 보입니다. 최신 버전의 Umbraco를 사용하고 있다면 xslt에서 노드 데이터를 참조하는 방식이 변경되었을 것입니다. 많은 코드 예제를 발견하고 동일한 스키마를 호출하지 않는다는 사실을 깨닫지 않고 함께 병합을 시도한 것 같습니다.

This wiki link은 자세한 정보를 제공하고 잘못된 xpath를 사용하고 있으면 문제를 해결할 수 있습니다.

관련 문제