사용자 정의 템플릿 작업 중이므로 구성 요소의 도우미 소스 코드를 수정해야합니다. 이를 방지하기 위해 자체 기능을 가진 특정 구성 요소의 특정 도우미 클래스를 확장하는 대응 방법이 있는지 궁금한 점이 있습니까?
사용자 정의 템플릿에서 Joomla 3의 구성 요소 도우미를 자신의 클래스로 확장하는 방법
<?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>";
}
}
}
그 형태의 내부
<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 코드가 :
내 사용자 지정 템플릿 jmlroot/templates/mytemplate/html/com_hikashop/product/listing_div.php
내에서 재정의 파일을 소개
그리고 나는 그 클래스를 hikashopPaginationHelper
약간 수정 코드 (<spans />
<li/>
로 재배치하여 verride).
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>";
}
}
}
을하지만 조금 도움이되지 않습니다
나는 파일의 biggining에jmlroot/templates/mytemplate/html/com_hikashop/product/listing_div.php
에 코드의이 부분을 추가했습니다. 내가 뭔가 잘못하고 있다고 생각하는 사람이 누구인가?
감사합니다. 시도해 보겠습니다. – aspirinemaga
플러그인 "클래스 오버라이더"를 연습하는 방법에 대한 단서가 있습니까? – 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