提供一种方法来创建treeish类别结构,然后将内容实例的关联限制到树的特定部分。

Products.PortalTaxonom的Python项目详细描述


序言

自从编写portaltaxonomy以来,出现了一些产品来满足对更高级分类管理的需求,而不是plone提供的现成产品。我认为,pt的利基是很容易集成到一个plone站点中,该站点希望将其分类法作为导航元素公开。此外,我发现categoryWidget和attributeWidget接口有助于为客户提供输入分类信息的简单界面。

可与内容类型组关联的分类结构。当前的plone关键字系统只允许关键字列表到类型的1到1映射。关键字也是一个简单的列表,我需要一些
treeish.

portaltaxonomy

portaltaxonomy提供了两种新的主要内容类型:类别和属性。类别是继承的分类法节点。创建类别树,然后将树的部分(或全部)与各种内容类型相关联。通过将类别树的部分与类型关联,CategoryField类型将在其小部件中呈现类别树的该部分,并允许用户在树中选择与内容关联的节点。

属性分组在名为AttributeCollection的内容类型中。AttributeCollection与一个或多个内容类型关联。与attributeCollection关联的内容类型将在其attributeField中的选择选项中使用集合中的属性。您可以指定attributewidget如何呈现选择选项:作为复选框、单选按钮或选择列表。每个attributeCollection都包装在用户自己的分组中,用户可以从中进行选择。

categories

categories允许网站规划人员创建一个树型分类结构,然后将内容类型与树的部分相关联。使用提供的CategoryField的内容类型可能与树中的类别相关联。

若要在部分类别树和内容类型之间创建关联,请选择要关联的类别。您将看到一个名为"类型关联"的字段,其中列出了架构中具有categoryField的所有内容类型。选择要与树的此部分关联的字段。关联的类别和所有子类别都可以在"类型"字段中进行选择。



内容类型模式中。属性字段位于portaltaxonomy附带的字段模块中。


attributewidget有几个选项可用于呈现属性集合:作为复选框;作为单选按钮;以及作为选择列表。


复选框允许用户从所有关联属性中选择任意多个属性。选择列表执行相同的操作,但为与字段关联的每个属性集合提供一个多重选择列表。单选框允许用户从所有可用属性中选择一个属性。

将attributeWidget的format属性设置为checkbox,将box-type属性设置为radio:将attrivutewidget的format属性设置为"select":


format="select"


installation

将portaltaxonomy文件夹放在zope的products目录中,然后重新启动zope。创建一个plone站点。转到plone setup->;添加/删除产品。从列表中选择portaltaxonomy并单击install按钮。

注释
行:


使用这些字段的原型将出现在类别或属性中。如果没有原型使用这些
字段,则"类型重新生成"选择框将为空。要添加一个
示例类型,请取消注释@import example行,重新启动zope
,然后重新安装portaltaxonomy(或者通过
portal types工具手动安装分类类型)。这将为您提供一个快速类型以开始使用。


category manager


创建一个使用portaltaxonomy.fields.category field字段的原型。根据需要在门户中添加类别和子类别,至少将其中一些类别和子类别与新原型相关联。发布类别。添加原型的新实例。应提供类别字段选择器。单击类别以树状显示子类别。类别选择器使用由christian heilman(http://icant.co.uk)设计的修改的嵌套选择列表。


创建使用portaltaxonomy.fields.attributefield的原型。将属性集合添加到AttributeManager,并将其中至少一些集合与新的原型相关联。发布你的属性集合和属性。添加新原型的实例并检查所需的属性。

catalog index

在attribute和category manager中都有一个名为getcontent
的helper方法。它被硬编码到
分别称为"categories"和"attribs"的索引。您可以在这些字段之后命名
字段,修改方法,或者在
页面模板中使用目录查询,而不是帮助器方法。


查看skins目录中的一些页面模板示例,
specificaly:category_listing.pt,category_recursive.pt,list_view.pt、
category_content.pt和category_content_recursive.pt。还要看
脚本getcategorizedcontent.py和getsubcategoryuids.py。


将类别与站点集成


我添加了两个模板,作为获取与类别相关联的内容的示例:

category_content.pt
category_content_recursive.pt

模板还使用了两个脚本作为执行实际查询的示例:


getcategorizedcontent.py
getsubcategoryuids.py

请记住您需要CategoryFields的目录索引。例如,如果您有一个名为"foobar"的categoryfield,请添加"getfoobar"作为关键字索引类型的门户目录索引。


请联系我

如果您对此产品有任何意见,请给我发电子邮件:jeremy@deximer.com。感谢:)

changelog
==


>0.5.0-未发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