Magento Product price is equal to 0 display text - magento

i need to replace or hide add to cart button on product list page if product price is equal to zero '0'.
like here : http://www.lighting-furniture-design.com/luxury-lighting/ceiling-suspensions/deep-sky-2565.html
my demo site is here : http://www.sllv2.lighting-design-led.com/luminaire-de-luxe.html
please help me.
Thanks

You can wrap the following if else around your add to cart button
<?php if ($_product->getFinalPrice() == 0) : ?>
<h2>On demand</h2>
<?php else: ?>
// Your add to cart button here
<?php endif; ?>

If you want to replace the text of botton, when price is zero. copy the file addtocart.phtml in your theme. Change buttonTitle to below. It will check price and accordingly you can change the text.
<?php $buttonTitle = ( ($_product->getFinalPrice() > 0) ?
Mage::helper('core')->quoteEscape($this->__('Add to Cart')) :
"your text" );
?>

Related

How to modify magento product template?

I would like to change the product page template in our magento store. Can you please advice how to insert this tag "/PACK" beside the product price?
See image links: http://www.thebodyshop.ie/price-pack/?___store=default
The second one, at the bottom would be the goal.
Thank you in advance!!!
Copy the price.phtml file from app/design/frontend/base/default/template/catalog/productAnd paste it into your theme_package_folder/template/catalog/product.Approx 201 and 203 lines you can find code to display price and final price in frontend.
<?php echo $_coreHelper->currency($_price, true, true) ?>
<?php echo $_coreHelper->currency($_finalPrice, true, true) ?>
replace it with
<?php echo $_coreHelper->currency($_price, true, true).'/PACK' ?>
<?php echo $_coreHelper->currency($_finalPrice, true, true).'/PACK' ?>
If you want you can even give span to '/pack' and give your css.

Magento Special price validation

Sorry that I'm a total newbie in magento.
I have a multi-vendor magento site where vendors can create product. But when setting product price some users often do some mistakes. Some times special prices are higher than original price. I like to check this mistake. I want a validation script so that when vendors (who have limited admin access) create a new product then they should keep a minimum difference between special price and original price where special price is always lower than original price.
Can any body give some hints?
Thanks
Hope following code will help you
<?php
$product= Mage::getModel('catalog/product')->load(product_id);
$price = $product->getPrice();
$webprice = $product->getwebprice();
$specialprice = $product->getFinalPrice();
if($specialprice==$price)
{?>
<span>$<?php echo number_format($price,2);?></span>
<?php } else if($specialprice<$price) { ?>
<div>
<span>Regular Price:</span>
<span>$ <?php echo number_format($price,2); ?></span>
</div>
<div>
<span>Web Special:</span>
<span>$ <?php echo number_format($specialprice,2); ?> </span>
</div>
<?php } ?>
Even if the user set special prices more than original price,Magento takes cares of it by not displaying that special price .However if you want to do some customization ,the path for price display is :app/design/frontend/default/default/template/catalog/product/price.phtmlIt would be wise if you copy the structure, paste it on your custom theme and continue with your modification.can add your javascript in list.phtml (same product folder).Hope it gives some hint.

How to add products with price as "Contact for Pricing" in magento

I have a Magento site.
I have a number of products to add.
But some have price as "Contact for Pricing" or "Call for Pricing" so cant to add.
Because there has validation for the price.
So how can I add such products?
If there is any module for such products?
I need to display such product's price as "Contact for Pricing" or "Call for Pricing".
if there is an extension for "call for price" download free?
Josh's answer slightly improved. Thanks Josh for the Idea of using attributes!
Create the attribute code 'call_4_price' for this example. Like Josh suggested, make it a Yes/No attribute. Default Value "No". Add it to attribute sets where you'll need to hide prices.
Find all .phtml files where "prices & add to cart buttons" are (template > catalog > product > view.phtml, price.phtml, list.phtml, etc)
Paste this code Before the price code.
<!-- Call For Price - begin -->
<?php $attribute = $_product->getResource()->getAttribute('call_4_price'); ?>
<?php $attribute_value = $attribute ->getFrontend()->getValue($_product); ?>
<?php if ($attribute_value == 'Yes'): ?>
//Please Call for pricing
<?php else: ?>
And this after the add to cart button.
<?php endif; ?>
<!-- Call For Price - end -->
Create an Yes/No attribute for Call For Price. When creating products, put something into the price field just to get past validation.
Now modify your template files to not show the price if it Call For Price is set to 'Yes'.

