Plone CMS的内容列表
项目描述
此描述适用于 Plone 4.1 及更高版本。
Plone 中许多针对自定义、模板、视图和组件的操作都与内容对象的列表相关。它们的来源可能不同,尽管通常它们是某种目录搜索、特定文件夹的内容或关系对象列表。尽管它们的来源可能不同,尽管通常它们是某种目录搜索、特定文件夹的内容或关系对象列表。
为了简化对这些列表的操作,我们创建了 plone.app.contentlisting,它确保无论对象的来源如何,内容对象的列表总是以相同的方式根据预定义的接口行为。集成者不需要关心对象列表是从目录、ORM 还是将是实际的对象。
创建或获取内容列表
获取内容列表的典型方式是调用两个内置视图之一
列出文件夹或集合的内容
在页面模板中获取文件夹或集合的结果就像这样
context/@@contentlisting
每个模板编写者的梦想 ;)
列出文件夹内容对象的标题的实际示例
<ul> <li tal:repeat="item context/@@contentlisting" tal:content="item/Title"/> </ul>
调用它的上下文定义了要列出的文件夹或查询的集合结果。
您还可以使用 Python 表达式来传递参数,例如,您希望使用的内容类型或审阅状态。
<li tal:repeat="item python:context.restrictedTraverse('@@contentlisting')(portal_type='Document')">
批量操作可以这样做
<ul tal:define=" Batch python:modules['Products.CMFPlone'].Batch; b_size python:int(request.get('b_size', 20)); b_start python:int(request.get('b_start', 0)); results python:context.restrictedTraverse('@@contentlisting')(batch=True, b_size=b_size, b_start=b_start); batch python:Batch(results, b_size, b_start);"> <li tal:repeat="item results" tal:content="item/Title" /> <div metal:use-macro="context/batch_macros/macros/navigation" /> </ul>
请注意,您直接遍历从 @@contentlisting 获得的结果。 batch 的定义仅在 batch_macros 调用中使用。
在 Python 中,可以使用以下方式获取特定文件夹内容的内容列表:
>>> path.to.your.folder.restrictedTraverse('@@contentlisting')()
对于集合来说,完全相同
>>> path.to.your.collection.restrictedTraverse('@@contentlisting')()
上述内容列表视图实现了 Plone 中旧的 getFolderContents 脚本所使用的所有逻辑。旧脚本被保留以避免破坏可能依赖于其特定返回值的自定义和插件。
通过适配进行自定义
在撰写本文时,Plone 的所有部分在请求内容列表时还没有返回“内容列表”。由于无法在不破坏向后兼容性的情况下在所有地方进行更改,因此您可能需要手动将您的项目序列转换为内容列表。
为此,您需要导入并适配
>>> from plone.app.contentlisting.interfaces import IContentListing >>> catalog = getToolByName(self.portal, 'portal_catalog') >>> results = catalog.searchResults() >>> contentlist = IContentListing(results) >>> print(contentlist) <plone.app.contentlisting.contentlisting.ContentListing object ...>
内容列表、其属性和行为
现在,您不再需要担心您有一堆目录头脑或实际对象(或为了这个目的的虚构对象)。只要您有一个内容列表,您就知道您可以期望从中获得什么。您还知道您可以期望从其中的每个项中获取什么 - 一个内容列表对象。
内容列表是一个普通迭代器,我们可以遍历它并执行与序列相同的各种操作。
contentListingObjects,序列内的项目
《contentListingObjects》是包装对象,每个对象代表网站中的一个内容对象。它们的目的是可预测的,因此您可以始终在列出的对象上调用至少一组公共基方法。
您不必知道对象是从大脑、完整对象还是其他地方起源的。如果您尝试调用对象的方法或访问其属性,而包装器不了解这些方法或属性,它将默默地获取真实对象并将调用委托给它。这意味着您可以像对待任何其他对象一样对待您的对象 - 甚至写入它。
contentListingObjects的方法
- getId() -
返回对象在其容器中的ID,例如 my-example-page。
- getObject() -
返回真实对象
- def getDataOrigin() -
对象的来源数据。
- getPath() -
对象路径,相对于网站根目录,例如 /artifacts/my-example-page
- getURL()-
对象的完整URL,包括网站根目录,例如 http://my.site.com/artifacts/my-example-page
- uuid() -
唯一内容标识符,例如来自 plone.uuid 的uuid。它的唯一目的是唯一。例如,它可以看起来像这样 b0e80776-d41d-4f48-bf9e-7cb1aebabad5。
- getSize() -
字节大小,例如 24。
- review_state() -
工作流审查状态,例如 已发布。
- ContentTypeClass() -
用于在列表中识别对象的规范化类型名称。用于CSS样式化,例如 content-type-page。
- Title() -
返回单个字符串,DCMI Title元素(资源名称)。例如 我的示例页面。
- Description() -
返回DCMI Description元素(资源摘要)。结果是此对象的自然语言描述。描述是描述对象的纯文本字符串。它不应包含HTML或类似内容。
- Type() -
返回DCMI Type元素(资源类型)。结果是资源的可读消息ID(通常是类型信息对象的标题)。例如,来自 plone 域的 u'Page'。
- listCreators() -
返回DCMI Creator元素(资源作者)的序列。根据实现方式,返回内容对象的作者的全名(或其ID)。例如 Jane Smith。
- Creator() -
返回第一个DCMI Creator元素或空字符串。例如 Jane Smith。
- Subject() -
返回DCMI Subject元素(资源关键词)的序列。结果是与内容对象关联的零个或多个关键词。这些是Plone中的标签。例如 ['Ecology', 'Sustainability']。
- Publisher() -
返回DCMI Publisher元素(资源发布者)。结果是负责发布资源的实体或个人的全正式名称。例如 Plone Foundation。
- listContributors() -
返回DCMI Contributor元素(资源合作者)的序列。返回零个或多个合作者(超出由 listCreators 返回的合作者)。
- Contributors() -
对 listContributors 的弃用别名。
- Date(zone=None) -
返回DCMI Date元素(默认资源日期)。结果是字符串,格式为‘YYYY-MM-DD H24:MN:SS TZ’。zone关键字尚不支持(但它是DublinCore接口的一部分,因此必须保留)
- CreationDate(zone=None) -
返回DCMI Date元素(资源创建日期)。结果是字符串,格式为‘YYYY-MM-DD H24:MN:SS TZ’。zone关键字尚不支持(但它是DublinCore接口的一部分,因此必须保留)
- EffectiveDate(zone=None) -
返回DCMI日期元素(资源生效的日期)。结果是格式为‘YYYY-MM-DD H24:MN:SS TZ’的字符串,或None。区域关键字尚未支持(但它是DublinCore接口的一部分,需要保留)
- ExpirationDate(zone=None) -
返回DCMI日期元素(资源失效的日期)。结果是格式为‘YYYY-MM-DD H24:MN:SS TZ’的字符串,或None。区域关键字尚未支持(但它是DublinCore接口的一部分,需要保留)
- ModificationDate(zone=None) -
DCMI日期元素 - 资源最后修改的日期。结果是格式为‘YYYY-MM-DD H24:MN:SS TZ’的字符串。区域关键字尚未支持(但它是DublinCore接口的一部分,需要保留)
- Format() -
返回DCMI格式元素(资源格式)。结果是资源的MIME类型(例如:text/html,image/png等)。
- Identifier() -
返回DCMI标识符元素(资源ID)。结果是资源的唯一ID(一个URL)。
- Language() -
DCMI语言元素(资源语言)。结果是资源的RFC语言代码(例如:en-US,pt-BR)。
- Rights() -
返回DCMI权利元素(资源版权)。返回描述资源的知识产权状态的字符串,如果有。
- isVisibleInNav() -
返回此对象是否将在导航视图中可见。
- MimeTypeIcon()
- 如果contenttype存在于MIME类型注册表中,则返回MIME类型图标。
否则返回None。
变更日志
3.0.5 (2024-04-16)
错误修复
在RealContentListingObject中支持image_scales。@davisagli (#64)
3.0.4 (2023-10-07)
内部
更新配置文件。[plone开发者] (cfffba8c)
3.0.3 (2023-04-15)
内部
删除p.a.contenttypes安装依赖项,它实际上只是一种软依赖。这允许打破循环依赖。[gforcada] (#3764)
3.0.2 (2023-04-06)
内部
更新配置文件。[plone开发者] (#47959565)
3.0.1 (2022-12-05)
错误修复
在RealContentListingObject.__getattr__中检查属性是否存在,但不使用acquisition,如果它是需要acquisition的方法,则使用acquisition返回属性。[gbastien] (#47)
3.0.0 (2022-11-30)
错误修复
最终发布。[gforcada] (#600)
3.0.0b1 (2022-08-30)
错误修复
使用绝对URL构建mime-type图标URL。修复了#44 [erral] (#44)
3.0.0a1 (2022-05-14)
重大更改
删除Python 2和Plone 5.2,使用plone.base。[jensens] (#43)
2.0.7 (2022-03-09)
错误修复
realobject:在访问返回None的属性时不要抛出AttributeError。[tschorr] (#42)
2.0.6 (2022-01-07)
错误修复
当contenttype不在mimetypes_registry中时,不要抛出错误。[tschorr] (#41)
2.0.5 (2021-11-23)
错误修复
适应Plone 6的测试。[ale-rt] (#39)
2.0.4 (2021-09-15)
错误修复
移除与Products.CMFPlone的循环依赖。[ericof] (#37)
2.0.3 (2020-09-26)
错误修复
修复LazyCat/LazyMap的弃用警告。[maurits] (#3130)
2.0.2 (2020-04-20)
错误修复
小的打包更新。[#1]
2.0.1 (2020-03-21)
错误修复
小的打包更新。[各种] (#1)
初始化towncrier。[gforcada] (#2548)
2.0.0 (2018-10-30)
重大更改
移除Python 2.6支持。[ale-rt]
新功能
Python 3支持 [hvelarde, gforcada, davisagli]
使用Products.CMFPlone.utils中的human_readable_size替换getObjSize脚本。#1801 [reinhardt]
错误修复
在Zope4中,_brains不能获取REQUEST。[pbauer]
修复集体索引移动到核心后的测试。[pbauer]
1.3.1 (2017-08-08)
错误修复
修复代码约定。[loechel]
修复在对象没有review_state时查找review_state的错误,例如相关项目(如文件)可能就是这样。[loechel]
1.3.0 (2017-07-03)
新功能
为内容列表对象中的文件类型提供MIME类型图标路径 https://github.com/plone/Products.CMFPlone/issues/1734 [fgrcon]
1.2.9 (2017-05-06)
错误修复
删除hasattr。[ivanteoh]
1.2.8 (2016-11-19)
错误修复
删除ZopeTestCase。[ivanteoh, maurits]
1.2.7 (2016-08-19)
错误修复
让getSize在RealContentListingObject上对没有任何主字段的类型起作用。[jensens]
1.2.6 (2016-07-05)
错误修复
为RealContentListingObject添加了缺失的getSize实现。接口在这里未得到满足。[jensens]
1.2.5 (2016-05-12)
修复
从某些方法中删除了docstrings,以避免发布它们。来自Products.PloneHotfix20160419。[maurits]
1.2.4 (2016-02-08)
修复
小的清理(装饰器、utf8头部、…),删除了未使用的导入并修复了依赖项。[jensens]
1.2.3 (2015-11-25)
修复
在测试中,请使用 selection.any 作为查询字符串。有关问题,请参阅 https://github.com/plone/Products.CMFPlone/issues/1040 [maurits]
清理和重做:内容类型图标和列表中显示图像/封面图像的缩略图 https://github.com/plone/Products.CMFPlone/issues/1226 [fgrcon]
1.2.2 (2015-09-20)
已删除 ids_not_to_list。请使用“排除于导航之外”设置代替。 [jensens]
1.2.1 (2015-09-11)
实现 CroppedDescription 的裁剪功能。 [pbauer]
1.2 (2015-07-18)
引入 @@contentlisting 视图,它还支持来自 plone.app.contenttypes 的集合,包括结果过滤。这为我们提供了从文件夹或集合列出内容的统一界面。弃用 @@folderListing,以保持 BBB 兼容性。 [thet]
1.1.3 (2015-05-05)
将 isVisibleInNav 方法从 portal properties 读取导航显示类型设置改为从 plone.app.registry 读取。这修复了 https://github.com/plone/Products.CMFPlone/issues/454。 [timo]
1.1.2 (2015-05-05)
Pep8。 [thet]
1.1.1 (2015-03-13)
添加剩余的、已实现但缺失的 IContentListing 接口方法。 [thet]
为内容列表添加 forward getURL 的相对 kw(plone4 兼容) [kiorky]
1.1.0 (2014-04-16)
使用合适的样式指南进行标题。 [polyester]
将 README 移动到 /docs 文件夹。 [polyester]
替换过时的测试断言语句。 [tisto]
删除语言测试并修复图标测试以获取正确的图像。 [bloodbare]
为 Plone 5 使用 PLONE_APP_CONTENTTYPES 固件。 [tisto]
1.0.5 (2013-08-13)
向接口添加缺少的 getDataOrigin 方法。 [timo]
1.0.4 (2013-01-01)
没有变化。
1.0.3 (2012-10-29)
听说我喜欢批量处理是错的。目录结果已经批处理了,所以不要再次批处理它们。 [lentinj]
1.0.2 (2012-10-15)
没有变化。
1.0.1 (2012-04-15)
将 ContentTypeClass 修改为返回 contenttype-{portal_type} 以匹配 Plone 其他部分期望的格式。这修复了基于精灵的页面/文档图标。 [gaudenz]
1.0 - 2011-07-19
删除 searchResults 视图和相关代码。搜索现在由 plone.app.search 处理。 [hannosch]
将 uniqueIdentifier 方法重命名为 uuid 以实现更短、更一致的命名,与 plone.uuid 保持一致。 [hannosch]
0.1b2 - 2011-04-15
为 appendViewAction 编写单元测试,比较 portal_type 而不是 Type。 [lentinj]
在 isVisibleFromNav、appendViewAction 中处理 RealContentListingObject 对象。移除 memoise,因为它不会缓存任何有用的信息。 [lentinj]
0.1b1 - 2011-04-15
添加 isVisibleFromNav 方法,基于 http://siarp.de/node/201,使用 memoise 缓存对 portal_properties 的查找。 [lentinj]
添加 MANIFEST.in。 [WouterVH]
0.1a1 - 2011-03-02
首次发布
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
plone.app.contentlisting-3.0.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2dfd9b507bcd7a31620e561e29951d089b953a89c231b6181bab6afc8b59971d |
|
MD5 | f458ad464928ebf9b672ca8d67d420ce |
|
BLAKE2b-256 | 62a3276070785e3fc766bad1d8b067548d18476eb2e3e2142bbfa14600d5b3df |
plone.app.contentlisting-3.0.5-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b220264820e655edbb08f0f4ea236dc2500e9f11524a782abebc8b8aac5245d7 |
|
MD5 | dc9cc038f926bd73123fe5120dc7d3ab |
|
BLAKE2b-256 | 8bb186aaf023d030a3202d4c10ae4c179d4b5ec59efc26114dc45b5889049f7f |