2011-03-21 2 views
3

Plone 3.3.5에서는 날짜순으로 정렬 된 이벤트 목록 (역순) 인 고전적인 foldercontents가 있습니다. 각 요소를 하나씩 표시하고 있습니다. 이벤트가 더 이상 미래에 없지만 과거 이벤트 인 경우 특별 메시지를 표시하고 싶습니다. 내가 파이썬 변수 생성 시도했지만 실패"상태"변경을 감지하고 표시하는 방법은 무엇입니까?

...

<span tal:define="endDate item/end; 
      " tal:condition="python: endDate.isPast()">Past event<br /> 
    </span> 

그러나 나는 단지이 메시지 한 번이 아니라 과거의 모든 이벤트를 표시 할 것 : 지금은

,이이 그렇게하라. (선언되지 않은 변수를 엉망으로 만든다.) 도움을

감사

PS : 나는 모든 플론 (Plone)의 템플릿 언어에 익숙하지 않다 ...

답변

1

당신은 미래의 이벤트를 계산하고이 0이되면 해당 메시지를 표시 할 수 있습니다

예를 보려면 포털 루트의 "events"컬렉션을 참조하십시오.

3

당신이 반복하는 두 가지리스트, 즉 미래의 사건과 과거의 사건을위한 하나의 목록으로 만드는 것이 가장 쉽습니다. 그런 다음 '과거 이벤트'를 헤더 사이의 머리글로 사용할 수 있습니다.

+0

이 아이디어가 마음에 들지만이 솔루션의 문제점은 여기에 일부 코드를 복제해야한다는 것입니다 ... – Sylvestre

1

글쎄, 이 방법은 자연스럽게 db 결과 집합을 관리 할 때 발생하기 때문에 조금 까다로울 수 있습니다. 반복 문은 매우 강력하고, 귀하의 경우에는 "최초의"변수 정보에 의지 할 수 http://docs.zope.org/zope2/zope2book/AppendixC.html#the-following-information-is-available-from-the-repeat-variable

탈을 :

여기에서 참조 할 수 있습니다.

간단한 이벤트 목록 대신 isPast 정보를 처리하는 사전 목록을 반복 해보십시오.

다음 (간단하고 잔인한) 탈 코드를 실행하십시오 ... 자체적으로 설명합니다.

<div tal:define="past string:Past events; 
       future string:Events to Come; 
       richList python:[{'event':'event1', 'passed': past}, 
            {'event':'event2', 'passed': future}, 
            {'event':'event3', 'passed': past}, 
            {'event':'event4', 'passed': future}]; 
       dummy python:richList.sort(lambda x,y:cmp(x['passed'], y['passed']))">  


    <tal:block repeat="item richList"> 
     <h2 tal:condition="repeat/item/first/passed" 
      tal:content="item/passed"> 
      Past Events or Future 
     </h2> 
     <a tal:content="item/event">event's url</a> 
     </tal:block> 

    </div> 

카탈로그 호출 결과에 대해 richList 반복을 만들 수 있습니다. 그리고 event/end/isPast 함수에 따라 'passed'값을 설정하여 사전 항목을 생성 할 수 있습니다.

희망이 도움이됩니다.

+0

나는 인식하지 못했습니다. 그러한 능력의. 이것을 지적 해 주셔서 감사합니다. 이제는 내 현재 응용 프로그램과 아이디어를 연결하는 방법을 이해하는 것이 유일한 단점입니다. 지난 이벤트 또는 향후
Sylvestre

+0

경로/경로/func()를 수행 할 수 없습니다. 경로 표현 XOR에 파이썬 표현을 써야합니다. 진행하기 전에 "개요"문서를 살펴 봐야합니다.) BTW, 파이썬 스크립트 (또는 브라우저 뷰 클래스) 이벤트 가져 오기 작업을 위임하는 것이 좋습니다. 그 후 "첫 번째"마법 단어를 사용하기 위해 내 것과 같은 사전을 만들 수 있습니다. – SauZheR

1

카탈로그 검색을 수행 할 때 필터링 할 수있는 것과 똑같이 listFolderContents에서 "필터"할 수 있습니다. 어떻게 수행되는지는 http://collective-docs.plone.org/content/listing.html#getting-folder-objects-filtered 을 참조하십시오. 이미 필터에 포함시킬 수있는 "end"인덱스가 있습니다. http://plone.org/documentation/manual/plone-community-developer-documentation/searching-and-indexing/query#querying-by-date

관련 문제