簡體   English   中英

希望創建Joomla插件以允許在K2中使用自定義管理模板

[英]Hoping to create Joomla plugin to allow for custom admin templates in K2

因此,我已經找到了如何根據項目類別對k2進行破解以允許使用多個后端模板。 它實際上非常簡單,但是需要在k2內核中進行破解。

在第305行的administrator / components / com_k2 / views / item / view.html.php中,如下所示:

$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。

所以我想做的是創建一個可安裝的插件,該插件基本上在呈現管理模板之前插入此代碼。 不確定如何解決這個問題...有什么想法嗎?

謝謝!

這應該很簡單:

  1. 研究如何創建Joomla插件。 這是Joomla創建插件教程
  2. 了解有關插件行為的更多信息,這是插件文檔和事件
  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); 
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM