问题描述
比如说,有一个页面 /catalog 是所有产品的父页面。我可以拥有带有页面的永久路由,例如/catalog/product/1、/catalog/product/2 等
但是用户可以选择任何其他页面作为目录产品的父页面,例如/股票。
如何在变量节点上呈现产品数据,例如/{variable-page}/product/{id}?
每个产品的多个页面很容易 - 只需创建一个“product_list”块以在父页面上呈现所有产品,并创建一个“product”块以在 product_list 的子页面上呈现每个产品。
但我不想要一百万页。我只需要 1 个页面就可以在父页面下呈现任何产品的 DB 内容,其名称和路线可以更改。
解决方法
虽然不确定这是最好的方法......以下有效。现在哪个页面有产品列表都没有关系,任何孩子都在 /whatever/product/uid
控制器:
public function action_product($uid = 0)
{
$product = Product::getByUID($uid);
if ($product instanceof Product) {
$this->set('product',$product);
$this->runAction('product');
}
else {
$this->runAction('view');
}
}
查看:
if ($controller->getAction() === 'product') {
...
} else {
...
}