Шаблон используемый по умолчанию находится в
/views/layouts/main.php
Изменить шаблон вывода информации можно разными способами.
Давайте рассмотрим все эти способы.
1. Глобальная смена файла общего шаблона (замена для main.php)
Для этого идем в конфигурационный фаил
/config/web.php
находим
Код:
$config = [
и добавляем в него следующий параметр (в нашем случае, шаблон находится в файле /views/layouts/basic.php)
Код:
'layout' => 'basic',
пример
Код:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'layout' => 'basic',
'aliases' => [
Чаще нам нужно сделать разные шаблоны для разных страниц сайта.
Для этого мы можем прописать шаблон как отдельному контроллеру, так и отдельно любому методу в контроллере.
2. Смена шаблона для контроллера.
Открываем необходимый контроллер и прописываем ему
Код:
public $layout = 'basic'; //где basic наш нужный шаблон (basic.php)
— теперь данный контроллер быдет выводиться через шаблон
/views/layouts/basic.php
3. Смена шаблона в методе.
Просто в метод добавляем параметр
Код:
$this->layout = 'basic';//где basic наш нужный шаблон (basic.php)
Настройка файлов стилей и скриптов.
По умолчанию находится в файле
/assets/AppAsset.php
сами файлы стилей и скриптов находятся в папке /web/
очень важно не забыть подключить фаил стилей скриптов в нашем шаблоне
Код:
<?php
use app\assets\AppAsset;
AppAsset::register($this);
?>
Далее нам нужно распределить следующие параметры по своим местам на странице (нужны они для вставки стилей и скриптов в нужном нам месте)
<?php $this->beginPage() ?>
располагаем перед
<!doctype html>
<?php $this->head() ?>
располагаем перед
</head>
<?php $this->beginBody() ?>
располагаем после
<body>
<?php $this->endBody() ?>
располагаем перед
</body>
<?php $this->endPage() ?>
располагаем в конце страницы
Для того что-бы разместить (к примеру скрипт) в одной из вышеуказанных «точек»,
нужно добавить следующий код
public $jsOptions = [
‘position’ => \yii\web\View::POS_END
];
в фаил где мы прописывали сами скрипты (после объявления самих скриптов)
/assets/AppAsset.php
Пример
Код:
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'css/site.css',
'css/media.css',
];
public $js = [
'js/scripts.js',
];
public $jsOptions = [
'position' => \yii\web\View::POS_END
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
}
POS_END — выведет скрипты в конце страницы
POS_HEAD — выведет скрипты в HEAD’e
POS_BIGIN — выведет скрипты после тега <body>
Ну и самое главное это
<?= $content ?>
Размещаем там где нам нужно выводить контент
Подключение стлей или (и) скриптов на отдельно взятой странице.
В нужной вьюхе (view) прописываем регистрацию скрипта
$this->registerJsFile(‘@web/js/scripts.js’)
если нам нужно, что-бы наш скрипт подгружался после загрузки jQuery (например),
нужно прописать зависимость (depends)
$this->registerJsFile(‘@web/js/scripts.js’, [‘depends’ => ‘yii\web\YiiAsset’])
с css стилями все делается аналогично
Заходим в конфиг web.php
после
$config = [
дописываем
‘language’ => ‘ru-RU’,
сохраняем
Хорошая статья. Мне помогла т.к сейчас делаю сайт на Yii2