【发布时间】:2016-03-25 18:27:27
【问题描述】:
我创建了一个新的页面类型,它需要一些东西来分解内容。我创建了一个strapline 块,我想在页面上的3 个位置使用它,但是我只想创建一个版本的strapline 块并通过动态数据驱动该内容。
我在 Straplines.php 中有以下内容
class Straplines extends DataObject{
private static $db = array(
'Title'=>'Text',
'Content'=>'HTMLText',
'SortOrder'=>'Int'
);
private static $has_one = array(
'Parent'=>'Page'
);
private static $default_sort = 'SortOrder';
public function getCMSFields(){
$fields = parent::getCMSFields();
$fields->addFieldToTab("Root.Main", new HtmlEditorField('Content','Content'));
$fields->addFieldToTab("Root.Main", new TextField('Title','Title'));
return $fields;
}
}
然后我将 cms 字段添加到 HomePage.php。我可以在那里添加带状线没有问题,它们都会出现。 然后在 HomePage.ss 我有以下内容
<% include PricesBlock %>
<% include TourStraplineBlock %>
<% include QuickFacts %>
<% include TourStraplineBlock %>
但是我无法在 TourStraplineBlock 中找到为每一个获取单独的内容。当然,必须要参数化包含或不必创建多个模板。我是 Silverstripe 开发人员的新手,我发现创建可重复使用的内容是一个艰难的过程。
编辑:这是处理显示的strapline.ss 模板。
<div class="strapline">
<% loop Straplines %>
$Content
<% end_loop%>
</div>
你可能猜到了,如果我把它放两次,它只会显示所有的标语。我想做类似的事情
<% include Strapline?id=1 %>
然后在 Strapline.ss 中对其进行解码并从那里开始。
编辑对不起是它的 3.2 不是 3.0。我认为它们非常相似。
【问题讨论】:
-
private static $db听起来不像 Silverstripe 3.0,更像是 3.1 或 3.2。你用的是什么版本的SS?您能否显示更多 HomePage.php 代码和您要修改的包含模板? -
按要求进行了一些编辑@wmk
标签: php silverstripe