2014-11-19 5 views
0

Я хотел бы создать шаблон страницы, в котором перечислены все типы содержимого, где определенное значение истинно.Пользовательский шаблон для коллекции

Я предполагаю, что лучший способ сделать это - создать собственный шаблон страницы для коллекции.

Поэтому я следовать этим инструкциям здесь: http://www.uwosh.edu/ploneprojects/docs/how-tos/a-minimalist-view-for-collections

Но я получаю ошибку «Macro расширение не удалось», как описано здесь: Page template Macro expansion failed

Однако ответ здесь не имеет смысла для меня. Я не уверен, где определить макросы, находится ли он в файле .py?

Содержит ли комбинация этих двух звеньев весь процесс или больше для него? Я вообще-то описал процесс?

Или я думаю об этом неправильно, не следует ли мне использовать коллекцию, просто новый вид для типа контента, который сам выполняет сортировку?

ответ

2

Получаете это сообщение об ошибке сразу после того, как вы вставляете примерный код учебника в portal_skins/custom/collection_minimal_view, правильно?

Screenshot of error message

Это потому, что Zope пытается предугадать, что вы делаете, но он не знает, что переменная «контекст» будет и не может быть уверен, что «контекст» будет иметь атрибут 'standard_view'.

Во всяком случае, если вы проигнорируете сообщение об ошибке и следуете остальной части учебника, новый вид действительно работает.

Однако не всегда рекомендуется сохранять долгосрочные настройки в пользовательской папке или, действительно, portal_skins, если на то пошло. Лучшим подходом было бы разместить шаблон в пакете и зарегистрировать в вашем ZCML с помощью:

<configure 
    xmlns="http://namespaces.zope.org/zope" 
    xmlns:browser="http://namespaces.zope.org/browser" 
    xmlns:zcml="http://namespaces.zope.org/zcml" 
    i18n_domain="plone"> 

    <browser:page 
     name="minimal_view" 
     permission="zope2.View" 
     for="plone.app.collection.interfaces.ICollection" 
     template="collection_minimal_view.pt" 
     /> 

    <browser:menuItems 
     for="plone.app.collection.interfaces.ICollection" 
     menu="plone_displayviews"> 
     <browser:menuItem 
      title="Minimal view" 
      action="minimal_view" 
      /> 
    </browser:menuItems> 

</configure> 
+0

Хорошо, что имеет смысл. Как zcml знает, где находится этот .pt-файл? –

+2

Вышеупомянутый zcml будет искать шаблоны в том же каталоге, что и configure.zcml. Если вы хотите поместить их в каталог под названием «шаблоны», этот атрибут шаблона будет выглядеть как «template =» templates/collection_minimal_view.pt ». – Travv15

Смежные вопросы