如何在Yii2中自定义引导程序模板?

时间:2017-07-26 00:39:11

标签: yii yii2

我想自定义此引导程序模板。 我有这样的模板:

图1

enter image description here

实际上,我将引导程序模板的html放在views/layout/main.php中。因此,模板将始终存在。但是,我想在主页上制作菜单可能与views/layout/main.php中我的模板上的菜单不同。我想让菜单与众不同。它是这样的: 像主页这样的第一页,模板是这样的:

图2 enter image description here

然后当我选择年份:2012年时,页面应该是这样的:

图3 enter image description here

如您所见,pic 2和pic 3之间的差异是侧栏中的“菜单”。我想一直在pic 3中制作菜单。因此,当我打开另一个菜单时,模板保持一致。当我将源代码放在views / layout / main.php中时,它是可能的。但是,Pic 2怎么样?该页面有不同的菜单。

这是views\layout\main.php中的模板代码:

https://pastebin.com/Yd5nQ9Er

3 个答案:

答案 0 :(得分:1)

为不同的页面创建不同的布局。您可以使用特定操作的布局和控制器,如下所示:

如果要对Controller中的所有操作使用布局,

class SiteController extends Controller //controller name
{
    public $layout="main-template-1"; //layout name
     // actions
}

如果您想使用特定操作的布局而不是使用

public function actionIndex() // action name
{
$this->layout = "main-template-1"; // layout
}

答案 1 :(得分:1)

如果是想要改变的菜单项,可以在pic1和pic2中看到 从URL本身获取信息并在

上创建if条件
views\layout\main.php

此外,如果您有不同的控制器,您可以通过

获取控制器和操作ID
$controller = strtolower(Yii::$app->controller->id);

$action = strtolower(Yii::$app->controller->action->id);

然后根据你的动作和控制器你可以显示隐藏菜单

答案 2 :(得分:0)

您可以使用动态阻止:

<?php $this->beginBlock('block1'); ?>
...content of block1...
$this->endBlock(); ?>

take a look