簡體   English   中英

如何使用自定義模板中的自有類擴展Joomla 3組件的幫助程序

[英]How to extend Joomla 3's component's helper with own class from custom template

我正在研究一個自定義模板,而我不得不修改組件的幫助程序源代碼。 為了防止這種情況,我想知道是否有相應的方法來使用自己的功能擴展某些組件的特定幫助器類,或者重寫它?

在我的自定義模板jmlroot/templates/mytemplate/html/com_hikashop/product/listing_div.php引入替代文件:

<form action="<?php echo hikashop_currentURL(); ?>" method="post" name="adminForm_<?php echo $this->params->get('main_div_name').$this->category_selected;?>_bottom">
    <div class="hikashop_products_pagination hikashop_products_pagination_bottom">
    <?php echo $this->pagination->getListFooter($this->params->get('limit')); ?>
    <span class="hikashop_results_counter"><?php echo $this->pagination->getResultsCounter(); ?></span>
    </div>
    <input type="hidden" name="filter_order_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->value; ?>" />
    <input type="hidden" name="filter_order_Dir_<?php echo $this->params->get('main_div_name').$this->category_selected;?>" value="<?php echo $this->pageInfo->filter->order->dir; ?>" />
    <?php echo JHTML::_( 'form.token' ); ?>
</form>

在該表格內有一個PHP代碼:

<?php echo $this->pagination->getListFooter($this->params->get('limit')); ?>

從幫助文件jmlroot/administrator/components/com_hikashop/helpers/pagination.php

class hikashopPaginationHelper extends hikashopBridgePaginationHelper{
    function _item_active(JPaginationObject $item){
        $class = 'pagenav';
        $specials = array('start','end','previous','next');
        foreach($specials as $special){
            if(!empty($item->$special)){
                $class.=' hikashop_'.$special.'_link';
            }
        }
        if($item->base>0)
            return "<a class=\"".$class."\" title=\"".$item->text."\" onclick=\"javascript: document.adminForm".$this->hikaSuffix.$this->form.".limitstart".$this->hikaSuffix.".value=".$item->base."; document.adminForm".$this->hikaSuffix.$this->form.".submit();return false;\">".$item->text."</a>";
        else
            return "<a class=\"".$class."\" title=\"".$item->text."\" onclick=\"javascript: document.adminForm".$this->hikaSuffix.$this->form.".limitstart".$this->hikaSuffix.".value=0; document.adminForm".$this->hikaSuffix.$this->form.".submit();return false;\">".$item->text."</a>";
    }
    function _item_inactive(JPaginationObject $item){
        $mainframe = JFactory::getApplication();
        if ($mainframe->isAdmin()) {
            return "<span>".$item->text."</span>";
        } else {
            $class = 'pagenav';
            if(!is_numeric($item->text)){
                $class .= ' pagenav_text';
            }
            return '<span class="'.$class.'">'.$item->text."</span>";
        }
    }
}

而且我需要用一些修改后的代碼(通過將<spans />替換為<li/>來覆蓋hikashopPaginationHelper類。

我試圖在文件的jmlroot/templates/mytemplate/html/com_hikashop/product/listing_div.php將這部分代碼添加到jmlroot/templates/mytemplate/html/com_hikashop/product/listing_div.php中:

jimport('joomla.application.component.controller');
jimport('joomla.html.pagination');

require_once JPATH_ADMINISTRATOR . '/components/com_hikashop/helpers/pagination.php';

class MY_hikashopPaginationHelper extends hikashopBridgePaginationHelper{
    function _item_active(JPaginationObject $item){
        $class = 'pagenav';
        $specials = array('start','end','previous','next');
        foreach($specials as $special){
            if(!empty($item->$special)){
                $class.=' hikashop_'.$special.'_link';
            }
        }
        if($item->base>0)
            return "<li><a class=\"".$class."\" title=\"".$item->text."\" onclick=\"javascript: document.adminForm".$this->hikaSuffix.$this->form.".limitstart".$this->hikaSuffix.".value=".$item->base."; document.adminForm".$this->hikaSuffix.$this->form.".submit();return false;\">".$item->text."</a></li>";
        else
            return "<li><a class=\"".$class."\" title=\"".$item->text."\" onclick=\"javascript: document.adminForm".$this->hikaSuffix.$this->form.".limitstart".$this->hikaSuffix.".value=0; document.adminForm".$this->hikaSuffix.$this->form.".submit();return false;\">".$item->text."</a></li>";
    }
    function _item_inactive(JPaginationObject $item){
        $mainframe = JFactory::getApplication();
        if ($mainframe->isAdmin()) {
            return "<li>".$item->text."</li>";
        } else {
            $class = 'pagenav';
            if(!is_numeric($item->text)){
                $class .= ' pagenav_text';
            }
            return '<li class="'.$class.'">'.$item->text."</li>";
        }
    }
}

但這並沒有幫助。 我認為我做錯了什么,有人評論過嗎?

JED上提供了一些可簡化此操作的插件,或者您可以實現它們的功能。

暫無
暫無

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

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