Як відключити "Додати в кошик" для певних продуктів і замість цього відобразити кнопку "Переглянути деталі" у списку категорій?


20

Мені було цікаво, як відключити кнопку "Додати в кошик" на декілька конкретних продуктів, і я знайшов покинутий посібник, як це зробити, але це було дещо неповно, оскільки це було лише рішення на сторінках перегляду продуктів, а не на сторінках списку категорій чи сітки.

Я відповім на власне запитання тут за 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()): ?>

Ви повинні зробити це двічі, оскільки перший раз призначений для перегляду списку, а другий раз для перегляду сітки.


Це не веб-сайт для "демонстрації" чи "шоу". Питання та відповіді ІТ. Я рекомендую закрити це "так зване" питання.
Маріус

О, я сподівався допомогти людям - чи потрібно замість цього видалити це чи залишити його, щоб його можна було шукати?
Стефан Мудрий

@Marius Я не думаю, що це "показовість" настільки, що ОП потребує розробки достатньої кількості представників, щоб розмістити власну відповідь. Я проголосую за закриття до цього часу, після чого звернуться до повторного відкриття або ви можете повторно розмістити свої запитання та відповіді.
philwinkle

Вибачте, хлопці, я повинен краще вивчити способи обміну стеками. Я також буду вчитися з досвідом, дякую, що допомогли мені зрозуміти ці речі.
Стефан Мудрий

Відповіді:


7
  1. Переконайтеся, що ваш атрибут доступний на сторінці з переліком продуктів, встановивши "Використовується в списку продуктів" на "Так" під час редагування вашого атрибута - скріншот

  2. Додайте логіку, щоб template/catalog/product/list.phtmlвідобразити кнопку Додати в кошик / Переглянути деталі


Так! Я підберу вашу відповідь. Я надам більш конкретні деталі в редакції моєї оригінальної публікації.
Стефан Мудрий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.