Страница 1 из 1

Темизация в Yii2

Добавлено: 2013.10.16, 17:13
egorpromo
Насколько сейчас готова система темизации (поддержка тем)?
Мне это кажется или она действительно не готова? Сейчас я вижу, что в классе yii\base\Theme определена переменная Theme::pathMap, где содержится соответствие путей одного выбранного файла к другому, который есть в данной теме. :shock: Мне кажется, что это какая-то заглушка, поэтому хотел бы узнать у разработчиков, на каком этапе находятся Темы в Yii2?

Также могу предложить свою идею, как организовать систему файлов в Темах.
Я думаю, что лучше где-нибудь в директории веб-приложения (@app) выделить директорию с именем подобным view_{theme-name}, внутри которой будут размещены файлы с видами и лейаутами. Это удобно, так как а) темизация ограничена только файлами внутри это директории б) можно легко создавать новые темы, а потом их подключать.

Re: Темизация в Yii2

Добавлено: 2013.10.16, 17:20
samdark
Вроде как готова, но делал её Qiang и я не следил. Как работает не знаю.

Re: Темизация в Yii2

Добавлено: 2014.05.19, 12:46
rafic
В данный момент нельзя разместить тему в @web/themes
Не знаю почему, но работает только если настройки такие:

Код: Выделить всё

        'view' => [
            'theme' => [
                'pathMap' => [
                    '@app/views' => '@app/themes/basic',
                    '@app/modules' => '@app/themes/basic/modules'
                ],
            ],
        ]
 
Если папку с темами из @app переместить в @web и настройки прописать вот так

Код: Выделить всё

        'view' => [
            'theme' => [
                'pathMap' => [
                    '@app/views' => '@web/themes/basic',
                    '@app/modules' => '@web/themes/basic/modules'
                ],
            ],
        ]
 
То тема не подхватывается. Почему?

Re: Темизация в Yii2

Добавлено: 2014.05.19, 13:08
lancedevnull
webroot
web указывает на урл

Код: Выделить всё

        Yii::setAlias('@webroot', dirname($request->getScriptFile()));
        Yii::setAlias('@web', $request->getBaseUrl());
 

Re: Темизация в Yii2

Добавлено: 2014.06.17, 09:59
Faenir
Подскажите пожалуйста, можно ли как-то убрать из пути к файлу темы "views"?
Конфиг:

Код: Выделить всё

'view' => [
    'theme' => [
        'pathMap' => [
            '@backend/views' => '@backend/themes/default',
            '@backend/views/layouts' => '@backend/themes/default/layouts',
            '@backend/modules' => '@backend/themes/default',
            'baseUrl' => '@backend/themes/default',
        ],
    ],
],
Приходится файлы модуля класть в
@backend/themes/default/user/views/default/index.php
Хотелось бы, что бы они лежали в
@backend/themes/default/user/default/index.php

Re: Темизация в Yii2

Добавлено: 2014.06.28, 23:07
marmura
MrArthur писал(а):Подскажите пожалуйста, можно ли как-то убрать из пути к файлу темы "views"?
Конфиг:

Код: Выделить всё

'view' => [
    'theme' => [
        'pathMap' => [
            '@backend/views' => '@backend/themes/default',
            '@backend/views/layouts' => '@backend/themes/default/layouts',
            '@backend/modules' => '@backend/themes/default',
            'baseUrl' => '@backend/themes/default',
        ],
    ],
],
Приходится файлы модуля класть в
@backend/themes/default/user/views/default/index.php
Хотелось бы, что бы они лежали в
@backend/themes/default/user/default/index.php
Та же проблема, может кто нибудь нашел решение?

Re: Темизация в Yii2

Добавлено: 2014.06.29, 00:01
ptm
marmura писал(а):
MrArthur писал(а):Подскажите пожалуйста, можно ли как-то убрать из пути к файлу темы "views"?
Конфиг:

Код: Выделить всё

'view' => [
    'theme' => [
        'pathMap' => [
            '@backend/views' => '@backend/themes/default',
            '@backend/views/layouts' => '@backend/themes/default/layouts',
            '@backend/modules' => '@backend/themes/default',
            'baseUrl' => '@backend/themes/default',
        ],
    ],
], 
Приходится файлы модуля класть в
@backend/themes/default/user/views/default/index.php
Хотелось бы, что бы они лежали в
@backend/themes/default/user/default/index.php
Та же проблема, может кто нибудь нашел решение?
Не совсем тот случай, но у виджетов переопределял

