Pr0per
@Pr0per
Software Engineer/Beginner Web Developer

Как интегрировать шаблон оформления(тему) в Yii2?

Сейчас добавляю темы следующим способом:
- код темы копирую в папку themes/views/layouts/,
- в config прописываю map
'components' => [
        'view' => [
            'theme' => [
                'pathMap' => [
                    '@app/views' => '@app/themes/otherLayouts',
                ],
            ],
        ],
    ],

- включаю файлы css, js в AssetBundle.
При таком подходе были проблемы с bootstrap стилями и скриптами.
1) Правильно ли это?
2) Как вы применяете чужие темы?
Знаю есть уже готовые темы в виде модулей, подтягиваются composer'ом но охота использовать другие.
  • Вопрос задан
  • 881 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
- код темы копирую в папку themes/views/layouts/,

Правильней будет сделать структуру такой:
themes/name_theme/layouts -> шаблон темы (main.php), с меню, шапкой и подвалом.
themes/name_theme/site -> виды темы
themes/name_theme/assets -> ресурсы (css, js и т.д.)

themes/name_theme/img -> изображения

Создаёте отдельный файл, MyTheme (например), который наследуется от AssetBundle и подключаете в нём файлы ресурсов. Указываете путь к Вашим ресурсам
public $sourcePath = '@app/themes/portfolio/assets';

Кладёте рядом с AssetBundle. В шаблоне темы подключаете этот файл.
use app\assets\MyTheme;
MyTheme::register($this);


В файле конфигурации подключаете свою тему:
'view' => [
           'theme' => [
              'basePath' => '@app/themes/name_theme',
              'baseUrl' => '@web/themes/name_theme',
              'pathMap' => [
                 '@app/views' => '@app/themes/name_theme'
              ]
           ]
        ],


Проблем не должно возникать с подключением bootstrap или скриптов. Но если Вы не используете в своей теме bootstrap, то лучше вообще убрать эту зависимость.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы