Можно ли пометить плагин? У меня есть мобильная тема для мобильных устройств, и я хотел бы использовать разные файлы представлений для приложений/представлений плагинов. Я пробовал приложение/views/themed/THEME/plugin/... и /app/plugins/PLUGIN/views/themed/THEME/ ... никто, похоже, не работает. Заранее спасибо.CakePHP тематический плагин view
4
A
ответ
4
CakePHP 2.x поддерживает это без необходимости вносить какие-либо изменения коды:
Если вы (можете) преобразовать с помощью CakePHP 2.x, то да, вы можете (автоматически). В представлении пути для темы «MyTheme» и плагин «Права доступа» будет:
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/
)
Так что, если вы имели пользователей/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
для не тематической версии
5
Копирование содержимого вашей темы для: приложения/просмотры/тематического/THEMENAME/плагины/PLUGINNAME/ Создать ThemePluginsView класса на приложении/ЛИЭС/вид/theme_plugins.php
// 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;
}
}
Затем вызовите его на app_controller на beforeFilter() или обычного контроллера на beforeFilter(), как:
function beforeFilter() {
if (!class_exists('ThemePluginsView'))
App::import('Core', 'view/theme_plugins');
$this->view = 'ThemePlugins';
$this->theme = 'THEME_NAME';
}
Надеется, что это помогает
Смежные вопросы
- 1. cakePHP & Twitter Bootstrap - View
- 2. Тематический шаблон
- 3. Тематический фон
- 4. CakePHP: комментарии плагин помощь
- 5. Плагин cakephp-imagine-plugin
- 6. cakephp 2.0 Загрузить плагин
- 7. Media View in cakePHP
- 8. CakePHP 'Missing View'
- 9. CakePHP view not rendering
- 10. CakePHP multi-model view
- 11. CakePHP not caching view
- 12. CakePHP Pagination view Проблемы
- 13. Cakephp view не работает
- 14. Cakephp-missing view error
- 15. CakePHP View Helper
- 16. CakePHP 2.7 Плагин GoogleChart
- 17. CakePHP Плагин Google Analytics
- 18. Плагин управления разрешениями CakePHP
- 19. Cakephp 2.6.2 Комментировать плагин
- 20. CakePHP, создавая расширяемый плагин
- 21. CakePHP 1,3: acl_extras плагин
- 22. Плагин в примере cakePHP
- 23. Большой плагин - CakePHP
- 24. CakePHP 1.3: Видео-плагин
- 25. Как установить плагин CakePHP?
- 26. facebook CakePHP плагин выдает
- 27. cakephp recapthca плагин unset
- 28. Загрузить плагин CakePHP
- 29. CakePHP Плагин для покупок
- 30. Как просмотреть плагин CakePHP