2010-04-13 17 views
11

Bir e-Kitap sitesi oluşturmak için Magento kullanıyorum. Serbest bırakılması için, bir dizi ücretsiz indirilebilir kitap almayı planlıyoruz. Altında bulunan ürünlerle kategori eklemek için normal Magento 'kataloğu' işlevinin kullanılmasının mümkün olacağını umuyorduk. Ancak, bunlar ücretsiz indirilebilir ürünler olduğundan, indirmeye çalışırken kullanıcıları ödeme yapmak gerçekten mantıklı değildir.Bir ürün için Magento'da satın alma atlayın

Herkes, ödeme işlemini tamamen iptal eden ücretsiz indirilebilir bir ürün oluşturmanın bir yolunu biliyor mu? İndirilebilir ürünler için 'ücretsiz örnek' seçeneği olduğunu fark ettim, ancak ücretli ürünler eklediğimde bu alanı planlanan amaç için kullanmayı planlayabilirsem bunu kullanmamayı tercih ederim.

[EDIT] Bazılarınızın 'soru netliği eksikliği' için bu soruya oy verdiklerini fark ettim. Anlaşılır olması için, ben istiyorum:

  1. bilmek o (ücretsiz olduğundan) olağan ödeme sürecinden geçmesi kullanıcılara gerektirmez Magento indirilebilir bir ürün
  2. oluşturmak mümkün olup olmadığını
  3. ve indirilebilir bir ürün

ait 'Ücretsiz Örnek' alanı değil Ne yazık ki ben buna daha fazla ikna edici sorabilirsiniz sanmıyorum. [/ EDIT]

+0

Tahminimce, insanlar bu başlığı beğenmeyebilirler. Biraz spam gibi geliyor. Belki de "Magento'da Atla Ödeme Yap" satırındaki bir şey? – statenjason

+0

İyi geribildirim, - Başlığı güncelledim. –

+0

İndirmeyi bir "sipariş" olarak kaydetmek veya sadece insanların bunları almasına izin vermek istiyor musunuz? Bir sipariş olarak, onu indiren kişinin geçmişini görebilirsiniz ... –

cevap

6

Bu kod, oturum açmış müşterileri, Checkout'u atlarken ve doğrudan hesabımdaki İndirilenlerim bölümüne yönlendirirken, Ücretsiz, Sanal ürün için "sipariş vermelerini" sağlayacaktır.

Aşağıdaki satırı catalog/product/list.phtml numaranıza istediğiniz yere ekleyin.

<?php if($_product->isVirtual() && $_product->getFinalPrice()==0) { ?> 
       <a href="/modulename/checkout/purchase/id/<?php echo $_product->getId()?>"><?php echo $this->__('Download and Install') ?></a> 
      <?php } ?> 

O zaman bu kodu içeren bir controllers/CheckoutController.php ile yeni bir modül oluşturun:

public function purchaseAction() { 
if (!Mage::getSingleton('customer/session')->isLoggedIn()) { 
     $this->_redirectUrl(Mage::getBaseUrl().'customer/account'); 
     return; 
} 
$request = $this->getRequest(); 
$id = $request->getParam('id'); 
$product = Mage::getModel('catalog/product') 
       ->load($id) 
       ->setStoreId(Mage::app()->getStore()->getId()); 
if(!($product->getIsVirtual() && $product->getFinalPrice() == 0)){ 
    Mage::getSingleton('checkout/session')->addError($this->__('Method only available for Free Downloadable Items')); 
    return $this; 
} 
$onepage = Mage::getSingleton('checkout/type_onepage'); 
/* @var $onepage Mage_Checkout_Model_Type_Onepage */ 
try{ 
    $quote = $onepage->getQuote(); 
    /* @var $quote Mage_Sales_Model_Quote */ 
    $quote->addProduct($product); 
    Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
    $onepage->initCheckout(); 
    $payment=array('method'=>'free'); 
    $onepage->savePayment($payment); 
    $onepage->saveOrder(); 
    $this->getResponse()->setRedirect('/downloadable/customer/products'); 
} 
catch(Exception $e){ 
    $result = $e->getMessage(); 
    Mage::getSingleton('checkout/session')->addError($result); 
} 
} 

Sen biraz daha iyi İstisnalar işlemek gerekir, ama bu fonksiyonel olarak doğru olmalıdır.

+0

Kodunuzu denedim, Ama özel siparişi yapamıyorum. –

3

En iyi görme engelli tahminim (Mage_Downloadable'daki bloklara ve modellere bakmak) ürün türü örneğini kullanıyor. Yani, bir yerde, ürün şablonları, bunu yapmak mümkün olabilir:

// $_product is the current product 
$links = $product->getTypeInstance(true)->getLinks(); 
if(count($links)) { 
    foreach($links as $link) { 
     print "<a href='". $this->getUrl('downloadable/download/link', array(
      'id'  => $item->getLinkHash(), 
      '_secure' => true, 
      '_nosid' => true 
     )) . "'>Download</a>"; 
    } 
} 

değil, en azından doğru yolda alır umut edin.

Bu yardımcı olur umarım. Teşekkürler, Joe

+0

Teşekkür ederim. İş arkadaşlarımdan biri yapılandırılabilir ürünlerle bunu yapmayı başarmış gibi görünüyor, ancak nasıl emin değilim. Eğer öğrenirsem onu ​​buraya gönderirim. –

1

İndirilebilir bağlantılarınızın bir listesini bulabilir ve her biri için bir bağlantı ekleyebilirsiniz.

$links=Mage::getModel('downloadable/link') 
     ->getCollection() 
     ->addFieldToFilter('product_id',array('eq'=>$_product->getId())); 

foreach($links as $link){ 
    echo "<a href='" . $link->getLink_url() . "'>Download</a>"; 
} 
İlgili konular