2014-03-26 50 views
0

我正在處理自定義模板,並且我到了必須修改組件的助手源代碼的地步。爲了防止這種情況,我想知道是否有相應的方法來擴展某些組件的具體幫助類與自己的功能,否則重寫它?如何從自定義模板擴展Joomla 3的組件助手與自己的類

介紹我的自定義模板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>"; 
     } 
    } 
} 

而我需要o使用一點修改後的代碼(通過使用<li/>替代<spans />)來修改該類hikashopPaginationHelper

我想這個代碼部分在文件的biggining加入到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>"; 
     } 
    } 
} 

但它並沒有幫助一點。我認爲我做錯了什麼,任何人都說了些什麼?

回答

1

有一些插件可以更容易地做到這一點,可以在JED上找到,或者您可以實現他們所做的。

+0

謝謝,會試試 – aspirinemaga

+0

你有什麼線索如何鍛鍊那個插件「Class Overrider」? – aspirinemaga

+1

這裏有一些很好的鏈接http://my.safaribooksonline.com/book/web-development/joomla/9780132780841/extending-joomla-with-plugins/ch05lev1sec8爲一般原則和http://digitaldisseny.com/en/博客/ 94-joomla-override-model-view-controller-part-one – Elin

相關問題