2013-03-11 5 views
2

Я просто создаю реферал имени модуля. Теперь я хочу разместить реферальный блок в другое имя файла шаблона success.phtml. Это можно сделать?Вызов блока в другом шаблоне

referral.xml (в модуле направления)

<?xml version="1.0"?> 
    <layout version="0.1.0"> 

      <checkout_onepage_success> 
<reference name="checkout.success"> 
        <block type="referral/referral" name="referralCallLink"><action method="referralCallLink"></action></block> 
       </reference> 
      </checkout_onepage_success> 
      <!--block type="referral/referral" name="referralAddSession"><action method="referralAddSession"></action></block--> 

    </layout> 

success.phtml

<?php if($hasBoughtMCash): ?> 
<div> Your 
<?php echo implode(', ',$hasBoughtMCash); ?> 
purchase is successful. 
</div> 
<?php endif; ?> 
<h2>Share in Facebook and Earn for Free MCash!</h2> 
<?php echo $this->getChildHtml(); ?> 

Referral.php (блок)

public function referralCallLink() //success page 
    { 
    ... 

    $collection7 = Mage::getModel('referral/referrallink')->getCollection(); 
    $collection7->addFieldToFilter('customer_id', array('eq' => $cust_id)); 
    $collection7->addFieldToFilter('grouped', array('eq' => $grouped)); 

     foreach($collection7 as $data3) 
     { 
     $product = $data3->getData('product'); 
     $link = $data3->getData('link'); 
     $imageurl = $data3->getData('url');    
     //facebook 
     $title=urlencode('Shop, Save and Get Rewarded at MRuncit.com'); 
     $url=urlencode($link); 
     $summary=urlencode('I just bought '.$product.' from MRuncit.com and earned some MReward Points!'); 
     $image=urlencode($imageurl); 

     ?> 
     <p> 
     <a href="http://www.facebook.com/sharer.php?s=100&amp;p[title]=<?php echo $title;?>&amp;p[summary]=<?php echo $summary;?>&amp;p[url]=<?php echo $url; ?>&amp;p[images][0]=<?php echo $image;?>','sharer','toolbar=0,status=0,width=548,height=325');" target="_blank"> 
     <img src="<?php echo $imageurl;?>" width="30"> 
     I just bought <?php echo $product; ?> from MRuncit.com and earned some MReward Points! 
     </a> 
     </p> 
     <?php 

     } 
    } 

Результаты enter image description here

ответ

0

Вы должны создать блок, как ребенок блока успеха в макете XML:

<layout_handle_of_the_success_page> 
    <reference name="name_of_the_success_block_in_layout"> 
     <block type="your/referral_block" /> 
    </reference> 
</layout_handle_of_the_success_page> 

Затем вы можете вставить следующую строку в success.phtml:

<?php echo $this->getChildHtml('referral'); ?> 

Есть некоторые имена в примере XML, который вы должны заменить самостоятельно:

  • layout_handle_of_the_success_page - вы найдете его в макете XML соответствующего модуля. Он должен быть в форме module_controller_action-> checkout_onepage_success
  • name_of_the_success_block_in_layout - также из макета XML, обратите внимание на блок с success.phtml шаблона и его name атрибут -> checkout.success
  • your/referral_block - это класс псевдоним блока, который вы хотите вставить в форму module/class-> направление/направления
+0

Привет, это как Checkout.xml и success.phtml я изменяю выше? Он показывает Fatal Error: Call to undefined function getChildHtml() –

+0

Извините, это должно быть '$ this-> getChildHtml()' - я обновил код. –

+0

Кроме того, я добавил макет дескриптора и ссылочное имя блока из опубликованного файла checkout.xml. Но, пожалуйста, НЕ редактируйте checkout.xml, добавьте XML-код в свой собственный файл макета! –

Смежные вопросы