4

プラグインのビューにテーマを設定することは可能ですか?モバイルデバイス用のモバイルテーマがあり、プラグインアプリ/ビューにも別のビューファイルを使用したいと思います。app / views / themed / THEME / plugin/...と/app/ plugins / PLUGIN / views / themed / THEME/...を試しましたがどれも機能しないようです。前もって感謝します。

4

2 に答える 2

5

テーマのコンテンツを次の場所にコピーします: app / views / themed / THEMENAME / plugins / PLUGINNAME / app / libs / view/theme_plugins.phpにThemePluginsViewクラスを 作成します

// app/libs/view/theme_plugins.php
if (!class_exists('ThemeView'))
    App::import('Core', 'view/theme');

class ThemePluginsView extends ThemeView {

    function __construct(&$controller, $register = true) {
        parent::__construct($controller, $register);
    }

    function _paths($plugin = null, $cached = true) {
        $paths = parent::_paths($plugin, $cached);
        if (!is_string($plugin) || empty($plugin) || empty($this->theme))
            return $paths;
        // add app/plugins/PLUGIN/views/themed/THEME path 
        $dirPath = APP . 'plugins' . DS . $plugin . DS . 'views' . DS . 'themed' . DS . $this->theme . DS;
        if (is_dir($dirPath))
            $paths = array_merge(array($dirPath), $paths);
        return $paths;
    }
}

次に、beforeFilter()のapp_controllerまたはbeforeFilter()の通常のコントローラーで次のように呼び出します。

function beforeFilter() {
  if (!class_exists('ThemePluginsView'))
    App::import('Core', 'view/theme_plugins');
  $this->view = 'ThemePlugins';
  $this->theme = 'THEME_NAME';
}

それが役に立てば幸い

于 2012-05-15T05:05:02.423 に答える
4

Cakephp 2.xは、コードを変更することなくこれをサポートします。

あなたがcakephp2.xを使用するように(できる)変換するなら、そうです(自動的に)できます。テーマ「mytheme」とプラグイン「Permissions」のビューパスは次のようになります。

Array
(
    [0] => /var/vhosts/Project/htdocs/app/View/Themed/Mytheme/Plugin/Permissions/
    [1] => /var/vhosts/Project/htdocs/app/View/Themed/Mytheme/
    [2] => /var/vhosts/Project/htdocs/app/View/Plugin/Permissions/
    [3] => /var/vhosts/Project/htdocs/app/Plugin/Permissions/View/
    [4] => /var/vhosts/Project/htdocs/app/View/
    [5] => /var/vhosts/Project/htdocs/lib/Cake/View/
    [6] => /var/vhosts/Project/htdocs/lib/Cake/Console/Templates/skel/View/
)

したがって、プラグインにUsers / index.ctpがあり、それをオーバーライドしたい場合は、次のように編集します。

/var/vhosts/Project/htdocs/app/View/Themed/Mytheme/Plugin/Permissions/Users/index.ctp

テーマバージョンの場合または:

/var/vhosts/Project/htdocs/app/View/Plugin/Permissions/Users/index.ctp

テーマのないバージョンの場合

于 2013-06-22T09:27:03.280 に答える