Emulation process in Magento

Thursday, September 27, 2012
Recently,I had a task to send an custom transactional e-mail from admin panel on some event.And the email template was same as used in the frontend store. So, I was trying to make use of the same block and phtml of frontend theme to call in that email. But,i found that that,we cannot call frontend phtml files in the emails sending from admin.
There is a concept of emulation in magento which allow us to do the same.By using this method we can make use of frontend template files to call in mails sending from Admin.
This feature is available in magento 1.5 & above version.By using Emulation model a.k.a. Mage_Core_Model_App_Emulation class , we can emulate stores in magento.
Code to be used:
$appEmulation = Mage::getSingleton('core/app_emulation');
//Start environment emulation of the specified store
$initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId);
/*
 * Any code thrown here will be executed as we are currently running that store
 * with applied locale, design and similar
 */
//Stop environment emulation and restore original store
$appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo);
You will need something similar also,when you want to send custom transactional e-mail for all stores at the same time as cronjob. However, the problem is that e-mail had {{block}} inside and block template needed to respect different theme set for each store.

Debugging Magento Code with Net Beans IDE

Sunday, September 23, 2012

Mostly people are aware of how the xdebug is used on debugging PHP applications. However there can be people out there, alone, killing their eyes trying to find out which class called which functions etc. Here is a quick tip for you! Especially if you are trying to find your way with Magento!

NetBeans is a great IDE with it’s support to PHP!By using NetBeans and xdebug, we can freely and easily debug our PHP applications. However as the web evolved, there are not anymore php files to debug but there are “user friendly” urls to debug. So you cannot give the filename to NetBeans and say debug! because most of the web applications out there are now MVC based as this is the new trend in the PHP world. MVC means, one file -index.php dispatches all the requests. So how to debug using friendly urls.

Well you can use your NetBeans IDE to listen requests coming from your browser. That’s what NetBeans does when you click on debug button, which opens the start page (index.php) with a get variable like: ?XDEBUG_SESSION_START=netbeans-xdebug. This value (netbeans-xdebug) can change from your NetBeans configuration (click on preferences and choose the PHP tab). When this parameter is given, you can send any request to the NetBeans and it will listen!

All you need to do:

How to use a external Script to run Magento Code.

To make any external script to perform any task we need to include ‘app/Mage.php‘ of our Magento installation. Then, we can use the code of magento in that external script.
For example, to fetch Product data from Magento shop in any external script.

/**
* Include Mage.php of your Magento installation
*/
require_once("../magento/app/Mage.php");

Mage::app('default');
/**
* To get Product Data
* For example productId is '11'
*/
$productId = 11;
$product = Mage::getModel('catalog/product')->load($productId);
/**
*To Print name,,sku, price and quantity of the product
*/
echo "Name: ".$product->getName();
echo "Sku: ".$product->geSku();
echo "Price: ".$product->getPrice();
echo "Quantity: ".$product->getStockItem()->getQty();

Insert ,Update ,Delete and Select Records from Database Tables in Magento

You can select,insert,update and delete data in the Magento wby using their models concept.
For example,a table named ‘testdata‘ with the following fields:-
id : int, auto increment, primary key
firstname: varchar
lastname: varchar

How to add Category Attributes in Magento

We can add attributes to categories by running sql query in our database ,but this is not a good way of doing. We can use better way that is, set up scripts feature of magento.
We can create a custom module and add a mysql set up file inside below location:
CustomNamespace/CustomModule/sql/custommodule_setup/
Add the following code inside it to add category attributes :
$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$setup->addAttribute('catalog_category', 'custom_category_attribute', array(
'group' => 'General',
'input' => 'text',
'type' => 'varchar',
'label' => 'Custom New Category Attribute',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
));
$installer->endSetup();

How to add breadcrumb in magento

Breadcrumb is necessary for making website pages user navigation friendly. It can be printed out in any of the php or phtml pages by below code: We can also add our own breadcrumbs as per our requirements in our custom module.A method defined in mage "Mage_Page_Block_Html_Breadcrumbs" Class.We can use it to add crumb:
addCrumb ($crumbName, $crumbInfo, $after=false)
There are two ways to add crumb i.e. one by xml layout and another by using code:
By using code we can add breadcrumb like this:
$breadcrumbs = $this->getLayout()->getBlock('breadcrumbs');
$breadcrumbs->addCrumb('home',array('label'=>Mage::helper('cms')->__('Home'), 'title'=>Mage::helper('cms')->__('Home Page'),
'link'=>Mage::getBaseUrl()));