我正在處理自定義模板,並且我到了必須修改組件的助手源代碼的地步。爲了防止這種情況,我想知道是否有相應的方法來擴展某些組件的具體幫助類與自己的功能,否則重寫它?如何從自定義模板擴展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>";
}
}
}
但它並沒有幫助一點。我認爲我做錯了什麼,任何人都說了些什麼?
謝謝,會試試 – aspirinemaga
你有什麼線索如何鍛鍊那個插件「Class Overrider」? – aspirinemaga
這裏有一些很好的鏈接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