Получение URL-адреса страницы отзывов для продукта на боковой панели страницы продукта - PullRequest
2 голосов
/ 01 июля 2011

Я пытаюсь получить URL-адрес страницы отзывов о товарах на боковой панели на этой странице товаров.Я знаю, что это не может быть так сложно, но это побеждает меня в данный момент... который по сути тот же URL с -reviews.htm в конце, а не просто .htm

Куда я иду не так?Какой звонок мне нужно сделать?

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

В вашем файле catalog.xml (вашей темы) найдите раздел, начинающийся с <catalog_product_view translate="label">

Найдите <reference name="right">.

Если в вашем шаблоне нет нужного раздела в продуктепросмотрите, добавьте один нижеприведенный контент и введите:

    <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"/>

Теперь перейдите к началу, добавьте свой отзыв и отметьте, как чудесно все это работает, дополните темой и т. Д.

Надеемся, что с этим примером вы начнетепонять, насколько мощными и полезными являются XML-файлы макетов Magento.

Extra

Поскольку необходим новый блок, вам необходим новый файл шаблона.

Добавить:

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, добавьте к ссылочному левому блоку или справочному праву, что угодно, для директив страницы продукта:

<block type="review/product_view_list" name="review_sidebar" as="macguffin" template="review/sidebar.phtml"/>

Это дает вам нужную ссылку, в хорошем блоке боковой панели с некоторыми вещами, которые вы можете CSS.Скопируйте его в свою основную тему.Вы можете взять то, что вы хотите, из шаблона list.phtml, на который я указывал ранее, и сделать свой собственный код, чтобы суммировать ваши отзывы или сказать что-то еще, если у вас нет отзывов.

1 голос
/ 01 июля 2011

У вас <?php echo $this->getReviewsUrl() ?> работает?

В противном случае вы всегда можете получить URL продукта, как вы сказали, взорвать его на «.», Вставить отзывы и склеить их вместе. Однако я не думаю, что это отказоустойчивое решение, так как URL-адреса обзора на моей установке Magento сильно отличаются от URL-адресов страниц продукта, поэтому вы можете что-то сломать во время обновления. (например, моя страница продукта выглядит как domain.com/category/product.htm, но страница обзора: domain.com/review/product/list/id/10450/category/281/#review-form)

Edit:

Я вырыл немного глубже. Я нашел $this->getReviewsUrl() в шаблоне помощника в app/design/frontend/base/default/template/review/helper/summary.phtml. Это объясняет, почему вы не можете использовать метод на самой странице продукта; у него другой контекст. Помощник по блоку для этого шаблона в app/code/core/Mage/Review/Block/Helper.php имеет ответ:

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

Вы можете использовать содержимое этой функции в своем шаблоне для создания необходимой ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...