Надеемся создать плагин Joomla, чтобы разрешить создание пользовательских шаблонов администратора в K2 - PullRequest
0 голосов
/ 05 ноября 2011

Итак, я разобрался, как взломать k2, чтобы использовать несколько шаблонов бэкэнда в зависимости от категории предметов. На самом деле это довольно просто, но требует взлома ядра k2.

В администратор / компоненты / com_k2 / views / item / view.html.php в строке 305, просто следуйте:

$this->assignRef('form', $form);

Я добавил:

jimport('joomla.filesystem.folder');
$componentPath = JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'templates';
$componentFolders = JFolder::folders($componentPath);
$db =& JFactory::getDBO();
$query = "SELECT template FROM #__templates_menu WHERE client_id = 0 AND menuid = 0";
$db->setQuery($query);
$defaultemplate = $db->loadResult();

if (JFolder::exists(JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid)) { 
$this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid); 
    }

Это позволяет мне дублировать папку и содержимое каталога / administrator / components / com_k2 / views / item / tmpl, перемещать его в шаблоны / MY_TEMPLATE / html / com_k2 / admin и переименовывать новую папку с нужным идентификатором категории переопределить.

Это прекрасно работает, и я могу полностью настраивать свои внутренние шаблоны K2 по категориям, делая все намного проще для клиентов и делая K2 намного более похожим на полный CCK.

Итак, я хочу создать устанавливаемый плагин, который в основном вставляет этот код непосредственно перед отображением шаблона администратора. Не знаете, как это сделать, хотя ... есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2011

Это должно быть довольно просто:

  1. Посмотрите, как создать плагин Joomla. Вот Учебник по созданию плагина Joomla
  2. Узнайте больше о поведении плагина, вот документация и события плагина
  3. Введите код: -)

Кроме того, в Joomla есть плагин Sample в /plugins/user/example.php (это не тот плагин, который вам нужен, а хорошая отправная точка). Вы должны создать плагин System , который запускается либо на onAfterDispatch, либо на onAfterRender, вам, возможно, придется поиграть с событиями, чтобы получить его ...

Вот черновик:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );
jimport('joomla.filesystem.folder');

/**
 * K2 Template Overload Plug-in
 *
 * @package     Joomla
 * @subpackage  System
 */
class  plgSystemK2template extends JPlugin
{

    function plgSystemCache(& $subject, $config)
    {
        parent::__construct($subject, $config);
    }

    public function onAfterDispatch()
    {
        //  WHAT IS THE PURPOSE OF THESE 2 VARS??
        $componentPath = JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'templates';
        $componentFolders = JFolder::folders($componentPath);

        //
        $db =& JFactory::getDBO();
        $query = "SELECT template FROM #__templates_menu WHERE client_id = 0 AND menuid = 0";
        $db->setQuery($query);
        $defaultemplate = $db->loadResult();

        if (JFolder::exists(JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid)) { 
            $this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$defaultemplate.DS.'html'.DS.'com_k2'.DS.'templates'.DS.'admin'.DS.$item->catid); 
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...