?
Solved

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

Posted on 2014-09-28
2
Medium Priority
?
5,155 Views
Last Modified: 2016-03-02
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
0
Comment
Question by:Th0R
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
2 Comments
 

Accepted Solution

by:
Th0R earned 0 total points
ID: 40351009
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

0
 

Author Closing Comment

by:Th0R
ID: 40351010
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
1

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
Original post  on Monitis Blog. Web performance monitoring is broken into two camps: passive and active. Passive monitoring is defined as looking at real-world historical performance by monitoring actual log-ins, site hits, clicks, requests for …
This video teaches users how to migrate an existing Wordpress website to a new domain.
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to choose which pages of your form are visible to your users based on their inputs. The page rules feature provides you with an opportunity to create if:then statements for y…
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question