Переместить вкладку обзор на странице продукта


Как переместить вкладку "Обзор" на странице продукта?

Код для создания вкладок находится в app/design/frontend/example/shop/template/catalog/product/view.phtml

<div id="tabs" class="product-collateral toggle-content tabs">
        <?php if ($detailedInfoGroup = $this->getChildGroup('detailed_info', 'getChildHtml')):?>
            <dl id="collateral-tabs" class="collateral-tabs">
                <?php foreach ($detailedInfoGroup as $alias => $html):?>
                    <dt class="tab"><span><?php echo $this->escapeHtml($this->getChildData($alias, 'title')) ?></span></dt>
                    <dd class="tab-container">
                        <div class="tab-content"><?php echo $html ?></div>
                    </dd>
                <?php endforeach;?>
            </dl>
        <?php endif; ?>
    </div>

В настоящее время это выглядит так:

enter image description here

Это то, чего я хотел бы достичь:

enter image description here

Author: 7ochem, 2015-07-22

2 answers

Попробуйте сделать так:

Иди к своему theme/layout/review.xml.

Теперь найдите

<catalog_product_view>
        <reference name="product.info">
            <block type="review/product_view_list" name="product.reviews" as="reviews" template="review/product/view/list.phtml" after="additional">
                <action method="addToParentGroup"><group>detailed_info</group></action>
                <action method="setTitle" translate="value"><value>Reviews</value></action>
            </block>
        </reference>
    </catalog_product_view>

И измените <action method="addToParentGroup"><group>detailed_info</group></action> на

<action method="addToParentGroup"><group>review_info</group></action>

Видите, мы просто заменяем detailed_info на review_info.

Затем перейдите к своему theme/template/catalog/view.phtml и добавьте следующий код после этого description кода:

<div class="product-collateral toggle-content tabs">
        <?php if ($review = $this->getChildGroup('review_info', 'getChildHtml')):?>
            <dl id="collateral-tabs" class="collateral-tabs">
                <?php foreach ($review as $alias => $html):?>
                    <dt class="tab"><span><?php echo $this->escapeHtml($this->getChildData($alias, 'title')) ?></span></dt> 
                    <dd class="tab-container">
                        <div class="tab-content"><?php echo $html ?></div>
                    </dd>
                <?php endforeach;?>
            </dl>
        <?php endif; ?>
    </div>

Я не тестировал, но должен работать.

Удачи.

 6
Author: Adarsh Khatri, 2015-07-22 11:19:01

Попробуйте это.

Файл : app\deisign\frontend\<your_package>\<your_theme>\layout\local.xml

<layout>
    <catalog_product_view>
        <remove name="product.reviews" />
    </catalog_product_view>
</layout>

РЕДАКТИРОВАТЬ - 1

Пожалуйста, обратите внимание, что это полностью удалит вкладку "Обзор" со страницы просмотра продукта. Я неправильно истолковал ваш вопрос. Я оставляю этот ответ для понижения голоса. Потому что есть шанс, что произойдет такое же неправильное истолкование, какое у меня было с некоторыми другими. Я не хочу, чтобы это случилось, и все.Спасибо.

РЕДАКТИРОВАТЬ - 2: В соответствии с этим конкретным вопросом

Ответ Адхарша сработает. Вот еще один подход...

Шаг - 1

Файл : app\deisign\frontend\<your_package>\<your_theme>\layout\local.xml

<layout>
    <catalog_product_view>
        <remove name="product.reviews" />
        <reference name="product.info">
            <block type="core/template" name="review_wrapper" as="review_wrapper" template="custom/review/catalog/product/wrapper.phtml">
                <block type="review/product_view_list" name="product.reviews" as="reviews" template="review/product/view/list.phtml"></block>
                <action method="setTitle" translate="value"><value>Reviews</value></action>
            </block>
        </reference>
    </catalog_product_view>
</layout>

Здесь сначала мы удалили весь блок review. Это приведет к удалению блока обзора из раздела вкладок. Затем мы добавили новый блок core/template и повторно объявили в нем блок обзора. Таким образом, блок core/template - это просто оболочка для блока review, который установлен с новым шаблоном wrapper.phtml

Шаг - 2

Файл : app\design\frontend\<your_package>\<your_theme>\template\catalog\product\view.phtml

 <div class="product-collateral toggle-content tabs">
    ....
 </div>

  <!-- calling wrapper block just after the tabs section -->
 <?php echo $this->getChildHtml('review_wrapper') ?>

Здесь мы просто называем наш новый блок обертки внутренним представлением продукта шаблон.

Шаг - 3

Файл : app\design\frontend\<your_package>\<your_theme>\template\custom/review/catalog/product/wrapper.phtml

<div class="product-collateral toggle-content tabs">
        <dl id="collateral-tabs" class="collateral-tabs">
                <dt class="tab">
                    <span><?php echo $this->getTitle() ?></span>
                </dt>
                <dd class="tab-container">
                    <div class="tab-content"><?php echo $this->getChildHtml('reviews') ?></div>
                </dd>
            <?php endforeach;?>
        </dl>
    <?php endif; ?>
</div>

И это все.

Существует множество решений, позволяющих сделать то же самое. Мы тоже можем сделать это программно. Но мне нравится способ компоновки.. это идеально в данном случае.


Примечание 1: не используйте самое первое обновление макета. это неправильно. Ответ кроется во второй правке.

Примечание 2: Не проверял это. Должно сработать

 1
Author: Rajeev K Tomy, 2015-07-22 11:42:47