2013-05-10 3 views
1

저는 여러분이 도움이 될 수 있기를 희망하는 문제로 고심하고 있습니다.제품의 Magento 기본 탭을 변경하려면?

내 제품 페이지의 기본 제품 탭을 변경해야하지만 백엔드에서 변경할 수는 없으며 다른 속성 만 설정하십시오.

나는 catalog.xml 파일로 범위를 좁혔지만 정확한 코드가 탭을 제어하는 ​​위치를 알지 못합니다.

코드를 약간 변경하려고했지만 효과가 없습니다. 내 Magento 설치도 매우 느려서 나를 미치게합니다.

아이디어가 있으십니까? 사전에

감사합니다 ...

답변

1

코어 파일을 직접 변경하는 대신 로컬 모듈에서 코어 파일을 재정의하는 것이 좋습니다. 다음은/응용 프로그램/코드 내에서/

응용 프로그램을/etc/모듈/MyNameSpace_ModuleName을 만들 모듈을 등록하려면 현지 예를 MyNameSpace_ModuleName에 대한 모듈을 만들고 Mage_Adminhtml_Catalog_Product_Edit_Tabs.php
을 재정의하는 방법을 예입니다 .XML

<?xml version="1.0"?> 
<config> 
    <modules> 
    <MyNameSpace_ModuleName> 
    <codePool>local</codePool> 
    <active>true</active> 
    </MyNameSpace_ModuleName> 
    </modules> 
</config> 

하는 myNameSpace/모듈 이름은/etc/config.xm

<?xml version="1.0" encoding="utf-8"?> 
<config> 
    <modules> 
     <MyNameSpace_ModuleName> 
      <version>0.1.0</version> 
     </MyNameSpace_ModuleName> 
    </modules> 
    <global> 
     <blocks> 
      <adminhtml> 
       <rewrite> 
       <cataolg_product_edit_tabs>MyNameSpace_ModuleName_Block_Adminhtml_catalog_product_edit_tabs</cataolg_product_edit_tabs> 
       </rewrite> 
      </adminhtml> 
     </blocks> 
    </global> 
</config> 

하는 myNameSpace/MODULENAME/차단/Adminhtml/카탈로그/제품/편집/tabs.php

class MyNameSpace_ModuleName_Block_Adminhtml_Catalog_Product_Edit_Tabs extends Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs 
{ 
    protected $_attributeTabBlock = 'adminhtml/catalog_product_edit_tab_attributes'; 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->setId('product_info_tabs'); 
     $this->setDestElementId('product_edit_form'); 
     $this->setTitle(Mage::helper('catalog')->__('Product Information')); 
    } 

    protected function _prepareLayout() 
    { 
     $product = $this->getProduct(); 

     if (!($setId = $product->getAttributeSetId())) { 
      $setId = $this->getRequest()->getParam('set', null); 
     } 

     if ($setId) { 
      $groupCollection = Mage::getResourceModel('eav/entity_attribute_group_collection') 
       ->setAttributeSetFilter($setId) 
       ->setSortOrder() 
       ->load(); 

      foreach ($groupCollection as $group) { 
       $attributes = $product->getAttributes($group->getId(), true); 
       // do not add groups without attributes 

       foreach ($attributes as $key => $attribute) { 
        if(!$attribute->getIsVisible()) { 
         unset($attributes[$key]); 
        } 
       } 

       if (count($attributes)==0) { 
        continue; 
       } 

       $this->addTab('group_'.$group->getId(), array(
        'label'  => Mage::helper('catalog')->__($group->getAttributeGroupName()), 
        'content' => $this->_translateHtml($this->getLayout()->createBlock($this->getAttributeTabBlock(), 
         'adminhtml.catalog.product.edit.tab.attributes')->setGroup($group) 
          ->setGroupAttributes($attributes) 
          ->toHtml()), 
       )); 
      } 

      if (Mage::helper('core')->isModuleEnabled('Mage_CatalogInventory')) { 
       $this->addTab('inventory', array(
        'label'  => Mage::helper('catalog')->__('Inventory'), 
        'content' => $this->_translateHtml($this->getLayout() 
         ->createBlock('adminhtml/catalog_product_edit_tab_inventory')->toHtml()), 
       )); 
      } 

      /** 
      * Don't display website tab for single mode 
      */ 
      if (!Mage::app()->isSingleStoreMode()) { 
       $this->addTab('websites', array(
        'label'  => Mage::helper('catalog')->__('Websites'), 
        'content' => $this->_translateHtml($this->getLayout() 
         ->createBlock('adminhtml/catalog_product_edit_tab_websites')->toHtml()), 
       )); 
      } 

      $this->addTab('categories', array(
       'label'  => Mage::helper('catalog')->__('Categories'), 
       'url'  => $this->getUrl('*/*/categories', array('_current' => true)), 
       'class'  => 'ajax', 
      )); 

      $this->addTab('related', array(
       'label'  => Mage::helper('catalog')->__('Related Products'), 
       'url'  => $this->getUrl('*/*/related', array('_current' => true)), 
       'class'  => 'ajax', 
      )); 

      $this->addTab('upsell', array(
       'label'  => Mage::helper('catalog')->__('Up-sells'), 
       'url'  => $this->getUrl('*/*/upsell', array('_current' => true)), 
       'class'  => 'ajax', 
      )); 

      $this->addTab('crosssell', array(
       'label'  => Mage::helper('catalog')->__('Cross-sells'), 
       'url'  => $this->getUrl('*/*/crosssell', array('_current' => true)), 
       'class'  => 'ajax', 
      )); 

      $storeId = 0; 
      if ($this->getRequest()->getParam('store')) { 
       $storeId = Mage::app()->getStore($this->getRequest()->getParam('store'))->getId(); 
      } 

      $alertPriceAllow = Mage::getStoreConfig('catalog/productalert/allow_price'); 
      $alertStockAllow = Mage::getStoreConfig('catalog/productalert/allow_stock'); 

      if (($alertPriceAllow || $alertStockAllow) && !$product->isGrouped()) { 
       $this->addTab('productalert', array(
        'label'  => Mage::helper('catalog')->__('Product Alerts'), 
        'content' => $this->_translateHtml($this->getLayout() 
         ->createBlock('adminhtml/catalog_product_edit_tab_alerts', 'admin.alerts.products')->toHtml()) 
       )); 
      } 

      if($this->getRequest()->getParam('id', false)) { 
       if (Mage::helper('catalog')->isModuleEnabled('Mage_Review')) { 
        if (Mage::getSingleton('admin/session')->isAllowed('admin/catalog/reviews_ratings')){ 
         $this->addTab('reviews', array(
          'label' => Mage::helper('catalog')->__('Product Reviews'), 
          'url' => $this->getUrl('*/*/reviews', array('_current' => true)), 
          'class' => 'ajax', 
         )); 
        } 
       } 
       if (Mage::helper('catalog')->isModuleEnabled('Mage_Tag')) { 
        if (Mage::getSingleton('admin/session')->isAllowed('admin/catalog/tag')){ 
         $this->addTab('tags', array(
         'label'  => Mage::helper('catalog')->__('Product Tags'), 
         'url' => $this->getUrl('*/*/tagGrid', array('_current' => true)), 
         'class' => 'ajax', 
         )); 

         $this->addTab('customers_tags', array(
          'label'  => Mage::helper('catalog')->__('Customers Tagged Product'), 
          'url' => $this->getUrl('*/*/tagCustomerGrid', array('_current' => true)), 
          'class' => 'ajax', 
         )); 
        } 
       } 

      } 

      /** 
      * Do not change this tab id 
      * @see Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs_Configurable 
      * @see Mage_Bundle_Block_Adminhtml_Catalog_Product_Edit_Tabs 
      */ 
      if (!$product->isGrouped()) { 
       $this->addTab('customer_options', array(
        'label' => Mage::helper('catalog')->__('Custom Options'), 
        'url' => $this->getUrl('*/*/options', array('_current' => true)), 
        'class' => 'ajax', 
       )); 
      } 

     } 
     else { 
      $this->addTab('set', array(
       'label'  => Mage::helper('catalog')->__('Settings'), 
       'content' => $this->_translateHtml($this->getLayout() 
        ->createBlock('adminhtml/catalog_product_edit_tab_settings')->toHtml()), 
       'active' => true 
      )); 
     } 
     return parent::_prepareLayout(); 
    } 
} 

