Мені було цікаво, як відключити кнопку "Додати в кошик" на декілька конкретних продуктів, і я знайшов покинутий посібник, як це зробити, але це було дещо неповно, оскільки це було лише рішення на сторінках перегляду продуктів, а не на сторінках списку категорій чи сітки.
Я відповім на власне запитання тут за 8 годин (оскільки мені потрібно почекати 8 годин, оскільки моя репутація нижче певного моменту), після того, як я поясню перші кроки, і моя відповідь буде відсутнім 3-м кроком, який мені довелося зрозуміти для себе. Я спробую зробити це легким для наслідування:
[Крок 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 встановлено так. Якщо встановлено значення "Так", він видає код, який видалить кнопку "Додати в кошик" і замість цього покаже текст, який говорить: "Цей товар недоступний в Інтернеті, будь-ласка, зателефонуйте нашому представнику, якщо Ви бажаєте придбати його".
Гаразд ці два етапи завершено, і видаляється Додати в кошик на сторінці подання продукту.
Але це не видаляє кнопку "Додати в кошик" на сторінках списку категорій. Тепер ми хочемо зробити кнопку «Переглянути деталі» на сторінках списку категорій, а не кнопку «Додати в кошик».
[EDIT]
Відповідь:
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
}
?>
Гаразд, тепер зробіть це саме два кроки до іншого блоку коду цього файлу, де ви знайдете
<?php if($_product->isSaleable()): ?>
Ви повинні зробити це двічі, оскільки перший раз призначений для перегляду списку, а другий раз для перегляду сітки.