我创建了这个函数,将dataobjects显示为页面
// DISPLAY ITEM AS PAGE
public function produkt(SS_HTTPRequest $request) {
$urlSegment = $this->request->param('URLSegment');
$item = ShopItem::get()->filter('URLSegment', $urlSegment)->first();
if( $item ) {
$data = array(
'Item' => $item,
'Title' => $item->Title,
'Parent' => Shop::get()->First(),
'Controller' => $this,
'URLSegment' => $item->URLSegment
);
return $this->customise($data)->renderWith(array('ShopItem', 'Page'));
} else {
return $this->httpError(404);
}
}
这是我的YML文件
---
Name: productRoute
After: 'framework/routes#coreroutes'
---
Director:
rules:
'onlineshop//produkt/$URLSegment!': 'Shop_Controller'
该功能在我的Shop_Controller上。和Dataobjects显示在onlineshop / produkt / blablabla-1
下工作正常,但在导航中,“Onlineshop”链接不会突出显示为部分。
我想我需要将“LinkinMode()”函数放在我的数据对象中。但我不知道该功能应该包含什么。返回部分当前或链接doesen't work。
有人可以帮助我吗?
提前谢谢
答案 0 :(得分:1)
您只想突出显示" Onlineshop "这是SiteTree中的一个页面,对吧?
如果是这样,只需覆盖该类中的LinkingMode()
方法(扩展SiteTree
)并让其返回section
或current
,以使您的自定义路由处于活动状态...
如果您希望在导航中显示每个DataObject并在活动时突出显示,那么您只需要在DataObject本身上使用该方法。
请参阅http://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-1-keeping-it-simple/