Как повторно использовать код для нескольких доменов?

Я просто создаю структуру 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