Magento - Unable to Refresh Product Stock Status on the Product Page

One of our Vendors has a real time inventory system and we would like to implement it into our site. When a person clicks on the product, it should check the inventory and update as necessary. This works ok at best. The problem is when the product switches to in/out of stock. It updates properly in the backend, but I am unable to get the addtocart button to be added/removed. This is my code for updating the stock:
//$_stockQTY is the realtime inventory result
$stockData = Mage::getModel('cataloginventory/stock_item');
$stockData->loadByProduct($_product->getId());
$stockData->setData('qty', $_stockQTY);
$stockData->setData('is_in_stock',($_stockQTY > 0) ? 1 : 0);
if ($stockData->dataHasChangedFor('qty')) {
$stockData->save();
$_product = Mage::getModel('catalog/product')->load($_product->getId());
}
As you can see, I am force reloading the product when qty is changed. This seems to work for everything but the addtocart button. It shows the previous result (In stock or out of stock before the reload.)
I have 2 questions:
Is there a better way to reload a product other than reassigning it as I am doing above:
$_product = Mage::getModel('catalog/product')->load($_product->getId());
And why is it that everything is updating properly, but the addtocart which uses the same
$_product->isSaleable()
call that our availability, etc uses.
Compare:
<?php if($_product->isSaleable()): ?>
<p class="availability in-stock"><img src="<?php echo $this->getSkinUrl('images/stock.png') ?>"> <span><?php echo $this->__('In stock') ?></span>
...
?>
To
<?php if($_product->isSaleable()): ?>
<?php echo $this->getChildHtml('addtocart') ?>
<?php endif; ?>
<?php echo $this->getChildHtml('alert_urls') ?> //Only Shows up if addtocart does not.
Refreshing the page will update the product properly, but doing a meta refresh or anything of the sorts is out of the question. I appreciate any advice that could be given as I would like to get this resolved and on to the next task.
Unless I'm misunderstanding your question, it appears the thorn in your side is the stock status index.
Try this:
Mage::getSingleton('cataloginventory/stock_status')->updateStatus($_product->getId());
(I haven't tested this, but it looks like it ought to work)

Magento Backorder Availability Message

In my Magento store I have it set up to allow backorders on some products. When these items are out of stock they still show as 'In Stock' on the product page but the user gets notified when they visit the cart that the item is on backorder.
I would like to change the product page so it also shows there that the item is on backorder in place of the 'In Stock' text.
In the file template/catalog/product/view/type/simple.phtml (and the same for bundled, configurable, grouped and virtual - you must override them all) there is some code that looks like this:
<?php if($_product->isSaleable()): ?>
<p class="availability in-stock"><?php echo $this->__('Availability:') ?>
<span><?php echo $this->__('In stock') ?></span></p>
My guess is you need to change it a bit like this:
<?php if($_product->isSaleable()): ?>
<p class="availability in-stock"><?php echo $this->__('Availability:') ?>
<span><?php echo $this->__($_product->isInStock() ? 'In stock' : 'On Backorder') ?></span></p>
Do a search of all template files for "availability" to see the various places that might need fixing.
I have found the following solution which worked for me at link below:
Show backorder status on magento frontend
To do this, make sure you have enabled backorders from inventory tab.
If you are on product page then first of all retrieve product qty.
<?php $inventory = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product);
if( (int)$inventory->getQty() == 0 && $inventory->getBackorders() )
{
// No Backorders => getBackorders() = 0
// Allow Qty Below 0 => getBackorders() = 1
// Allow Qty Below 0 and Notify Customer => getBackorders() = 2
echo "display your backordedr message";
}
'?>
You can also put this code in
app\design\frontend\base\default\template\catalog\product\view\type\default.phtml
file where availability message of product come from.

Resources