Как сделать так, чтобы боковая панель корзины отображалась только при оформлении заказа? - PullRequest
0 голосов
/ 08 февраля 2012

Я изменил макет для оформления заказа, чтобы на одностраничном оформлении заказа был правый столбец и содержалась корзина с боковой панелью:

<checkout_onepage_index translate="label">
    <label>One Page Checkout</label>
    <!-- Mage_Checkout -->
    <remove name="left"/>
<update handle="page_two_columns_right" />
    <reference name="right">
        <block type="checkout/cart_sidebar" name="checkout_cart_sidebar" template="checkout/cart/sidebar.phtml"/>
    </reference>
    <reference name="root">…snip

Я бы хотел, чтобы боковая панель появлялась в кассе, даже если она отключена на других страницах через администратора. По сути, мне просто нужно логическое значение для вставки в переопределенный sidebar.phtml:

<?php if ($_someBooleanValue || $this->getIsNeedToDisplaySideBar()):?>

Каков наилучший способ установить значение $ _someBooleanValue равным true, когда блок находится в процессе проверки, и false в противном случае?

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Я смог решить это.Что мне действительно нужно было getNameInLayout() от Mage_Core_Block_Abstract.Так как я управляю макетом xml, с которым я имею дело, я знаю, каким будет имя (в данном случае * checkout_cart_sidebar *), поэтому мне просто нужно было проверить, было ли это имя текущего блока.

<?php if ($this->getNameInLayout() === 'checkout_cart_sidebar'
    || $this->getIsNeedToDisplaySideBar()):?>…snip
1 голос
/ 08 февраля 2012

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

<?php
$currentFile = $_SERVER["PHP_SELF"];
$parts = Explode('/', $currentFile);
$page = $parts[count($parts) - 1];
if($page == "checkoutpage.php")
{
  $_someBooleanValue = true;
}
?>

Вы также можете проверить, есть ли "checkout" в названии страницы.

<?php
$position = strpos($page, "checkout");
if($position == true){$_someBooleanValue = true;};

?>

Однако это всего лишь предложение, но, возможно, это не лучшее решение.

1 голос
/ 08 февраля 2012

Лучший способ - использовать файл local.xml в папке / app / design / frontend / yourtheme / yourskin / layout.Вы можете использовать определенные страницы для добавления / удаления блоков, чтобы переопределить базовые определения.

Вот хороший пример использования файла local.xml:

http://magebase.com/magento-tutorials/5-useful-tricks-for-your-magento-local-xml/

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