2011-01-17 2 views
1

Magento 1.4.1.1 또는 1.5.0.0을 사용하고 특정 카테고리와 관련된 제품을 사용하려면 정적 블록을 단일보기에서 제품 설명.magento template xml : 특정 카테고리의 모든 제품에 대한 제품 설명에 정적 블록 추가

정적 블록 (측정 이미지)을 만들고 local.xml에 간단한 추가 코드를 추가 할 수 있습니다. 그러나, 특정 범주에만의 제품에 추가의 응용 프로그램을 제한하는 방법을 알아낼 수 없습니다.

EG는 (물론 신발 카테고리에서) 모든 신발 제품 단일 뷰 페이지가 신발 사이즈 측정 이미지를 표시해야 치마의 크기를 측정 이미지 등

내가 정말 그렇게 가고 싶지 않아 치마 템플릿을 오버라이드하는 것만으로 ... 블록을 추가하고 싶습니다!

답변

2

cms/block에 속하는 사용자 정의 블록 유형 (Somemodule_Categorical_Cms_Block이라고 부르거나 절규없는 이름을 지정할 수 있음)을 만듭니다. 자신의 isEnabledForCategory 확인 할 수있는 범주를 구현

protected function _toHtml() 
{ 
    if(!$this->isEnabledForCategory()) { 
     return ""; 
    } 
    return parent::_toHtml(); 
} 

: 그 블록 클래스에서이 같은 것을 구현한다. 새 블록 클래스를 호출하도록 local.xml 선언을 변경하면 go로 설정해야합니다.

희망 하시겠습니까?

덕분에, 조

+0

이것은 내가 생각하고있는 것이 아니지만 나의 모든 목적을 훌륭하게 성취 할 것입니다. 감사! –

+0

아래 템플릿 변경이 더 좋은 대답이라고 생각하는 이유가 궁금합니다. 나는 여러분이 layout.xml과 추가 블록에 모든 것을 유지할 수 있다는 것을 제외하고는 거의 동일하다고 생각합니다. 제가 말할 수있는 한, 모듈화 된 템플릿 시스템에 대한 magento의 아이디어에서 훨씬 강력합니다. –

+0

일반적으로 블록을 무시하는 것에 신경 쓰는 경향이 있습니다. 그러나 기술적으로 완전히 무시할 수는 있습니다. 그것은 아마도 당신이 여기에 얼마나 많은 사용자 정의에 따라 더 미묘한 문제 일 것입니다 ... –

2

당신이 제품은 하나 개의 범주에 속하는 가정 할 경우에만 다음과 같이 템플릿 파일에서 확인하실 수 있습니다 : 당신이 관리자에 입력 한 텍스트가 너무 관리 할 제공하기 때문에

$product = Mage::registry('current_product'); 
$category = $product->getCategory(); // get first category only 
if ($category->getUrlKey() == 'shoes'): 
    // Output show size measurements 
elseif ($category->getUrlKey() == 'skirts'): 
    // Output skirt measurements 
endif; 

가 여기에 내가 getUrlKey을 사용했다.

더 정교한 방법은 각 제품의 "디자인"탭에서 "사용자 지정 레이아웃 업데이트"필드를 사용하여 XML을 직접 입력하는 것이지만 더 많은 작업입니다.

+0

는, 그것은 CMS 블록의를 그래서 거기에있다. 여기에 템플릿이 없습니다. 그러나 템플릿이 맞다면 블록을 재정의하는 것보다 훨씬 좋은 대답입니다. –

+0

정확합니다, CMS 블록이 의도되었습니다. 그러나 "정적"은 테마 파일과 같이 변경되지 않는 내용으로 읽었지 만 관리되는 내용은 동적 인 것으로 간주되지만 데이터베이스를 읽는 것에 따라 달라지며 예상치 못한 경우 변경할 수 있습니다. 그리고 다시, 그것은 단지 나의 이상한 인식입니다. – clockworkgeek

+0

magento는 ... 그냥 말하지만, 온화한 말로, 나는 magento를별로 좋아하지 않습니다. 템플리 팅 시스템은 너무 복잡하여 사용할 수 없게됩니다. 어쨌든 템플릿 시스템 xml에서 javascript와 유사한 추가 작업을 수행 할 수있는 방법이 있습니다. 그것이 실제로 실행되면 그것은 실제로 시원한 아이디어입니다. 제 질문은 "카테고리 [x]의 제품에만 추가로 말할 수있는 방법은 무엇입니까?" 나는 이것을 할 수있는 방법이 있다고 생각하지만 위의 대답은 기본적으로 "실제 템플릿 파일을 덮어 써야합니다"라고 말하면서 매 4 개월마다 더 나쁜 업데이트 시나리오를 의미합니다. –

0

나는 그런 일을 할 필요가 그리고 난이 함께했다 : 내 테마 사용으로
1- "category1_size_guide"한
2라는 정적 블록을 만들 :
"\ 응용 프로그램 \ 디자인 \ 프론트 엔드 \ theme_designer \ THEME_NAME \ 템플릿 \ 페이지 2columns-right.phtml는 \"디스플레이 제품에 대한
, 나는이 코드를 추가 : 제가 질문을 읽으면서

$product = Mage::registry('current_product'); 
$catIds = ($product)?$product->getCategoryIds():array(); //print_r($catIds); 
if(in_array(60, $catIds)){ //60 is category id you want to check 
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('category1_size_guide')->toHTML(); 
} 
관련 문제