문제

우리 매장의 모든 제품 범주 페이지는 두 개의 열 (NAV 왼쪽) 형식입니다. 당사의 범주 중 하나는 왼쪽 열에 요소가 제거되어야합니다. 이 왼쪽 열이있는 모든 다른 페이지에는이 요소가 있으며 계속해서 그렇게 할 필요가 있지만 이러한 몇 가지 사소한 하위 카테고리를 위해서는이 요소가 필요합니다.

이전 개발자는 요소가 배너에 있고 CMS를 통해 위젯이 있도록 설정했습니다. 그것은 다른 페이지의 톤에 나타나기 위해 설정되어 있습니다 (예 : 카테고리는 모두로 설정됩니다). 새로운 카테고리가 특정 목록에 새 범주를 추가 할 필요가 없으므로 제품 관리자와 Whatnot에 의해

특정 카테고리에서 배너 나 위젯을 제거하는 방법을 찾을 수 없으므로 배너를 정적 블록으로 재생하여 사용자 정의 레이아웃 업데이트를 사용하여 이름으로 제거하려고합니다.

<reference name="left">
<remove name="my_static_block_id"></remove>
</reference> 
.

이것은 작동하지 않습니다!

나는 또한 비표상을 시도했다 :

<action method="unsetChildren"/>
.

왼쪽 열에서 모든 것을 제거 (바람직하지 않음)

이 작업을 수행하는 방법이 있습니까? 어딘가에 나는 보지 못했을 것입니다? 감사합니다.

도움이 되었습니까?

해결책

그래서 위젯이 페이지에 추가되는 방식으로 인해 달성하려는 것은 어렵습니다. 위젯이 저장된 경우 레이아웃이 자동으로 생성되지만 생성 된 이름은 아래 파일에서 생성 된 임의의 해시만이 단순한 이름입니다 .

mage_widget_model_widget_instance :: generateLayoutUpdateXML

$hash = Mage::helper('core')->uniqHash();
$xml .= '<block type="' . $this->getType() . '" name="' . $hash . '"' . $template . '>';
.

이후 나중에 예를 들어 내 대소 문자로 데이터베이스에 저장됩니다. 임의 이름은 9D10A0D6931D18586A907B201633D878이었습니다.

여기에 이미지 설명

아마도 이론적으로 그렇게 할 수있는 것은 아마도 그렇지 않지만 코드를 만지지 않고이 작업을 수행 할 수있는 방법은 데이터베이스 테이블에서 업데이트 레코드에 대한 위젯 검색을 만들 수 있습니다. core_layout_update 새 블록 이름을 가져 와서 수행하십시오. 예를 들어 <remove name="9d10a0d6931d18586a907b201633d878"/>는 위젯을 변경하면 XML 및 이름이 새로 고치고 이름 참조를 다시 한 번 업데이트해야합니다. 비판을 시도했고, XML이 위젯을 위해 처리되는 순서로 인한 것으로 의심되는 것처럼 작동하지 않았습니다.

두 개의 실제 옵션이 있다고 생각합니다 :

1) 왼쪽 열, 오른쪽 열 또는 위젯을 추가하려는 다른 위치에 새 text_list를 추가 한 다음 페이지에서 마베를 제거합니다. 이와 같은 테마로 Local.xml 에서이 작업을 수행 할 수 있습니다.

    <reference name="left">
<block type="core/text_list" name="widgets_left" as="widgets_left" translate="label">
                        <label>Widgets Left</label>
                    </block>
</reference>
.

이렇게하면 이미지와 같이 백엔드에 새 옵션이 추가되거나 WIDGTS_LEFT 이름을 참조로 표시 할 때 너무 위젯 인스턴스를 추가하거나 이름으로 제거 해야하는 경우

예를 들어 여기에 이미지 설명

아래에서 에서 제거 할 특정 카테고리에서 아래에서 수행 할 수 있습니다.

<reference name="left">
<action method="unsetChild"><name>widgets_left</name></action>
</reference>

<remove name="widgets_left"/>
.

2) octionally 아래처럼 XML을 통해 추가 할 수 있었지만 CMS를 통해 가능한 한 많은 통제를 원하는 것처럼 들리므로, 왜냐하면 위젯이 부과되지 않는 것처럼 보입니다. < / P>

<reference name="left">
            <block type="cms/block" name="cms_left_block_name">
                <action method="setBlockId"><block_id>my_block_identifier_from_magento_backend</block_id></action>
            </block>
        </reference>
.

제거 또는 비 선택할 수있는 "cms_left_block_name"으로 참조가 수정됩니다.

다른 팁

닫습니다. 추가 된 블록 이름과 부모의 이름을 알아야합니다.

예를 들어, 다음과 같이 부모 블록 "left"에 추가 된 블록이 추가되었습니다.

<reference name="left">
    <block type="cms/block" name="my_block_name">
         <action method="setBlockId"><block_id>some_static_block_identifier</block_id></action>
    </block>
</reference>
.

는 다음과 같이 제거됩니다.

<reference name="left">
    <action method="unsetChild"><child>my_block_name</child></action>
</reference>
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top