3

Yii フレームワークを使用して CMS フレームワークを構築するだけです。CMS を複数のドメインに展開したいと考えています。

/home/root/www/domain1.com
/home/root/www/domain2.com
/home/root/www/domain3.com
/home/root/www/domain4.com

css ファイルと保護されたフォルダー内のすべてのファイルを再利用したいので、css と保護されたフォルダー内のファイルを更新すると、すべてのドメインに変更が反映されます。

4

1 に答える 1

3

はい、Yii はこれをサポートしています。実際、これは私がいくつかのWebサイトを構成した方法です。

(もちろん、これはすべてのサイトが同じサーバー上にあることを前提としています。しかし、Evan はこれを持っているようです。これはサーバー間では機能しません。)

まず、コードを Web ルートからドキュメント ルートに移動する必要があります。ここを参照してください。

次に、Yii AssetsBase を使用する必要があります。あちらこちらご覧ください。アセット管理は構成するのが難しいことがわかりました (ただし、操作は簡単です)。これは私が最終的に得たものです:

components/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
于 2013-02-28T07:29:05.957 に答える