17

we are displaying text field in view page to check COD availability.

enter image description here

view.phtml

echo $this->getLayout()->createBlock('core/template')->setTemplate('checkdelivery/checkdelivery.phtml')->toHtml();

in view.phtml we are calling below file . but i want to call static block identifier [identifier code - check] instead of below file.

template/checkdelivery/checkdelivery.phtml

<div class="block block-list block-check-delivery">
    <div class="block-title">
        <?php $blockLabel = Mage::getStoreConfig('checkdelivery/general/block_title'); ?>
        <strong><span><?php echo $this->__($blockLabel) ?></span></strong>
    </div>
    <div class="block-content" >        
        <br>
            <input name="zipcode" size="17" type="text" id="zipcode" value="<?php echo Mage::getModel('core/cookie')->get('zip'); ?>" maxlength="10" class="input-text" placeholder="<?php echo $this->__('Enter ZIP Code'); ?>"/>
            <button type="button" name="zip-check" title="Check" class="button" id="zip-check" ><span><?php echo $this->__('Check'); ?></span></button>
            <div id="delivery-message"></div>
            <?php $defaultHtml = Mage::getStoreConfig('checkdelivery/general/default_html'); ?>
            <div id="delivery-html"><?php if(Mage::getModel('core/cookie')->get('message')){
    echo Mage::getModel('core/cookie')->get('message');
}
else{
    $defaultHtml; } ?></div>

        <br>        
    </div>

</div>

<script>
    Event.observe('zip-check', 'click', function(event){
        new Ajax.Request("<?php echo $this->getUrl('checkdelivery/index/index') ?>", {
            method: "get",
            parameters: {zipcode : $('zipcode').value },
            onSuccess: function(transport) {
                 var json = transport.responseText.evalJSON();
                 $('delivery-message').update(json.message);                 
                 $('delivery-message').setStyle({ color: json.color});
                 $('delivery-html').update(json.html);  
            }
        });
    });
</script>

static block code :

<p>{{block type ="core/template" template = "checkdelivery/checkdelivery.phtml"}}</p>

2 Answers 2

47

You can use the below code:

in .phtml file :

<?php
  echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 
?> 

sample :

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('home')->toHtml(); ?> 

in static block / cms page :

{{block type="core/template" template="checkdelivery/checkdelivery.phtml"}}

5
  • its not displaying textfield now. i updated the static block code in question. Commented Apr 29, 2016 at 7:15
  • did you refresh you cache? Commented Apr 29, 2016 at 7:20
  • yes deleted cache folder, also removed browser cache. Commented Apr 29, 2016 at 7:21
  • 1
    {{block type ="core/template" template="checkdelivery/checkdelivery.phtml" }} remove space and check the system->permission ->block it is listed (core/template)? Commented Apr 29, 2016 at 7:28
  • 1
    createBlock('Magento\Cms\Block\Block') instead of ->createBlock('cms/block') wordked for me :) Thanks for this tip! Commented Nov 12, 2019 at 10:17
3

If you have created CMS block named 'block_identifier' from admin panel. Then following will be code to call them in .phtml

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 
?> 

Clear cache and reload your browser.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.