2014-03-26 2 views
0

사용자 정의 템플릿 작업 중이므로 구성 요소의 도우미 소스 코드를 수정해야합니다. 이를 방지하기 위해 자체 기능을 가진 특정 구성 요소의 특정 도우미 클래스를 확장하는 대응 방법이 있는지 궁금한 점이 있습니까?
사용자 정의 템플릿에서 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에 코드의이 부분을 추가했습니다. 내가 뭔가 잘못하고 있다고 생각하는 사람이 누구인가?

답변

1

JED에서 제공되는 플러그인을 쉽게 만들거나 구현 한 플러그인을 구현할 수 있습니다.

+0

감사합니다. 시도해 보겠습니다. – aspirinemaga

+0

플러그인 "클래스 오버라이더"를 연습하는 방법에 대한 단서가 있습니까? – 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