Я просто создаю структуру CMS, используя структуру Yii. Я хочу развернуть CMS для нескольких доменов.
/home/root/www/domain1.com /home/root/www/domain2.com /home/root/www/domain3.com /home/root/www/domain4.com
Я хочу повторно использовать файлы css и все файлы в защищенной папке, так что, как только я обновляю css и файлы в защищенной папке, все домены должны отражать это изменение.
Да, Yii поддерживает это. Фактически, именно так я настроил несколько веб-сайтов.
(Конечно, это связано с тем, что все ваши сайты на одном сервере. Но я вижу, что у Эвана это. Это не работает на всех серверах.)
Во-первых , это потребует, чтобы вы переместили свой код из корневого каталога и в корень документа. См. Здесь .
Во-вторых , это требует использования Yii AssetsBase. Смотрите здесь и там . Я нашел управление активами медведем для настройки (но легкий бриз для работы). Это то, с чем я столкнулся:
В состав компонентов / Controller.php входят следующие:
/** * @var registers which js, css, images have been published * See: http://www.yiiframework.com/wiki/311/assetmanager-clearing-browser-s-cache-on-site- update/ */ private $_assetsBase; public function getAssetsBase() { if ($this->_assetsBase === null) { Yii::app()->assetManager->newDirMode = 0755; Yii::app()->assetManager->newFileMode = 0644; $this->_assetsBase = Yii::app()->assetManager->publish( Yii::getPathOfAlias('application.assets'), false, -1, defined('YII_DEBUG') && YII_DEBUG ); } return $this->_assetsBase; }
Вышеизложенное предполагает, что ваши JS, CSS и изображения расположены следующим образом:
protected/assets/js/mobiscroll-2.3.custom.min.js protected/assets/css/mobiscroll-2.3.custom.min.css protected/assets/img/einstein.png
Затем в ваших взглядах позвоните в свои активы следующим образом:
<?php $cs->registerScriptFile($this->assetsBase.'/js/mobiscroll-2.3.1/js/mobiscroll-2.3.custom.min.js'); $cs->registerCssFile($this->assetsBase.'/js/mobiscroll-2.3.1/css/mobiscroll-2.3.custom.min.css'); ?> <img src="<?php echo $this->assetsBase ?>/img/einstein.png">
Наконец, после внесения изменений в JS или CSS, вы захотите принудительно обновить кеш во всех браузерах пользователей. Вы делаете это, прикоснувшись к каталогу (оригинал) активов. Это заставит Yii перефразировать каталог (опубликованных) активов. Впоследствии ваш JS & CSS будет обновлен во всех браузерах пользователей. Сделайте что-то вроде этого:
$command = 'touch /path/to/your/website/protected/assets'; exec ( $command.' 2>&1', $output , $result ); if ($result === 0) { $message = 'Assets have been pointed; a new directory should now be hashed'; } else { $message = 'Looks like something went wrong. Assets not pointed?'; } // END if