2011-11-04 61 views
0

因此,我找到了如何破解k2以允許基於項目類別的多個後端模板。它其實很簡單,但需要在k2核心中進行破解。希望創建Joomla插件以允許K2中的自定義管理模板

在管理員/組件/ com_k2 /視圖/項目/ 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的文件夾和內容,將它移動到templates/MY_TEMPLATE/html/com_k2/admin,並用我想覆蓋的類別id重命名新文件夾。

這很好,我可以完全自定義我的後端K2模板按類別,使一切都更容易爲客戶端,使K2更像一個完整的CCK。

所以我想要做的是創建一個可安裝的插件,基本上插入此代碼之前管理模板呈現。不知道如何去做這個,但...有什麼想法?

謝謝!

回答

0

這應該是非常簡單的:

  1. 研究如何創建的Joomla插件。這裏是Joomla create plug-in tutorial
  2. 瞭解更多關於插件的行爲,這裏是plug-in documentation and events
  3. 編寫代碼:-)

此外,的Joomla在/plugins/user/example.php一個樣本插件(這不是插件,你想,但是一個好的起點)。 您應該創建系統插件被解僱或者在onAfterDispatchonAfterRender,則可能是活動中發揮得到它的權利......

這裏是草稿:

<?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); 
     } 
    } 
}