我想开始为Google使用AMP(加速移动页面),example.com/my-article
等文章网址也必须以example.com/amp/my-article
提供,但布局不同。
问题:我应该如何构建我的Yii2代码以显示不同的布局并为文章控制器制作网址路由规则?我提出的一些提示:
public function beforeAction($action)
{
if (...) // ??
$this->layout = 'amp';
else
$this->layout = 'main';
return parent::beforeAction($action);
}
public function actionView($article_slug)
{
$model = $this->findModel($article_slug);
if ($this->layout == 'amp')
$path = 'amp/view';
else
$path = 'html/view';
return $this->render($path, [
'model' => $model,
]);
}
在config.php
写什么?
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
// ??
'amp/<article_slug:[\w\-]+>' => 'article/view',
'<article_slug:[\w\-]+>' => 'article/view',
],
],
答案 0 :(得分:0)
你可以在行动前做这样的事情
public function beforeAction($action)
{
if (\Yii::$app->request->getQueryParam('amp')) {
$this->layout = 'amp';
else
$this->layout = 'main';
return parent::beforeAction($action);
}
并像这样配置URL管理器
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<amp>/<article_slug:[\w\-]+>' => 'article/view',
'<article_slug:[\w\-]+>' => 'article/view',
],
],