Темизация в Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
egorpromo
Сообщения: 113
Зарегистрирован: 2012.11.25, 12:24

Темизация в Yii2

Сообщение egorpromo »

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

Также могу предложить свою идею, как организовать систему файлов в Темах.
Я думаю, что лучше где-нибудь в директории веб-приложения (@app) выделить директорию с именем подобным view_{theme-name}, внутри которой будут размещены файлы с видами и лейаутами. Это удобно, так как а) темизация ограничена только файлами внутри это директории б) можно легко создавать новые темы, а потом их подключать.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

Вроде как готова, но делал её Qiang и я не следил. Как работает не знаю.
rafic
Сообщения: 57
Зарегистрирован: 2013.04.26, 13:19

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

Сообщение 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'
                ],
            ],
        ]
 
То тема не подхватывается. Почему?
Ищу разработчика или команду разработчиков для поддержки проекта.
Детальнее узнай по ссылке https://goo.gl/YU8uTS.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

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

Сообщение lancedevnull »

webroot
web указывает на урл

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

        Yii::setAlias('@webroot', dirname($request->getScriptFile()));
        Yii::setAlias('@web', $request->getBaseUrl());
 
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

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

Сообщение 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
marmura
Сообщения: 1
Зарегистрирован: 2014.06.28, 23:04

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

Сообщение 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
Та же проблема, может кто нибудь нашел решение?
ptm
Сообщения: 5
Зарегистрирован: 2014.06.28, 23:28

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

Сообщение 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';
}
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

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

Сообщение lynicidn »

а теперь отключите тему :)
Аватара пользователя
Vodazar
Сообщения: 77
Зарегистрирован: 2014.02.25, 13:05

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

Сообщение Vodazar »

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

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

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

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

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

Сообщение 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',
],
 
SergV
Сообщения: 192
Зарегистрирован: 2012.07.08, 11:27

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

Сообщение 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".
Всё лучше чем не чего. :/
Ответить