跳转到主要内容

为plone添加路由配置的能力

项目描述

简介

为Plone实现的路由。路由实现驱动是查询门户目录。

示例路由

/posts/{effective:year}/{effective:month}/{effective:day}

添加路由

 from collective.routes import addRoute
 addRoute('BlogItems',
        '/posts/{effective:year}/{effective:month}/{effective:day}',
        defaultQuery={'portal_type': 'News Item'},
allowPartialMatch=True)

启用它

在路由可用之前,您需要首先在您想要使用它的站点上启用路由。这可以通过在“站点设置”中的路由配置面板来完成。

开箱即用的路由

collective.routes附带一些示例路由,预先打包。

博客文章

博客文章

/posts/{effective:year}/{effective:month}/{effective:day}

示例URL

/posts/2011 ~ Show all posts from 2011
/posts/2011/10 ~ Show all from 2011 and the month of October
/posts/2011/10/5 ~ Show the blog posted October 5, 2011

定义

addRoute('Blog Posts',
  '/posts/{effective:year}/{effective:month}/{effective:day}',
  defaultQuery={'portal_type': 'News Item',
                  'sort_on': 'effective',
                  'sort_order': 'reverse'},
  allowPartialMatch=True)

标记内容

标记

/tagged/{Subject}/{Subject}/{Subject}

示例URL

/tagged/foo ~ Show all posts tagged `foo`
/tagged/foo/bar ~ Show all posts tagged `foo` and `bar`
/tagged/foo/bar/woo ~ Show all posts tagged `foo`, `bar` and `woo`

定义

addRoute('Tagged',
     '/tagged/{Subject}/{Subject}/{Subject}',
     defaultQuery={'portal_type': 'News Item',
                   'sort_on': 'effective',
                   'sort_order': 'reverse'},
     allowPartialMatch=True)

路由语法

语法非常简单,只有几种变体。

文字

文字字符串匹配

/string-to-match

将匹配“string-to-match”

查询

匹配任何内容,并将其作为查询参数保持

/{Subject}

将匹配任何字符串,并将其值作为查询参数保持,用于门户目录查询。

日期查询

有三个子指令来匹配部分内容

/{effective:year}/{effective:month}/{effective:day}

然后将这些内容组合成门户目录查询。

自定义对象检索

如果您希望绕过正常的门户目录查询以检索对象,您可以提供自己的对象查找方法。

示例

def customObjectFinder(context, **kwargs):
    query = context.query
    site = getSite()
    return site[query['id']]

addRoute('My Route',
     '/my-route/{id}',
     objectFinder=customObjectFinder)

调整已发布对象

如果您想在遍历发布之前最后一刻添加接口,这就是您会使用的。

这对于添加接口很有用,因为实际发布的对象被包裹,以保持发布时的面包屑。

示例

from interfaces import IMySpecialContext
from zope.interface import alsoProvides

def myMungeMethod(context):
    alsoProvides(context, IMySpecialContext)

addRoute('My Route',
     '/foo/{bar}',
     mungeObject=myMungeMethod)

自定义视图渲染

您还可以自定义渲染的查找对象的视图

addRoute('My Route',
     '/foo/{bar}',
     customViewName='@@custom-view')

addRoute 签名

允许参数

routeName(必需)

路由名称

route(必需)

实际的路由规范

defaultQuery(默认为 {})

为查找器提供的默认查询

objectFinder(默认为 collective.routes.finders.catalogObjectFinder)

用于查找已发布对象的方法

mungeObject(默认为 None)

由于实际发布的对象是一个包装器对象,这是一个在发布之前能够与临时包装器对象打交道的方

customViewName(默认为 None)

为查找对象渲染的定制视图

allowPartialMatch(默认为 False)

如果整个 URL 不匹配,您仍然可以尝试发布它。这在目录查找器路由中非常有用,您希望允许用户提供部分 URL 并仍然找到对象。

breadcrumbFactory(默认为 None)

覆盖面包屑生成。必须返回一个包含 {'absolute_url': url, 'Title': title} 值的元组。

customPredicates(默认为 [])

一个自定义谓词函数的可迭代对象,用于检查与传入请求是否匹配。谓词必须接受两个参数(requestquery),其中 request 是当前请求对象,query 是从路由生成的当前查询。函数必须返回一个布尔值。如果匹配则为 True,如果不匹配则为 False。

变更日志

1.1a2 (2014-08-29)

  • 添加了意大利翻译 [giacomos]

  • 添加了一些 i18n 字符串和 2 个用于 i18n 重建的脚本 [giacomos]

  • plone 4.3 兼容导入 [Lewicki]

1.1a1 (2012-02-28)

  • 添加了西班牙语和巴西葡萄牙语翻译 [hvelarde]

  • 转移到使用 plone.app.registry [saibatizoku]

  • 使其与 plone.locking 兼容 [vangheem]

  • 在路由配置中提供指定要遍历的视图的能力 [vangheem]

  • 不应用 IWrappedContext 接口 [vangheem]

  • 在路由请求时动态地将 IRoutedRequest 层添加到请求中,以便您可以在路由时覆盖 plone 的特定部分。 [vangheem]

  • 添加提供自定义谓词的能力 [vangheem]

  • 添加提供自定义面包屑工厂的能力 [vangheem]

  • 添加了 allowPartialMatch 的 addRoute 参数,这样在匹配 URL 与路由时,您就不必匹配整个 URL。 [vangheem]

1.0a1 (2011-10-07)

  • 初始发布

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分发

collective.routes-1.1a2.zip (43.9 kB 查看哈希值)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面