3

このようなCSSファイルを含める場所がたくさんあります

$cs->registerScriptFile($cs->getCoreScriptUrl() . '/js/jquery/jquery.cookie.js');

そして、私は一定のバージョンビルドを持っています。これは、コミットするたびに増分します。追加する方法はありますか

?v=VERSION-BUILD

すべてのスクリプト登録のパラメータ、ハードコーディングしない、またはyii libを書き直しませんか?

4

1 に答える 1

4

個人的には、私自身の目的のために、CClientScriptクラスを拡張して、各スクリプトとcssに一意のパラメーターを追加しました。ニーズに合わせて簡単に改善できます。

このコンポーネントのテストされていない単純なバージョンを用意しました。アイデアは、スクリプトファイルがエコーされる前に呼び出されるCClientScriptのrender()メソッドをオーバーライドすることです。

class ClientScript extends CCLientScript
{

public $version=1;

public function render(&$output)
{
    if(!$this->hasScripts)
        return;
    if ($this->version!==false)
    {
        foreach ($this->scriptFiles as $position=>&$scripts)
        {
            foreach ($scripts as &$script)
            {
                $script.="?".$this->version;
            }
        }

        foreach ($this->cssFiles as $position=>&$styles)
        {
            foreach ($styles as &$style)
            {
                $style.="?".$this->version;
            }
        }
    }
    parent::render($output);
}
}

たとえば、このクラスを「components」フォルダに配置します。これで、通常はconfig / main.phpでアプリのパラメーターを構成することにより、CClientScriptの代わりに使用できます。

'clientScript' => array(
    'class' => 'ClientScript',
    'version'=>2,
    //the rest parameters are same as usual. you can set up packages here and so on.
)

jqueryやその他のサードパーティライブラリなどのファイルのバージョン管理をスキップするようにコードを改善できます。これはあなた次第です。

于 2013-01-03T07:18:07.793 に答える