magento удалить добавить в корзину с view.phtml

1

Я выполнил [эти указания] [1] для удаления "добавить в корзину". Я пытаюсь удалить кнопку "Добавить в корзину" для элементов с атрибутом "instore_only", и когда ответ "да", я хочу, чтобы он эховый статический блок, который я сделал для него. Когда я делаю первую часть, кнопка никогда не исчезает. Вот мой код:

//Check if the "Available in store only" variable is set to 'Yes':  
        if(($_product->getAttributeText('instore_only')) == "Yes"){
//If set to Yes, tell PHP what to output:
        echo $this->getLayout()->createBlock('cms/block')->setBlockId('instore_only')->toHtml();
}
//If set to No, then show the 'add to cart box' as normal.
        else {
?>
        <?php if (!$this->hasOptions()):?>
            <div class="add-to-box">
                <?php if($_product->isSaleable()): ?>
                    <?php echo $this->getChildHtml('addtocart') ?>
                    <?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
                        <span class="or"><?php echo $this->__('OR') ?></span>
                    <?php endif; ?>
                <?php endif; ?>
                <?php echo $this->getChildHtml('addto') ?>
            </div>
            <?php echo $this->getChildHtml('extra_buttons') ?>
        <?php elseif (!$_product->isSaleable()): ?>
            <div class="add-to-box">
                <?php echo $this->getChildHtml('addto') ?>
            </div>
        <?php endif; ?>

        <?php if ($_product->getShortDescription()):?>
            <div class="short-description">
                <h2><?php echo $this->__('Quick Overview') ?></h2>
                <div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
            </div>
        <?php endif;?>

        <?php echo $this->getChildHtml('other');?>

        <?php if ($_product->isSaleable() && $this->hasOptions()):?>
            <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
        <?php endif;?>

        <?php
        }
        ?>

Я проверил местоположение правильного view.phtml, используя подсказки шаблона пути на моем интерфейсе.

Итак, короче говоря, этот код выглядит правильно, а если нет, могу ли я вызвать блок cms в view.phtml? Сайт поддерживает небольшой розничный магазин, поэтому некоторые предметы доступны только в магазине, а не для онлайн-покупок.

Мне около 1 недели в magento и код. Я пытаюсь сделать несколько твиков на базовом сайте с помощью базового шаблона.

  • 0
    Имеет ли ваш instore_only продукта instore_only тип ввода каталога Yes/No ?
Теги:
magento
shopping-cart

3 ответа

0
Лучший ответ

Я полагаю, исходя из вашего вопроса, что статический блок никогда не отображается и что кнопка добавления в корзину всегда отображается. Я также предполагаю, что вы установите свой атрибут "Только для Instore" на "Да" на тестируемые продукты, вы создали и включили CMS Static с идентификатором instore_only для текущего хранилища и что вы 'очищен или отключен Magento Cache.

Проверьте конфигурацию атрибута продукта

$_product->getAttributeText('instore_only') вернет текстовое значение для атрибутов, которые имеют тип Dropdown или Multiple select.

Да/Нет тип ввода каталога

Если атрибут вашего продукта настроен с типом ввода каталога " Yes/No ", getAttributeText() не вернет для него значения, поэтому он никогда не будет равен "Да" в вашем тесте, и ваш статический блок никогда не будет отображаться.

Вместо этого вы должны запрашивать значение атрибута напрямую. Тип ввода Yes/No напрямую совместим с булевыми операциями, поэтому вы можете просто проверить значение в инструкции if. Вот так:

if ($_product->getInstoreOnly()) {
  //output your static block
} else {
  //output the add to cart form
}

Тип ввода текстового каталога

Если ваша конфигурация атрибута вводится в качестве типа ввода Text в Text или Text area, вы можете сравнить это:

if ($_product->getInstoreOnly() == "Yes") {
  //output your static block
} else {
  //ouput the add to cart form
}

В этом случае вам нужно вручную ввести " Yes в поле в редакторе продуктов, чтобы сделать эту работу.

Тип входа в раскрывающийся список

Если ваш атрибут настроен как вариант Multiple select Dropdown или Multiple select выбор, к которому вы вручную добавили выбор с именем " Yes, то ваш код выше должен быть правильным.

В списке продуктов должно быть указано Да

Вы также должны убедиться, что атрибут каталога, Used in product listing установлен на Yes, чтобы значение атрибута загружалось на страницу продукта, для вас, Magento.

0

Чтобы скрыть поле qty и кнопку "Добавить в корзину" из view.phtml, вы можете прокомментировать весь код в addtocart.phtml расположенный в template/catalog/product/view/addtocart.phtml

Надеюсь это поможет

0

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

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

Пытаться:

 $_product->getResource()->getAttribute('instore_only')->getFrontend()->getValue($_product);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню