Мне было интересно, как отключить кнопку «Добавить в корзину» на некоторых конкретных продуктах, и я нашел заброшенное руководство о том, как это сделать, и это сработало, но оно было несколько неполным, поскольку это было всего лишь решение на страницах просмотра продукта, а не на странице списка категорий или сетки.
Я отвечу на свой вопрос здесь через 8 часов (так как мне нужно подождать 8 часов, так как моя репутация ниже определенного уровня), после того, как я объясню первые шаги, и мой ответ будет отсутствующим третьим шагом, который я должен был вычислить для себя. Я постараюсь сделать это простым для подражания:
[Шаг 1]
[1]
Создайте атрибут, который вы будете использовать в продуктах, для которых не требуется кнопка «Добавить в корзину». В панели администратора, перейдите к ...
Каталог> Атрибуты> Управление атрибутами> Добавить новый атрибут
Назовите свой атрибут как хотите, например: «No_cart_button»
Со свойствами:
Attribute Code: No_cart_button
Catalog Input Type for Store Owner: Yes/No
Use in Quick Search: No
Use in Advanced Search: No
Comparable on Front-end: No
Visible on Product View Page on Front-end: No
Used in Product Listing: YES
Used for Sorting in Product Listing: No
С управлением меткой / опциями:
Admin: Disable Add to Cart
English: Disable Add to Cart
Теперь сохраните этот атрибут.
[2]
Присвойте свой новый атрибут группе, чтобы вы могли использовать его. Я использовал «По умолчанию». Перейти к...
Catalog > Attributes > Manage Attributes Sets > Select Set
Теперь сохраните этот набор атрибутов.
[Шаг 2]
Мы добавим немного кода в view.phtml
app/design/frontend/default/theme/template/catalog/product/view.phtml
Найдите этот блок кода:
<?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
//Checks if the "Disable Add to Cart" variable is set to 'Yes':
if(($_product->getAttributeText('No_cart_button')) == "Yes"){
//If set to Yes, tell PHP what to output:
echo "This Product is not available online, please call our representative if you wish to purchase this.";
}
//If set as No, then show the 'add to cart box' as usual.
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
}
?>
Этот код проверяет, установлено ли для No_cart_button значение yes. Если для этого параметра установлено значение «да», он выводит код, который удаляет кнопку «Добавить в корзину» и вместо этого отображает текст с надписью «Этот продукт недоступен в Интернете, пожалуйста, позвоните нашему представителю, если вы хотите приобрести его».
Хорошо, эти 2 шага завершены, и удаляет Добавить в корзину на странице просмотра продукта.
Но это не удаляет кнопку «Добавить в корзину» на страницах списка категорий. Теперь мы хотим сделать кнопку «Подробнее» на страницах списка категорий вместо кнопки «Добавить в корзину».
[РЕДАКТИРОВАТЬ]
Ответ:
kevinkirchner верен, мы добавим эту логику в list.phtml сейчас. Мы уже убедились, что для атрибутов «Использовано в списке товаров» установлено значение «ДА».
В порядке,
[Шаг 3]
Мы сделаем так, когда для параметра «Отключить добавление в корзину» установлено значение «Да», также отключается кнопка «Добавить в корзину» на страницах списка категорий.
Перейти к list.phtml
app/design/frontend/default/theme/template/catalog/product/list.phtml
и найдите в этом файле:
<?php if($_product->isSaleable()): ?>
Он должен появиться в этом файле 2 раза.
Прямо под этой строкой введите следующий код
<?php
if(($_product->getAttributeText('No_cart_button')) == "Yes"){ ?>
<p><button type="button" title="<?php echo $this->__('View Details') ?>" class="button btn-cart" onclick="location.href='<?php echo $_product->getProductUrl() ?>'"><span><span><?php echo $this->__('View Details') ?></span></span></button></p>
<?php
}
else {
?>
Затем прямо под вашим кодом, который создает обычную кнопку «Добавить в корзину», вы увидите
<?php
}
?>
прямо под этим вставьте еще один фрагмент кода:
<?php
}
?>
Хорошо, теперь сделайте те же самые 2 шага к другому блоку кода в этом файле, где вы найдете
<?php if($_product->isSaleable()): ?>
Вы должны сделать это дважды, потому что первый раз для просмотра списка, а второй раз для просмотра таблицы.
источник
Ответы:
Убедитесь, что ваш атрибут доступен на странице со списком товаров, установив «Использовать в списке товаров» на «Да» при редактировании вашего атрибута - скриншот
Добавьте свою логику, чтобы
template/catalog/product/list.phtml
показать кнопку Добавить в корзину / Подробнееисточник