¿Cómo deshabilitar "Agregar al carrito" en productos específicos y, en su lugar, mostrar el botón "Ver detalles" en la vista de lista de categorías?


20

Me preguntaba cómo deshabilitar el botón Agregar al carrito en algunos productos específicos, y encontré una guía abandonada sobre cómo hacerlo, que funcionó, pero era algo incompleta, ya que solo era una solución en las páginas de vista del producto, y no en la lista de categorías o páginas de cuadrícula.

Contestaré mi propia pregunta aquí en 8 horas (ya que necesito esperar 8 horas, ya que mi reputación está por debajo de cierto punto), después de explicar los primeros pasos, y mi respuesta será el 3er Paso que faltaba. fuera por mi mismo. Trataré de hacer que esto sea fácil de seguir:

[Paso 1]

[1]

Cree un atributo que usará en productos en los que no desea que aparezca el botón Agregar al carrito. En el panel de administración, vaya a ...

Catálogo> Atributos> Administrar atributos> Agregar nuevo atributo

Nombra tu atributo como quieras, por ejemplo: "No_cart_button"

Con las propiedades:

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

Con Administrar etiqueta / Opciones:

Admin: Disable Add to Cart
English: Disable Add to Cart

Ahora guarda este atributo.

[2]

Asigne su nuevo atributo a un grupo, para que pueda usarlo. Usé "Predeterminado". Ir...

Catalog > Attributes > Manage Attributes Sets > Select Set

Ahora guarde este conjunto de atributos.

[Paso 2]

Agregaremos algo de código para ver.phtml

app/design/frontend/default/theme/template/catalog/product/view.phtml

Encuentra este bloque de código:

    <?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; ?>

ok, ahora reemplácelo con este bloque de código:

<?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
}
?>

Este código verifica si No_cart_button está establecido en yes. Si se establece en sí, genera el código, que eliminará el botón de agregar al carrito y, en su lugar, mostrará un texto que dice: "Este producto no está disponible en línea, llame a nuestro representante si desea comprarlo".

Ok, estos 2 pasos están completos y elimina Agregar al carrito en la página de vista del producto.

Pero esto no elimina el botón "Agregar al carrito" en las páginas de la lista de categorías. Ahora, queremos hacer un botón "Ver detalles" en las páginas de la lista de categorías, en lugar del botón "Agregar al carrito".

[EDITAR]

Responder:

kevinkirchner es correcto, agregaremos esta lógica a list.phtml ahora. Ya nos aseguramos de que la configuración de los atributos para "Usado en la lista de productos" esté establecida en 'SÍ'.

Okay,

[Paso 3]

Lo haremos así cuando Deshabilitar Agregar al carrito esté configurado en Sí, también deshabilita el botón "Agregar al carrito" en las páginas de la lista de categorías.

Vaya a list.phtml

app/design/frontend/default/theme/template/catalog/product/list.phtml

y busca en este archivo:

<?php if($_product->isSaleable()): ?>

Debería aparecer 2 veces en este archivo.

Justo debajo de esta línea, inserte el siguiente código

<?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 {
?>

Luego, justo debajo de su código que crea el botón normal 'Agregar al carrito', verá

<?php
}
?>

justo debajo de esto, inserte otro del mismo bit de código:

<?php
}
?>

Ok, ahora haga los mismos 2 pasos exactos al otro bloque de código en este archivo donde encuentre

<?php if($_product->isSaleable()): ?>

Debe hacer esto dos veces, porque la primera vez es para la Vista de lista y la segunda es para la Vista de cuadrícula.


Este no es mi sitio web para 'mostrar' o 'mostrar'. Preguntas y respuestas de TI. Recomiendo que esta "llamada" pregunta se cierre.
Marius

Oh, esperaba ayudar a las personas. ¿Debería eliminar esto o dejarlo para que se pueda buscar?
Stephen sabio

@ Mario No creo que esto esté 'presumiendo', ya que el OP necesita trabajar con suficiente representante para publicar su propia Respuesta. Voto para cerrar hasta ese momento, luego abordaré una reapertura o puede volver a publicar sus preguntas y respuestas.
philwinkle

Lo siento chicos, debería aprender mejor las formas de Stack Exchange. También aprenderé con experiencia, gracias por ayudarme a entender estas cosas.
Stephen sabio

Respuestas:


7
  1. Asegúrese de que su atributo esté disponible en la página de listado de productos estableciendo "Usado en listado de productos" en "Sí" cuando edite su atributo: captura de pantalla

  2. Agregue su lógica para template/catalog/product/list.phtmlmostrar el botón Agregar al carrito / Ver detalles


¡Sí! Voy a seleccionar tu respuesta. Proporcionaré detalles más específicos en una edición en mi publicación original.
Stephen sabio
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.