public function getViewPath()
{
$class = new \ReflectionClass($this);

return dirname($class->getFileName()) . DIRECTORY_SEPARATOR . 'minilots\views';
}

Re: Темизация в Yii2

Добавлено: 2014.06.29, 00:26
lynicidn
а теперь отключите тему :)

Re: Темизация в Yii2

Добавлено: 2014.10.03, 06:44
Vodazar
Подскажите, в Yii2, на сколько я понял, нормальная практика это разделение темы на две папки, файлы view хранятся в корне приложения, а все ресурсы складываются в директорию web.

Я настроил View следующим образом:

Код: Выделить всё

        'view' => [
            'theme' => [
                'pathMap' => ['@app/views' => '@app/themes/mythemename'],
                'baseUrl' => '@web/themes/mythemename',
            ],
        ],
А как теперь в AssetBundle настроить, чтобы он работал относительно директории baseUrl из View?
Иначе получается, что мне и в каждом AssetBundle нужно прописывать теперь путь к mythemename, а если я потом захочу использовать тему mythemename2, то придётся переписывать все AssetBundle?

Re: Темизация в Yii2

Добавлено: 2015.05.31, 21:13
sergey144010
MrArthur писал(а):Подскажите пожалуйста, можно ли как-то убрать из пути к файлу темы "views"?
Конфиг:

Код: Выделить всё

'view' => [
    'theme' => [
        'pathMap' => [
            '@backend/views' => '@backend/themes/default',
            '@backend/views/layouts' => '@backend/themes/default/layouts',
            '@backend/modules' => '@backend/themes/default',
            'baseUrl' => '@backend/themes/default',
        ],
    ],
], 
Приходится файлы модуля класть в
@backend/themes/default/user/views/default/index.php
Хотелось бы, что бы они лежали в
@backend/themes/default/user/default/index.php
Вот таким образом можно избавиться от папки views и складывать файлы темы модуля, в принципе наверное, куда угодно

Код: Выделить всё

'pathMap' => [
 '@sergey144010/simpleBlog/views' => '@app/themes/simpleBlog',
],
 
где
@sergey144010/simpleBlog - ссылка на директорию модуля (она должна у вас создаваться в yiisoft/extensions.php),
/views - соответственно директория views вашего модуля,
Из неё мы копируем все и складываем в папку :
@app/themes/simpleBlog

где
@app - ссылка на директорию приложения,
/themes/simpleBlog - соответственно создаём данные подпапки,
И в папку simpleBlog копируем содержимое папки views с некоторыми изменениями.

Ещё для примера,

Код: Выделить всё

'pathMap' => [
 '@sergey144010/simpleBlog/views' => '@app/folder1/folder2/folder3',
],
 

Re: Темизация в Yii2

Добавлено: 2015.06.13, 12:41
SergV
Ребят, а как обстоят дела в Yii2 с переадресацией с - ../mytheme/layout/main.php на ../mytheme/index.php? Просто хочу привести стиль тем, к стандарту построения html тем, где индекстный файл лежит в корне а не где то в подпапках.
Я просто не нашёл не чего по этой теме, есть немного инфы из оф доков, но там только общие пути можно задать...

Код: Выделить всё

[[yii\base\Theme::basePath]]: specifies the base directory that contains the themed resources (CSS, JS, images, etc.)
[[yii\base\Theme::baseUrl]]: specifies the base URL of the themed resources.
[[yii\base\Theme::pathMap]]: specifies the replacement rules of view files. More details will be given in the following subsections. 
Два года назад, когда игрался с первым Yii, помню что я как то это сделал, кажись в контроллерах менял путь к layout, но проблема в том что те эксперименты потеряны, да и сейчас я не нашёл не в конроллерах, не ещё где пути к layout... :/

ПС. Нашёл кой чего, но меняет только путь до директории:
$layoutPath public property
string getLayoutPath( )
void setLayoutPath( $path )

The root directory of layout files. Defaults to "$viewPath/layouts".
Всё лучше чем не чего. :/