佩卡是正确的,但我很犹豫,垃圾与另一个答案的讨论(长)的解释。
区域根据名称是动态的。因此,“属性详情1”与“属性详情01”不同。
你可以这样做:
for ($i = 1; $i <= 10; $i++) {
$a = new Area('Property Details ' + $i);
$a->display();
}
而且你会得到10依次命名为“房产详细信息X”,从1区, - 10
比方说,你的内容块添加到他们。只要它们保持完全相同的名称,那么这些区块将按预期工作。你甚至可以改变第一行:
for ($i = 10; $i >= 1; $i--) {
在这种情况下,你会得到的区域顺序命名向下(10,9,8 ...)和C5将保持内容块在原产地 - 所以他们都会倒过来。
但是,假设你做:
for ($i = 11; $i <= 20; $i++) {
现在你得到10个区(11,12,13 ...),和所有的都是空白。内容块已基本消失。如果需要,您可以创建新的内容块。但是继续前进并将原始回路放回(1,2,3 ...)。您的原始内容块返回 - 就像以前一样。
这真的很长的解释只是表明C5基于名称创建块,并且该名称成为关键。它可以是任何东西。你可以将它基于页面名称,或者动态生成它,或者其他任何东西。一旦它被创建,你就不能改变它(如果你不想“丢失”这些块)。
但是......我会在这里再次同意佩卡......你可能不想这样做。不知道你的目标,你正在创造(或延长)难以维护的非常脆弱的解决方案。 Pekka建议为每个属性创建子页面,然后您可以使用页面列表块来“拉”适用的属性。或者,如果您不想创建单独的页面,请使用Jordan的Designer内容区块 - http://www.concrete5.org/marketplace/addons/designer-content/。有一个区域(“房产详细信息”),并为每个房产添加一个区块。更容易删除,重新排序等。
编辑到地址Sphere的前两个问题: 将区块添加到区域非常简单。只要这些区域没有重复的名称,您可以按照之前的方法单击它,然后添加一个块。我不确定您的特定网站需要哪种类型的块 - 这是特定于您的网站的。这可能只是一个内容块,或与特定的模板,在之前的开发者将其设置为“列表”一个每块实例页,每区(这是很奇怪的,也许一个页次块,但你永远不知道......)。或者,也许它是从我之前提到的设计器内容块创建的块类型。在现有的街区上徘徊应该会给你一个想法。另外,我发现有时他们会在HTML中写出一些标识ID。所以,来源是类似的。
至于你的代码示例:是的,$续是页。 Pekka和我提供的代码($ a-> display())基本上是这样做的:
- 初始化一个名为'Property Details'(或1或2或其他)的区域。正如讨论过的那样,这是关键。
- 显示它,默认为显示其“为”当前页面。这与当前页面上的“打开”不同。它将始终显示在当前页面上......作为参数传递给 - > display()更像是“该区域应该从中拉出的页面”。所以如果你理论上可以通过$ thePageObjectForPropertyOnMainStreet,它会显示该页面的'Property Details'区域。使用$ cont是不必要的。创建它时(它已经存在)。 但是......现在我想起来了,那可能是他试图做的。 $ cont可能是对各个属性页面的引用。这些网页威力有一个名为“房产详细信息”一区,而这个他环路提供从这些网页“抠区”。但是,$ cont看起来会不一样。 你可以做这样的事情$续=页面:: getByID(X);,其中x是CID的属性页,其中有一个名为“房产详细信息”一区硬编码此。编辑并保存后,您可以在URL中获取cID。
谢谢。看来我缺少的是'添加块到一个区域'位。从新的Area()代码中看不出这个链接是如何形成的。基本上我正在寻求支持由另一个开发人员构建的系统,并且客户不愿意将任何时间/成本花费在明显的错误上。一个快速/肮脏的解决方案将是使'区域'动态命名,但我不确定这些链接到块的位置 - 我看不到名为“属性详细信息”或类似的块。我承认我有点困惑,但感谢您的耐心。 – Sphere 2013-03-07 09:33:25
$ cont = Page :: getByID($ page-> getCollectionID()); $ regexMatchThis = $ a-> display($ cont);你提到这个$ cont变量不是'页面'吗? – Sphere 2013-03-07 09:37:15