Страница 1 из 2
Ресурсы (asset)
Добавлено: 2010.07.21, 19:28
samdark
Re: Ресурсы (asset)
Добавлено: 2013.07.12, 15:14
Tpona
Создал расширение, как опубликовать ресурсы, находятся они у меня в ext.myextension.assets
Нужны сразу все, там 3 папки img, js, css
Неужели нужно каждый файл публиковать по отдельности?
Re: Ресурсы (asset)
Добавлено: 2013.07.12, 17:51
zelenin
Код: Выделить всё
$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)
Добавлено: 2013.08.31, 15:31
andrew68
Ни как не могу разобраться с этими ассетами.
Допустим имеем простое приложение(сайт) без модулей, а просто контроллеры, модели и представления. Нужно прикрутить к сайту ресурсы.
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
);
4. Правильно ли я понял, что, если я изменяю что то в скриптах и стилях (site/extensions папки js, css), то автоматически не обновляется, а я должен залезть на сервер и руками удалить папку того ассета( site/assets/a876a9d/js и css) куда положены мои js, css?
Пока все вопросы.
Re: Ресурсы (asset)
Добавлено: 2013.08.31, 16:09
andrew68
Удивительное дело. Стоит раз прописать вопросы на "бумагу" и сразу многое в голове укладывается по полочкам. Все вопросы решены. А особенное помогло в понимании эта статья на хабре
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. Всё так.
Re: Ресурсы (asset)
Добавлено: 2013.08.31, 16:13
andrew68
Кстати во многих статьях первый из моих вопросов не освящается, видимо считая это очевидным. Для многих новичков как раз этот момент является камнем предкновения, я так думаю, после которого это перестаёт быть проблемой.
Re: Ресурсы (asset)
Добавлено: 2014.02.06, 19:47
resource
возможно ли получить абсолютный URL с доменным именем для опубликованного ресурса?
т.е.
http://mysite.local/subdirectory/assets/0sad34/main.css
при условии, что приложение размещено по адресу
http://mysite.local/subdirectory ?
Re: Ресурсы (asset)
Добавлено: 2014.02.07, 00:20
samdark
Да.
Re: Ресурсы (asset)
Добавлено: 2014.02.07, 22:48
lancedevnull
Re: Ресурсы (asset)
Добавлено: 2014.02.07, 22:49
lancedevnull
читайте про абсолютный урл
Re: Ресурсы (asset)
Добавлено: 2014.08.13, 09:48
mstdmstd
Подскажите, а если есть каталог с продуктами, картинки которого загружаются в админке, то выкладывать картинки на фронтенде можно точно также из ресурса с указанием подкаталога ?
Код: Выделить всё
$url = Yii::app()->assetManager->publish(
Yii::getPathOfAlias('ext.myExtension.assets').'/producst/image.png'
);
echo CHtml::image($url);
И если на странице продукта в админке отображать загруженные картинки - то лучше их отображать наверно их нужно из 'myExtension/assets' - картинку ведь можно удалить ?
Как лучше сделать и есть ли нюансы?
Re: Ресурсы (asset)
Добавлено: 2014.08.13, 11:53
samdark
Да, можно и так же.
Re: Ресурсы (asset)
Добавлено: 2014.08.14, 08:23
mstdmstd
И еще подскажите, если я правильно понял, то каталог app/assets можно и нужно периодически чистить удалив все подкаталоги ?
Re: Ресурсы (asset)
Добавлено: 2014.08.14, 09:49
mstdmstd
Просмотрел несколько описаний по ассетам и не нашел решения как лучше сделать если подключаемый .css файл имеет картинки с относительными путями.
В лоб решение это рядом с публикованием этого .css файл публиковать и все картинки этого .css файла. Или есть лучшее решение?
Re: Ресурсы (asset)
Добавлено: 2014.08.14, 13:21
samdark
Можно чистить, всё перегенрится. А вот нужно ли — это вам решать. С Yii, если не чистить, ничего не случится.
Re: Ресурсы (asset)
Добавлено: 2014.08.14, 13:22
samdark
Я бы в случае относительных путей публиковал бы сразу директорию целиком.
Re: Ресурсы (asset)
Добавлено: 2014.08.16, 11:16
mstdmstd
А еще подскажите когда публикуются картинки в каталоге "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/'...
В доке что читал я таких возможностей не нашел, хотя я и не знаю а нужно ли ? Наверно привычней было бы сохранить публикуемые подкаталоги...
Re: Ресурсы (asset)
Добавлено: 2014.08.16, 15:12
samdark
При публикации директории структура сохраняется. А вообще я бы загружал картинки сразу в /uploads/tours/, если, конечно, нет необходимости контролировать к ним доступ.
Re: Ресурсы (asset)
Добавлено: 2014.08.18, 08:28
mstdmstd
Какого либо контроля доступа к ним нет
Но как это повлияет на производительность ?
Если в /uploads/tours/ несколько сот подкаталогов и в каждом из них до десятка картинок, то если при обращении к каждому Tour публиковать весь /uploads/tours/,
это займет больше времени. Что происходит при публикации каталога? Насколько я понимаю, сверяются файлы в исходных и опубликованных каталогах и новые или измененные файлы
копируются в опубликованные каталоги ?
И опять таки если подключаемый .css файл имеет картинки с относительными путями в подкаталогах, то как это лучше организовать ?
Получается что все нужно держать в одном каталоге и публиковать полностью каталог ?
И для каждого .css файла с картинками в подкаталогах создавать каталог который целиком и публиковать ?
Сорри, а нет статей в нете где такие вещи описаны ? То что я нашел там публикация файлов по отдельности, и приходится изобретать велосипед...
Re: Ресурсы (asset)
Добавлено: 2014.08.18, 11:47
samdark
Картинки + CSS = однозначно публиковать всю директорию. У вас, я так понял, большинство изображений из CSS всё-таки не используются и контроль доступа не нужен. Я бы сразу загружал их в вебрут и не использовал asset-ы.