2013-08-08 3 views
3

수정 된 버전을 내 테마의 콘텐츠 슬롯에 추가 할 수 있도록 콘텐츠를 즉시 수정하고 싶습니다. usecase는 calendar.port 행렬을 collective.cover 행/열/셀 내에 배치합니다.포틀릿을 컨텐트의 #content 영역으로 이동하는 방법은 무엇입니까?

는 여기에 내가 시도 내용은 다음과 같습니다

<replace css:content="#content .row:nth-child(2) .cell:nth-child(2) .tile.tile-edge"> 

    <!-- These work (meaning levels above current selection CAN be copied) --> 
    <xsl:copy-of select="." /> 
    <xsl:copy-of select="../.." /> 
    <xsl:copy-of select="/" /> 

    <!-- However, neither of these do --> 
    <xsl:copy-of css:select=".portletCalendar:first-child" /> 
    <xsl:copy-of select="//div[contains(concat(' ', normalize-space(@class), ' '), ' portletCalendar ')]" /> 
    <xsl:copy-of select="//div[@id='portal-personaltools']" /> 

</replace> 
+1

대신 collective.cover에 일정 도와를 추가하지 않으시겠습니까? :-) – hvelarde

+1

당신이하려는 일에 대해 더 많이 말해 줄 수 있습니까? XSL없이 이것을 할 수도 있습니다. (그런데, 나는 mode = "raw"속성이 아무 것도 의미하지 않는다고 생각합니다. "mode"는 copy-of 태그의 속성이 아니며 apply-template과 template에서만 작동합니다.) – SteveM

+0

@SteveM, as hvelarde는 제 3 자 위젯을 채택하여 하나를 만들고 싶지 않으므로 캘린더 타일의 존재를 에뮬레이트하려고합니다. 그래서 Plone의 네이티브를 재사용하기가 어려울 것이라고 생각합니다. 포틀릿 바인딩. 특정 측면에 대해 더 잘 설명해 주시겠습니까? BTW 모드 = "raw"refs가 제거되었습니다. 감사합니다 :-) –

답변

3

그것은 당신이 가지고 있었던 유일한 문제는 XSL 명령에 CSS 선택기를 번역하기위한 디아 조의 시설에 의존하는 것을 할 수있다. 타겟이 현재 선택된 노드이거나 그 노드의 자식 인 경우에만 작동합니다. 따라서 XPath 선택기로 바꾸십시오.

<!-- replace one part of content with another --> 
<replace css:content="#content .row:nth-child(2) .cell:nth-child(2) .tile.tile-edge"> 
    <xsl:copy-of select="//dl[@class='portlet portletCalendar']" /> 
    <xsl:apply-templates mode="raw" /> 
</replace> 

<!-- make sure it doesn't show up in two places --> 
<drop content="//dl[@class='portlet portletCalendar']" /> 
+0

매력처럼 작동했습니다. 감사합니다. Btw mode = "raw"는 필요하지 않았습니다. –

+0

mode = "raw"는 드롭해야 할 경우에만 필요합니다. – SteveM

+0

이상하게도, 대체하기 전에 방울을 실행해야한다고해도 mode = "raw"는 필요하지 않습니다. –

관련 문제