당신은 _preparelayout 내부에 새로운 탭을 추가 할 수 있습니다() 함수 리터. 같은 방법으로 다른 파일을 덮어 쓰고 변경할 수 있습니다.
변경 사항을 올바르게 반영하려면 캐시를 정리해야합니다.

+0

좋은 정보. 나는 그것을 확실히 시험해보고 곧 돌아올 것입니다. –

+0

이제 폴더를 설정했는데 어떻게 그 모듈을 활성화 할 수 있습니까? –

+0

@ RenéHansen : 모듈을 등록하려면/etc/modules/폴더에 xml 파일 MyNameSpace_ModuleName.xml을 만들어야합니다. 귀하의 이해를 위해 나는 코드를 업데이 트하고 있습니다. –

0

이 블록 파일 응용 프로그램 \ 코드 \ 코어에서 탭을 찾을 수 있습니다 \ 마법사 \ Adminhtml \ 블록 \ 카탈로그 \ 제품 \ 편집 \ Tabs.php

당신이 경우 이 탭을 살펴보면 특정 작업을 찾을 수 있습니다.

예를 들어 관련 제품의 경우 URL이 $this->getUrl('*/*/related', array('_current' => true)),이고이 url은 adminhtml_catalog_product_related 액션을 호출하며이 작업은 catalog.xml에 지정되어 있습니다.

<adminhtml_catalog_product_related> 
    <block type="core/text_list" name="root" output="toHtml"> 
     <block type="adminhtml/catalog_product_edit_tab_related" name="catalog.product.edit.tab.related"/> 
     <block type="adminhtml/widget_grid_serializer" name="related_grid_serializer"> 
      <reference name="related_grid_serializer"> 
       <action method="initSerializerBlock"> 
        <grid_block_name>catalog.product.edit.tab.related</grid_block_name> 
        <data_callback>getSelectedRelatedProducts</data_callback> 
        <hidden_input_name>links[related]</hidden_input_name> 
        <reload_param_name>products_related</reload_param_name> 
       </action> 
       <action method="addColumnInputName"> 
        <input_name>position</input_name> 
       </action> 
      </reference> 
     </block> 
    </block> 
</adminhtml_catalog_product_related> 

그래서 쉽게 변경할 항목을 찾을 수 있습니다.

+0

감사합니다. 파일을 찾았습니다. –

관련 문제