2011-07-01 4 views
2

해당 제품 페이지의 사이드 바에서 제품 리뷰 페이지에 대한 URL을 얻으려고합니다. 이게 그렇게 힘들지는 않을 거란 걸 알지만 .. 그 순간에 나를 패배시키고있다 ..제품 페이지의 사이드 바에 제품 리뷰 페이지 URL 받기

제품 페이지 URL (기본적으로 사이드 바가있는 페이지의 URL)은 볼 수 있지만 리뷰 페이지는 볼 수 없다. .htm 대신 끝에 -reviews.htm과 본질적으로 동일한 URL입니다.

어디서 잘못 되었나요? 어떤 전화를해야합니까?

답변

2

<reference name="right">에 대한 <catalog_product_view translate="label">

봐로 시작하는 부분을 찾을 수 있습니다. 템플릿 제품보기에서 오른쪽 섹션이없는 경우

, 아래의 내용에 하나를 추가하고 입력 :

<reference name="right"> 
    <block type="review/product_view_list" name="product.info.product_additional_data" as="reviews" template="review/product/view/list.phtml"/> 
    </reference> 

를 오프 캐시되어 있는지 확인, 검토하여 제품 페이지 (희망 제품을로드 거기에) 당신은 지금 필요한 것을 가지고 있어야합니다.

사람들이 리뷰를 쉽게 추가 할 수 있도록 제품 페이지에 '리뷰 추가'상자가 있어야합니다. 제대로 작동하지 않는 몇 가지 방법이 있습니다. 그러나 이것은 쉽고 간단한 방법입니다 ...

이전에 가지고 있던 동일한 layout.xml 파일을 열고 catalog_product_view 섹션으로 이동하여 컨텐츠 섹션의 맨 아래로 이동하십시오. 마지막 닫는 </reference> 태그를 찾으십시오. 이제 추가

<block type="review/form" name="product.review.form" as="review_form" template="review/form.phtml"/> 

지금, 프론트 엔드로 이동하여 증명서를 추가하고

바라건대,이 예제를 이해하기 시작할 것 등 방법 멋지고 모든 작품 전체 테마로주의 얼마나 강력하고 Magento 레이아웃 XML 파일이 유용합니다.

가 필요한 새로운 블록이기 때문에 추가

, 당신은 새 템플릿 파일이 필요합니다.

추가 :

app/design/frontend/base/default/template/review/sidebar.phtml

가에 입력 그것은 뭔가 같은 :

<div class="block block-reviews"> 
    <div class="block-title"> 
     <strong><span>Reviews</span></strong> 
    </div> 
    <div class="block-content"> 
    <p><a href="<?php echo $this->getMacGuffin($this->getProductId()) ?>">MacGuffin!</a></p> 
    </div> 
</div> 

편집 app/code/core/Mage/Review/Block/Product/View/List.php 및 클래스 닫는 중괄호 전에 도우미 URL 기능을 추가 : 이제

public function getMacGuffin($id) 
    { return Mage::getUrl('review/product/list', array('id'=> $id)); 
    } 

레이아웃을 정렬하십시오. XML에 추가하십시오. 참조, 바로 블록 또는 참조를 왼쪽으로 어떤 제품 페이지 지시어 :

당신이 CSS를 위해 할 수있는 몇 가지 물건으로 당신에게 좋은 사이드 블록에서 당신이 원하는 링크를 가져옵니다
<block type="review/product_view_list" name="review_sidebar" as="macguffin" template="review/sidebar.phtml"/> 

. 기본 테마로 복사하십시오. list.phtml 템플릿에서 원하는 것을 취할 수 있습니다. 이전에 당신을 가리키며 자신의 코드를 작성하여 리뷰를 요약하거나 리뷰가없는 경우 다른 것을 말하십시오.

+0

? 아니면 그 실수 야? – BigJ

+0

죄송합니다. '보편적 인 권리'를 의미하지 않았습니까? 왼쪽과 오른쪽은 "보편적"이라는 단어가 붙지 않는 한 나에게 똑같습니다. 특히 지시를 따르는 경우에는 ... 어쨌든, 잘 발견되고 올바르게 수정하면 효과가 있음을 약속드립니다. –

+0

불행히도 이것은 단지 사이드 바에서 리뷰를 보여줍니다. 리뷰 페이지에 대한 링크를 생성 할 수 없습니다. – BigJ

1

<?php echo $this->getReviewsUrl() ?>은 어떤 역할을합니까?

그렇지 않으면 항상 제품 URL을 가져 와서 "."에서 분해하고 리뷰를 삽입하고 다시 붙여 넣을 수 있습니다. Magento 설치의 리뷰 URL이 제품 페이지 URL과 매우 다르게 보이므로 업그레이드하는 동안 무언가를 깨뜨릴 수 있으므로 안전하지 않은 솔루션이라고 생각하지 않습니다. (예 : 내 제품 페이지는 domain.com/category/product.htm과 유사하지만 검토 페이지는 domain.com/review/product/list/id/10450/category/281/#review-form)

편집 :

조금 더 깊게 파고 있습니다. 에있는 도우미 템플릿에 $this->getReviewsUrl()이 있습니다. 그 이유는 제품 페이지 자체에서이 방법을 사용할 수없는 이유입니다. 그것은 다른 문맥을 가지고있다.

public function getReviewsUrl() 
    { 
     return Mage::getUrl('review/product/list', array(
     'id'  => $this->getProduct()->getId(), 
     'category' => $this->getProduct()->getCategoryId() 
    )); 
    } 

당신은 당신이 원하는 링크를 생성하는 템플릿이 함수의 내용을 사용할 수 있습니다 app/code/core/Mage/Review/Block/Helper.php에서이 템플릿에 대한 블록 도우미 그래도 답이있다. 당신의 (테마) catalog.xml 파일에서

+0

불행히도 ... 내가 리뷰 한 페이지가 내가 설명한대로이 작업을 수행 할 수 있도록 문자열 조작을했기 때문에 이렇게 할 수 있습니다. Magento를 사용하면 URL 자체를 가져올 수 있습니다. 어떻게 해야할지 모르겠습니다! – BigJ

+0

편집이 작동하지 않습니다. 두렵습니다. 객체가 아닌 객체에 이전 호출 getId가 생성됩니다 ... – BigJ

관련 문제