我正在使用此Silverstripe模块创建产品目录:
https://github.com/luisdias/silverstripe-productcatalog 这是基于这个模块 https://github.com/arambalakjian/DataObject-as-Page
我遇到一个问题,友情网址显示为:www.mysite.com/product-page/category/ 1 要么 www.mysite.com/product-page/show/ 1/1 与其标题或网址段相关联。 www.mysite.com/product-page/show/my-category/my-product
我尝试将代码从Product.php更改为
//Return the link to view this category
public function Link() {
$Action = 'show/' . $this->ID . '/' . $this->URLSegment;
return $Action;
}
这
//Return the link to view this category
public function Link() {
$Action = 'show/' . $this->ID . '/' . $this->CategoryID;
return $Action;
}
哪个有效,但不适用于类别标题,并且url有空格,它会生成%20而不是_。
这似乎是一个简单的改变,我无法解决..
我也希望能够有子类别。因此,一个类别中的所有内容都可以分为“" Size"”。目前所有产品只分一次。产品>我想要的产品类别>分类>子类别可以帮助我实现这一目标吗?感谢
答案 0 :(得分:2)
URLSegment是产品DataObject上的一个字段,可以在CMS中手动输入,对吗?如果是这样,您必须输入URLSegment作为URL友好字符串,例如my-awesome-product
。
如果您希望自动生成URLsegment,请DataObject As Page module you mentioned handles that。我会将该方法以及关联的onBeforeWrite
方法添加到DataObject
扩展Product
。你可以通过一些DataExtension
魔法来实现这一目标。
您还必须重载Category
课程上的Link()
方法。您需要更改(或在DataObject
扩展的自定义Category
中重载该方法):
$Action = 'category/' . $this->URLSegment;
并按照您在#1中的操作添加generateURLSegment
方法和onBeforeWrite
来电。