Magento 1.9 - add to cart from CMS page with custom options

Steven Debock
Steven Debock used Ask the Experts™
on
Hello Experts

I have a CMS page inside my magento 1.9 setup.
I have a virtual product (ID=17) with a dynamic custom options called "Name" (ID=3)
It has a recurring profile set to 1 year and period_frequency to 1
All i want is for that product to get its option "Name" filled from a variable inside the same .phtml file.
With a button that adds it directly to the shopping cart.

In this CMS page i call a block that links to an phtml page.
{{block type="core/template" name="domainCheck" template="catalog/product/domaincheck.phtml"}}


Using this code in the phtml i cannot add the product because of the required options that are not specified.
This is a virtual product with a recurring profile and 1 custom option called Name

$_product = Mage::getModel('catalog/product')->loadByAttribute('sku',27005);
$buy = Mage::helper('checkout/cart')->getAddUrl($_product);
 ?>
<?php $buttonTitle = $this->__('Add to Cart');?>
<?php if($_product->isSaleable()): ?>
    <div class="add-to-cart">
        <button type="button" title="<?php echo $buttonTitle ?>" id="product-addtocart-button" class="button btn-cart" onclick="parent.location='<?php echo $buy; ?>'"><span><span><?php echo $buttonTitle ?></span></span></button>
        <?php echo $this->getChildHtml('', true, true) ?>
    </div>
<br/>
<?php endif; ?>
<?php echo $buy ?>

Open in new window


$buy outputs the following:
mysite.com/checkout/cart/add/uenc/aHR0cDovL2RiaXRzLmJlL2tlYmFiMi9kb21laW5uYW1lbg,,/product/17/form_key/zigNa5gBINy5wIgl/

I have tried using all kind of query strings, with or without form keys. But nothing seems to be working.

The closest thing i can find on google is this url
magento.stackexchange.com/questions/14718/add-virtual-products-to-cart-with-custom-options-progrmmatically

Also using virtual products with recurring profiles. But with dropdown custom options (mine is a free text field)
So putting the code from the link above i get no result, nothing happens, and no errors are shown.

$proid = 17;

$_product = Mage::getModel('catalog/product')->load($proid);
$_product->setIsRecurring('1');
$_product->setRecurringProfile(array(
    'period_unit' => year,
    'period_frequency' => 1
));

$_product->save();
    $params = array(
        'product' => $proid, // This would be $product->getId()
        'qty' => 1,
);

$cart = Mage::getModel('checkout/cart');
$cart->init();
$cart->addProduct($_product,$params);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

Open in new window


Help will be welcome, as i have no clue on how to continue to achieve what i want.

Kind Regards
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Well in the end this did what i needed

$params_arr = array('product'=>17,'qty'=>1,'options[3]'=> $domain);
$url = 'checkout/cart/add?';
foreach($params_arr as $paramKey => $paramVal) $url_arr[] = $paramKey.'='.$paramVal;
$url .= implode('&',$url_arr);
?>

<form action="<?php echo Mage::getUrl($url) ?>" method="post">
<input type="hidden" name="product" value="1" />
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />

<fieldset class="add-to-cart-box">
<input type="submit" title="<?php echo $this->__('Add to Cart') ?>" class="addtocart" /> 
</fieldset>
</form>

Open in new window

Author

Commented:
Just pasted the code in my phtml file and i can now add custom products directly to the cart in magento 1.9 from a CMS page

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial