Como desativar "Adicionar ao carrinho" em produtos específicos e exibir o botão "Visualizar detalhes" na exibição da lista de categorias?

20

Gostaria de saber como desativar o botão Adicionar ao carrinho em alguns produtos específicos e encontrei um guia abandonado sobre como fazer isso, que funcionou, mas estava um pouco incompleto, pois era apenas uma solução nas páginas de visualização do produto, e não na lista de categorias ou nas páginas de grade.

Eu responderei minha própria pergunta aqui em 8 horas (já que preciso esperar 8 horas, pois minha reputação está abaixo de um certo ponto), depois de explicar os primeiros passos, e minha resposta será o 3º passo ausente que eu tinha que descobrir por mim mesmo. Vou tentar facilitar isso:

[Passo 1]

[1]

Crie um atributo que você usará em produtos nos quais não deseja um botão Adicionar ao carrinho. No painel do administrador, vá para ...

Catálogo> Atributos> Gerenciar atributos> Adicionar novo atributo

Nomeie seu atributo como desejar, por exemplo: "No_cart_button"

Com as propriedades:

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

Com Gerenciar etiqueta / opções:

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

Agora salve este atributo.

[2]

Atribua seu novo atributo a um grupo, para que você possa usá-lo. Eu usei "Padrão". Vamos para...

Catalog > Attributes > Manage Attributes Sets > Select Set

Agora salve este conjunto de atributos.

[Passo 2]

Vamos adicionar um código para view.phtml

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

Encontre este bloco 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, agora substitua-o por este bloco 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 se No_cart_button está definido como yes. Se estiver definido como sim, ele emitirá o código, que removerá o botão adicionar ao carrinho e exibirá o texto que diz: "Este produto não está disponível online, entre em contato com o nosso representante se desejar comprá-lo".

Ok, essas duas etapas estão concluídas e remove o item Adicionar ao carrinho na página de visualização do produto.

Mas isso não remove o botão "Adicionar ao carrinho" nas páginas da lista Categoria. Agora, queremos criar um botão "Visualizar detalhes" nas páginas da lista de categorias, em vez do botão "Adicionar ao carrinho".

[EDITAR]

Responda:

Se o kevinkirchner estiver correto, adicionaremos essa lógica ao list.phtml agora. Já garantimos que as configurações de atributo de "Usado na lista de produtos" estejam definidas como 'SIM'.

Está bem,

[Etapa 3]

Vamos fazer isso quando Desativar o carrinho estiver definido como Sim, também desabilitar o botão "Adicionar ao carrinho" nas páginas da lista Categoria.

Vá para list.phtml

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

e pesquise esse arquivo por:

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

Ele deve aparecer 2 vezes neste arquivo.

Logo abaixo desta linha, insira o seguinte 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 {
?>

Logo abaixo do seu código que cria o botão normal 'Adicionar ao carrinho', você verá

<?php
}
?>

logo abaixo, insira outro código com o mesmo código:

<?php
}
?>

Ok, agora faça exatamente as mesmas duas etapas para o outro bloco de código neste arquivo, onde você encontrará

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

Você deve fazer isso duas vezes, porque a primeira vez é no modo de exibição de lista e a segunda é no modo de exibição de grade.

stephen wise
fonte
Este não é o site para 'showcase' ou 'show off'. Perguntas e Respostas de TI. Eu recomendo que esta pergunta "chamada" seja encerrada.
Marius
Ah, eu esperava ajudar as pessoas. Devo excluir ou deixá-lo para que seja pesquisável?
Stephen Wise
@ Marius Eu não acho que isso esteja se 'exibindo', pois o OP precisa trabalhar com representantes suficientes para publicar sua própria resposta. Eu voto para fechar até esse momento e, em seguida, abordarei uma reabertura ou você poderá publicar novamente suas perguntas e respostas.
Philwinkle
Desculpe pessoal, eu deveria aprender melhor as maneiras do Stack Exchange. Também vou aprender com a experiência, obrigado por me ajudar a entender essas coisas.
Stephen Wise

Respostas:

7
  1. Verifique se seu atributo está disponível na página de listagem de produtos, definindo "Usado na lista de produtos" para "Sim" ao editar seu atributo - captura de tela

  2. Adicione sua lógica para template/catalog/product/list.phtmlmostrar o botão Adicionar ao carrinho / Visualizar detalhes

kevnk
fonte
Sim! Vou selecionar sua resposta. Fornecerei detalhes mais específicos em uma edição na minha postagem original.
Stephen Wise