1

大家好,我认为这可能是也可能不是编程问题。但是我试图在concrete5论坛上问这个问题,但没有运气。希望有人可以在这里给我一个线索..

有什么方法可以为每个用户组的 composer 中的属性设置不同的默认值?

让我详细解释我的问题。我的客户有大约 60 个组织单位(每个单位都有自己的用户组)。对于每个单元,他们都希望拥有自己的页面列表。独家包含单位成员发布的所有文章。除此之外,来自组织单位的所有帖子也应该汇总在全球新闻类别的子类别中。所以我将内容结构构造成这样

组织单位目录 [页面类型]

  • 第一单元的文章
  • 第二单元的文章
  • 第三单元的文章
  • ...

新闻[页面类型]

  • 组织单位信息[包含所有单位的汇总页面列表]
  • ..其他新闻子类别..
  • ..其他新闻子类别..
  • ..其他新闻子类别..

对于上述内容结构,我将“NEWS”顶级类别和“ORGANIZATIONAL UNIT DIRECTORY”设置为page_type,并为新闻子类别创建一个属性(我将其命名为“news_location”)。并再创建一个属性来确定单位(我将其命名为“单位”)。

现在,我的问题是,如何在作曲家上为特定用户组预设属性“news_location”和“unit”。例如,对于“单元 1”的成员。我希望他们有一个独特的作曲家,其属性“news_location”预设为“组织单位信息”,属性“unit”预设为“unit 1”。而且他无法更改这些属性,以便我们可以确保他们只会在适当的位置/类别上发布新文章。

我一直在摆弄concrete5 CMS,但找不到任何方法来做到这一点。我应该挖掘代码并为此制作自己的模块吗?

就是这样......期待解决方案。如果我的问题太复杂,我很抱歉:p

4

1 回答 1

1

绝对没有内置功能可以让您在 Composer 中为不同的用户组设置不同的默认属性值(事实上,我什至不认为可以为属性设置任何默认值——即使它是相同的默认值所有用户的价值)。

您可以覆盖核心CollectionType类——在该getComposerContentItems方法中您可以编写一些代码来检查当前页面类型,检查每个属性键,并根据当前用户组为某些属性设置默认值。

但真正困难的部分实际上是设置属性值。在 Concrete5 中没有优雅的方法可以做到这一点——属性值总是与属性分配给的对象(例如,页面、文件或用户)相关联。我过去曾尝试在属性上任意设置任何默认值,但没有简单的方法可以做到这一点。(对于像文本框和复选框这样的简单属性类型并不太难......但对于像 DateTime 和 Select 类型这样的更复杂的东西,它太复杂了,我什至没有费心去弄清楚)。

您可能想尝试的是创建自己的属性类型,然后在属性类型本身中确定如何根据用户组设置默认值(如果不存在值)。这是我拥有的一些基本代码,它们演示了您自己的属性类型所需的最低限度: https ://github.com/jordanlev/c5_minimal_attribute_type

另请查看 C5 文档以获取更详细(但也更混乱且更难理解)的解释和示例代码: http: //www.concrete5.org/documentation/developers/attributes/overview

祝你好运!

于 2012-11-08T16:55:43.903 回答