Ресурсы (asset)
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Ресурсы (asset)
Нравится Yii? Давайте сделаем его лучше!.
Re: Ресурсы (asset)
Создал расширение, как опубликовать ресурсы, находятся они у меня в ext.myextension.assets
Нужны сразу все, там 3 папки img, js, css
Неужели нужно каждый файл публиковать по отдельности?
Нужны сразу все, там 3 папки img, js, css
Неужели нужно каждый файл публиковать по отдельности?
Re: Ресурсы (asset)
Код: Выделить всё
$bootstrap_assets_url = Yii::app()->assetManager->publish( Yii::app()->basePath . '/packages/bootstrap/' );
Yii::app()->clientScript->packages['bootstrap'] = array(
'baseUrl' => $bootstrap_assets_url,
'js' => array( YII_DEBUG ? 'js/bootstrap.js' : 'js/bootstrap.min.js' ),
'css' => array( YII_DEBUG ? 'css/bootstrap.css' : 'css/bootstrap.min.css' ),
'depends' => array( 'jquery' )
);
Yii::app()->clientScript->registerPackage( 'bootstrap' );
Re: Ресурсы (asset)
Ни как не могу разобраться с этими ассетами.
Допустим имеем простое приложение(сайт) без модулей, а просто контроллеры, модели и представления. Нужно прикрутить к сайту ресурсы.
1. Первое моё действие - создаю в папке site/protected/extensions папки js, css и загружаю свои скрипты и стили, так?
2. Что я должен делать дальше, чтобы эти ресурсы были опубликованы в папку assets? При первом вызове в коде или где то в админке я должен себе сделать такую кнопочку "Обновить ресурсы"?
3. Так ли я должен использовать ресурсы из папки assets?
4. Правильно ли я понял, что, если я изменяю что то в скриптах и стилях (site/extensions папки js, css), то автоматически не обновляется, а я должен залезть на сервер и руками удалить папку того ассета( site/assets/a876a9d/js и css) куда положены мои js, css?
Пока все вопросы.
Допустим имеем простое приложение(сайт) без модулей, а просто контроллеры, модели и представления. Нужно прикрутить к сайту ресурсы.
1. Первое моё действие - создаю в папке site/protected/extensions папки js, css и загружаю свои скрипты и стили, так?
2. Что я должен делать дальше, чтобы эти ресурсы были опубликованы в папку assets? При первом вызове в коде или где то в админке я должен себе сделать такую кнопочку "Обновить ресурсы"?
3. Так ли я должен использовать ресурсы из папки assets?
Код: Выделить всё
Yii::app()->clientScript->registerScriptFile(
Yii::app()->assetManager->publish(
Yii::getPathOfAlias('ext.js')
).'/main.js',
CClientScript::POS_END
);
Yii::app()->clientScript->registerCssFile(
Yii::app()->assetManager->publish(
Yii::getPathOfAlias('ext.css')
).'/main.css',
CClientScript::POS_END
);
Пока все вопросы.
Последний раз редактировалось andrew68 2013.08.31, 16:10, всего редактировалось 2 раза.
Re: Ресурсы (asset)
Удивительное дело. Стоит раз прописать вопросы на "бумагу" и сразу многое в голове укладывается по полочкам. Все вопросы решены. А особенное помогло в понимании эта статья на хабре http://habrahabr.ru/post/139166/
Для тех кто будет натыкаться на мои вопросы, то сам немнго отвечу.
1. Можно так, а можно в site/protected/assets/.
2. При первом вызове.
3. Если положить ресурсы в site/protected/assets/, то обращаться к ним надо будет так "application.assets" (Yii::app()->assetManager->publish(Yii::getPathOfAlias('application.assets')).'/js/main.js')
4. Всё так.
Для тех кто будет натыкаться на мои вопросы, то сам немнго отвечу.
1. Можно так, а можно в site/protected/assets/.
2. При первом вызове.
3. Если положить ресурсы в site/protected/assets/, то обращаться к ним надо будет так "application.assets" (Yii::app()->assetManager->publish(Yii::getPathOfAlias('application.assets')).'/js/main.js')
4. Всё так.
Re: Ресурсы (asset)
Кстати во многих статьях первый из моих вопросов не освящается, видимо считая это очевидным. Для многих новичков как раз этот момент является камнем предкновения, я так думаю, после которого это перестаёт быть проблемой.
Re: Ресурсы (asset)
возможно ли получить абсолютный URL с доменным именем для опубликованного ресурса?
т.е. http://mysite.local/subdirectory/assets/0sad34/main.css
при условии, что приложение размещено по адресу http://mysite.local/subdirectory ?
т.е. http://mysite.local/subdirectory/assets/0sad34/main.css
при условии, что приложение размещено по адресу http://mysite.local/subdirectory ?
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: Ресурсы (asset)
=)Sam Dark писал(а):Да.
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: Ресурсы (asset)
читайте про абсолютный урл
Re: Ресурсы (asset)
Подскажите, а если есть каталог с продуктами, картинки которого загружаются в админке, то выкладывать картинки на фронтенде можно точно также из ресурса с указанием подкаталога ?
И если на странице продукта в админке отображать загруженные картинки - то лучше их отображать наверно их нужно из 'myExtension/assets' - картинку ведь можно удалить ?
Как лучше сделать и есть ли нюансы?
Код: Выделить всё
$url = Yii::app()->assetManager->publish(
Yii::getPathOfAlias('ext.myExtension.assets').'/producst/image.png'
);
echo CHtml::image($url);
Как лучше сделать и есть ли нюансы?
Re: Ресурсы (asset)
И еще подскажите, если я правильно понял, то каталог app/assets можно и нужно периодически чистить удалив все подкаталоги ?
Re: Ресурсы (asset)
Просмотрел несколько описаний по ассетам и не нашел решения как лучше сделать если подключаемый .css файл имеет картинки с относительными путями.
В лоб решение это рядом с публикованием этого .css файл публиковать и все картинки этого .css файла. Или есть лучшее решение?
В лоб решение это рядом с публикованием этого .css файл публиковать и все картинки этого .css файла. Или есть лучшее решение?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Ресурсы (asset)
Можно чистить, всё перегенрится. А вот нужно ли — это вам решать. С Yii, если не чистить, ничего не случится.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Ресурсы (asset)
Я бы в случае относительных путей публиковал бы сразу директорию целиком.
Нравится Yii? Давайте сделаем его лучше!.
Re: Ресурсы (asset)
А еще подскажите когда публикуются картинки в каталоге "app/assets/" можно ли сохранять структуру подкаталогов?
При вызове метода getPathOfAlias я передаю алиас 'webroot.uploads.tours' а сами картинки как /-tour-52/329174dd820a.jpg
То есть путь каталога с загруженными в админке картинками имее путь 'uploads/tours/-tour-52/329174dd820a.jpg'
Публикуемая картинка имеет вид 'app/assets/1dba04e8/329174dd820a.jpg'.
Мне бы хотелось сохранить публикуемые подкаталоги как было у меня 'app/assets/1dba04e8/uploads/tours/-tour-52/', 'app/assets/1dba04e8/uploads/tours/-tour-51/'...
В доке что читал я таких возможностей не нашел, хотя я и не знаю а нужно ли ? Наверно привычней было бы сохранить публикуемые подкаталоги...
При вызове метода getPathOfAlias я передаю алиас 'webroot.uploads.tours' а сами картинки как /-tour-52/329174dd820a.jpg
То есть путь каталога с загруженными в админке картинками имее путь 'uploads/tours/-tour-52/329174dd820a.jpg'
Публикуемая картинка имеет вид 'app/assets/1dba04e8/329174dd820a.jpg'.
Мне бы хотелось сохранить публикуемые подкаталоги как было у меня 'app/assets/1dba04e8/uploads/tours/-tour-52/', 'app/assets/1dba04e8/uploads/tours/-tour-51/'...
В доке что читал я таких возможностей не нашел, хотя я и не знаю а нужно ли ? Наверно привычней было бы сохранить публикуемые подкаталоги...
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Ресурсы (asset)
При публикации директории структура сохраняется. А вообще я бы загружал картинки сразу в /uploads/tours/, если, конечно, нет необходимости контролировать к ним доступ.
Нравится Yii? Давайте сделаем его лучше!.
Re: Ресурсы (asset)
Какого либо контроля доступа к ним нет
Но как это повлияет на производительность ?
Если в /uploads/tours/ несколько сот подкаталогов и в каждом из них до десятка картинок, то если при обращении к каждому Tour публиковать весь /uploads/tours/,
это займет больше времени. Что происходит при публикации каталога? Насколько я понимаю, сверяются файлы в исходных и опубликованных каталогах и новые или измененные файлы
копируются в опубликованные каталоги ?
И опять таки если подключаемый .css файл имеет картинки с относительными путями в подкаталогах, то как это лучше организовать ?
Получается что все нужно держать в одном каталоге и публиковать полностью каталог ?
И для каждого .css файла с картинками в подкаталогах создавать каталог который целиком и публиковать ?
Сорри, а нет статей в нете где такие вещи описаны ? То что я нашел там публикация файлов по отдельности, и приходится изобретать велосипед...
Но как это повлияет на производительность ?
Если в /uploads/tours/ несколько сот подкаталогов и в каждом из них до десятка картинок, то если при обращении к каждому Tour публиковать весь /uploads/tours/,
это займет больше времени. Что происходит при публикации каталога? Насколько я понимаю, сверяются файлы в исходных и опубликованных каталогах и новые или измененные файлы
копируются в опубликованные каталоги ?
И опять таки если подключаемый .css файл имеет картинки с относительными путями в подкаталогах, то как это лучше организовать ?
Получается что все нужно держать в одном каталоге и публиковать полностью каталог ?
И для каждого .css файла с картинками в подкаталогах создавать каталог который целиком и публиковать ?
Сорри, а нет статей в нете где такие вещи описаны ? То что я нашел там публикация файлов по отдельности, и приходится изобретать велосипед...
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Ресурсы (asset)
Картинки + CSS = однозначно публиковать всю директорию. У вас, я так понял, большинство изображений из CSS всё-таки не используются и контроль доступа не нужен. Я бы сразу загружал их в вебрут и не использовал asset-ы.
Нравится Yii? Давайте сделаем его лучше!.