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.
fuente
Respuestas:
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
Agregue su lógica para
template/catalog/product/list.phtml
mostrar el botón Agregar al carrito / Ver detallesfuente