<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
	<atom:link href="http://subesh.com.np/tag/tricks/feed/" rel="self" type="application/rss+xml" />
	<link>http://subesh.com.np</link>
	<description>PHP &#38; Magento Tips &#38; Tutorials</description>
	<lastBuildDate>Thu, 12 Aug 2010 12:22:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/08/working-ajax-json-objects-magento-case-ajax-powered-login-functionality/</link>
		<comments>http://subesh.com.np/2010/08/working-ajax-json-objects-magento-case-ajax-powered-login-functionality/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 12:22:48 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Block]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=264</guid>
		<description><![CDATA[Previously I have written about Working With Ajax in Magento. And after a huge response I received from that post I was compelled to write more on implementing Ajax in Magento. And this time I want to say additionally about handling JSON (JavaScript Object Notation) along with Ajax, within the Magento enviornment. JSON Objects and [...]]]></description>
			<content:encoded><![CDATA[<p>Previously I have written about <a href="http://subesh.com.np/2009/11/working-with-ajax-in-magento/">Working With Ajax in Magento</a>. And after a huge response I received from that post I was compelled to write more on implementing Ajax in Magento. And this time I want to say additionally about handling JSON (<strong>JavaScript Object Notation</strong>) along with Ajax, within the Magento enviornment. JSON Objects and Ajax can be very helpful technique to get the work done. You can learn about JSON from <a href="http://www.json.org/">Here</a>.</p>
<p><span id="more-264"></span></p>
<p>I will try to describe this issue by taking a case of changing the Magento&#8217;s login functionality to a Ajax powered login functionality. So after this you will be able to implement a login function in a pop-up div in any page, unlike the default Magento&#8217;s seperate login page. I will leave the pop-up div part to you and get started with the real business (AJAX and JSON).</p>
<p>Presuming that you will use <strong>Mini-Login</strong> form. Here is how you proceed.</p>
<ol>
<li>Change Submit type button to Button type button.</li>
<li>Register OnClick Javascript event of that button and its Handler</li>
<li>In the Handler function call Ajax Request for login</li>
<li>Show Error Message or redirect to customer Dashboard</li>
</ol>
<p>Your mini.login.phtml should be like this</p>
<pre class="brush: xml;">
&lt;form action=&quot;&lt;?php //echo $this-&gt;getPostActionUrl() ?&gt;&quot; id=&quot;mini-login-form&quot; method=&quot;post&quot;&gt;
    &lt;fieldset&gt;
        &lt;p&gt;&lt;label&gt;&lt;?php echo $this-&gt;__('Email') ?&gt;:&lt;/label&gt; &lt;input name=&quot;login[username]&quot; class=&quot;input-text&quot; /&gt;&lt;/p&gt;
        &lt;p&gt;&lt;label&gt;&lt;?php echo $this-&gt;__('Password') ?&gt;:&lt;/label&gt; &lt;input name=&quot;login[password]&quot; class=&quot;input-text&quot; /&gt;&lt;/p&gt;
        &lt;p&gt;&lt;input type=&quot;button&quot; onClick=&quot;handlerFunction()&quot; value=&quot;&lt;?php echo $this-&gt;__('Login') ?&gt;&quot; /&gt;&lt;/p&gt;
    &lt;/fieldset&gt;
&lt;/form&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--
function handlerFunction(){

// Write These codes only after form Validation

// Making Ajax Request
		var request = new Ajax.Request(
			//Defining Ajax Request URL, We are calling custom Controller Ns_Mylogin_AccountController Class (Defined Below)
        	'&lt;?php echo $this-&gt;getUrl(&quot;mylogin/account/loginPost&quot;) ?&gt;',
           	{
            	method: 'post',
                onComplete: function(transport){ // Defining Complete Callback Function

                	// Getting Ajax Response Text Which is JSON Object
                	var jsonResponse=transport.responseText;
                	//Checking JSON Objects property and performing related action
                	// You will understand the response Text format after going through the controller description (Below)
                	if(jsonResponse.error){
                		alert(&quot;Error Occured&quot;);
						return false;
                	}
                	else{
                		window.location.href=jsonResponse.url;
                	}
                },
                parameters: Form.serialize($(&quot;mini-login-form&quot;))	// Seriallizing the form input values
        	}
        );
}
//--&gt;
&lt;/script&gt;
</pre>
<p>Please see inline comments for better understanding. Now our next set should be setting up our custom controller. I&#8217;ll not get into details of setting up modules and all but directly to our controller class <strong>Ns_Mylogin_AccountController</strong>. What I&#8217;ve done is just taken the core&#8217;s  <strong>loginPostAction </strong>function of <strong>Mage_Customer_AccountController</strong> and added some codes there. Please see there is a comment on each line added apart from the default Magento&#8217;s core code. </p>
<pre class="brush: php;">
&lt;?php
require_once(&quot;Mage/Customer/controllers/AccountController.php&quot;);
class Ns_Mylogin_AccountController extends Mage_Customer_AccountController{
	/**
	 * Login post action
	 * @return JSON Object
	 */
	public function loginPostAction()
	{
		// Added Line #1
		$result[&quot;error&quot;]=0;

		$session = $this-&gt;_getSession();

		if ($this-&gt;getRequest()-&gt;isPost()) {
			$login = $this-&gt;getRequest()-&gt;getPost('login');
			if (!empty($login['username']) &amp;&amp; !empty($login['password'])) {
				try {
					$session-&gt;login($login['username'], $login['password']);
					if ($session-&gt;getCustomer()-&gt;getIsJustConfirmed()) {
						$this-&gt;_welcomeCustomer($session-&gt;getCustomer(), true);
					}
				} catch (Mage_Core_Exception $e) {
					switch ($e-&gt;getCode()) {
						case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
							//Added Line #2
							$result[&quot;error&quot;]=1;
							$message = Mage::helper('customer')-&gt;__('This account is not confirmed. &lt;a href=&quot;%s&quot;&gt;Click here&lt;/a&gt; to resend confirmation email.', 						Mage::helper('customer')-&gt;getEmailConfirmationUrl($login['username']));
							break;
						case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
							//Added Line #3
							$result[&quot;error&quot;]=1;
							$message = $e-&gt;getMessage();
							break;
						default:
							//Added Line #4
							$result[&quot;error&quot;]=1;
							$message = $e-&gt;getMessage();
					}
					$session-&gt;addError($message);
					$session-&gt;setUsername($login['username']);
				} catch (Exception $e) {
					// Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
				}
			} else {
				//Added Line #5
				$result[&quot;error&quot;]=1;
				$session-&gt;addError($this-&gt;__('Login and password are required'));
				//Added Line #6
				$this-&gt;getResponse()-&gt;setBody(Mage::helper('core')-&gt;jsonEncode($result));
			}
		}
		//Added Line #7
		$result[&quot;url&quot;]=$this-&gt;_loginPostRedirect();
		//Added Line #8
		$this-&gt;getResponse()-&gt;setBody(Mage::helper('core')-&gt;jsonEncode($result));
	}
</pre>
<p>What I&#8217;ve done is added an array <strong>$result</strong> that will hold value if there is error or not while processing the user&#8217;s request. If there is error that array will hold $result['error']=1 else it will be as initiallized in <em>Added Line #1</em>. From <em>Added Line #2</em> through <em>Added Line #5</em>, we have various condition to check for error and set our <strong>$result</strong> variable.</p>
<p>On <em>Added Line #7</em> we have called another function (which we we rewrite as well) that will give us the url location identifying which location should be redirect after successful login. The implementation of function is given below. Finally in <em>Added Line #8</em> and <em>Line #6</em> we have encoded our $result array into <strong>JSON</strong> format and send as the response.</p>
<p>For visuallization our $result array will be one of the following.</p>
<ol>
<li> Case (No Error) : $result["error"]=0; $result["url"]=&#8221;SOME Redirect URL&#8221; </li>
<li> Case (Error) 	 :	$result["error"]=1; </li>
</ol>
<p>This JSON encoded response will be then used by the ajax call back function defined and perform related action.</p>
<p>Here&#8217;s the <strong>_loginPostRedirect()</strong> function which I mentioned (Added Line #7).</p>
<pre class="brush: php;">
/**
	 * Define target URL and redirect customer after logging in
	 */
	protected function _loginPostRedirect()
	{
		$session = $this-&gt;_getSession();

		if (!$session-&gt;getBeforeAuthUrl() || $session-&gt;getBeforeAuthUrl() == Mage::getBaseUrl() ) {

			// Set default URL to redirect customer to
			$session-&gt;setBeforeAuthUrl(Mage::helper('customer')-&gt;getAccountUrl());

			// Redirect customer to the last page visited after logging in
			if ($session-&gt;isLoggedIn())
			{
				if (!Mage::getStoreConfigFlag('customer/startup/redirect_dashboard')) {
					if ($referer = $this-&gt;getRequest()-&gt;getParam(Mage_Customer_Helper_Data::REFERER_QUERY_PARAM_NAME)) {
						$referer = Mage::helper('core')-&gt;urlDecode($referer);
						if ($this-&gt;_isUrlInternal($referer)) {
							$session-&gt;setBeforeAuthUrl($referer);
						}
					}
				}
				else if ($session-&gt;getAfterAuthUrl()) {
					$session-&gt;setBeforeAuthUrl($session-&gt;getAfterAuthUrl(true));
				}
			} else {
				$session-&gt;setBeforeAuthUrl(Mage::helper('customer')-&gt;getLoginUrl());
			}
		} else if ($session-&gt;getBeforeAuthUrl() == Mage::helper('customer')-&gt;getLogoutUrl()) {
			$session-&gt;setBeforeAuthUrl(Mage::helper('customer')-&gt;getDashboardUrl());
		}
		else {
			if (!$session-&gt;getAfterAuthUrl()) {
				$session-&gt;setAfterAuthUrl($session-&gt;getBeforeAuthUrl());
			}
			if ($session-&gt;isLoggedIn()) {
				$session-&gt;setBeforeAuthUrl($session-&gt;getAfterAuthUrl(true));
			}
		}
		// Changed Here
		return $session-&gt;getBeforeAuthUrl(true);
	}
</pre>
<p>You can download the code From <a href="http://code.google.com/p/subeshexamples/downloads/detail?name=Ajax_Json_Magento_subesh.com.np.zip#makechanges">Here</a>.</p>
<p>Hope it helps! Happy Coding.	</p>
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F08%2Fworking-ajax-json-objects-magento-case-ajax-powered-login-functionality%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/08/working-ajax-json-objects-magento-case-ajax-powered-login-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/08/displaying-currency-code-price-magento/</link>
		<comments>http://subesh.com.np/2010/08/displaying-currency-code-price-magento/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:33:38 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=261</guid>
		<description><![CDATA[I had a time to research on Magento&#8217;s currency format and its display on Magento webshop. I then came across a block where I could change the format of currency display, in this case I am talking about moving the currency symbol to the right of the price value. In other words I found a [...]]]></description>
			<content:encoded><![CDATA[<p>I had a time to research on Magento&#8217;s currency format and its display on Magento webshop. I then came across a block where I could change the format of currency display, in this case I am talking about moving the currency symbol to the right of the price value. In other words I found a way to show $10.00 as 10.00$. Notice the <strong>$</strong> (Dollar) sign moving at the right of the price value.<br />
Here&#8217;s a description of how this can be achievable. The basic idea is to rewrite <strong>Mage_Core_Model_Locale</strong> class&#8217;s currency function and add additional code. First you must write a rewrite code in your module&#8217;s<strong> config.xml</strong>.</p>
<p><span id="more-261"></span></p>
<pre class="brush: xml;">
&lt;core&gt;
	&lt;rewrite&gt;
		&lt;locale&gt;Namespace_Module_Model_Locale&lt;/locale&gt;
	&lt;/rewrite&gt;
&lt;/core&gt;
</pre>
<p>Then in <strong>Namespace_Module_Model_Locale</strong> class you can add the following code.</p>
<pre class="brush: php;">
class Namespace_Module_Model_Locale extends Mage_Core_Model_Locale{
	/*
	* Code: subesh.com.np
	*/

    public function currency($currency)
    {
    	Varien_Profiler::start('locale/currency');
        if (!isset(self::$_currencyCache[$this-&gt;getLocaleCode()][$currency])) {
            try {
                $currencyObject = new Zend_Currency($currency, $this-&gt;getLocale());

				// Additionally Added Code
				// The options array's position key has other values as well.

				// 	Zend_Currency::STANDARD
				// 	Zend_Currency::RIGHT
				//	Zend_Currency::LEFT     

				$options = array(
                       'position'	=&gt; Zend_Currency::RIGHT
                );

				$currencyObject-&gt;setFormat($options);

				// END Additionally Added Code

            } catch (Exception $e) {
                $currencyObject = new Zend_Currency($this-&gt;getCurrency(), $this-&gt;getLocale());
                $options = array(
                        'name'      =&gt; $currency,
                        'currency'  =&gt; $currency,
                        'symbol'    =&gt; $currency
                );
                $currencyObject-&gt;setFormat($options);
            }

            self::$_currencyCache[$this-&gt;getLocaleCode()][$currency] = $currencyObject;
        }
        Varien_Profiler::stop('locale/currency');
        return self::$_currencyCache[$this-&gt;getLocaleCode()][$currency];
	}	

}
</pre>
<p>You can see the comment of the code above for more detail understanding.</p>
<p><strong><em>P.S: Be informed that you need to change the Class Name you are about to create on the basis of your Namespace and Module name.</em></strong>
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F08%2Fdisplaying-currency-code-price-magento%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/08/displaying-currency-code-price-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/06/magento-creating-ajax-updated-tabs-frontend-product-management-tabs-backend/</link>
		<comments>http://subesh.com.np/2010/06/magento-creating-ajax-updated-tabs-frontend-product-management-tabs-backend/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 13:00:42 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=254</guid>
		<description><![CDATA[Magento&#8217;s Product Management GUI in back-end has Tabbed Navigation. There are two types of Tabs implemented there. One type of Tab is normal tab, loading content on page load while other type of tab has its content loaded by &#8220;Ajax&#8221;. Another interesting thing to note is that once the Ajax loaded tab&#8217;s content is loaded [...]]]></description>
			<content:encoded><![CDATA[<p>Magento&#8217;s Product Management GUI in back-end has Tabbed Navigation. There are two types of Tabs implemented there. One type of Tab is normal tab, loading content on page load while other type of tab has its content loaded by &#8220;Ajax&#8221;. Another interesting thing to note is that once the Ajax loaded tab&#8217;s content is loaded it will not &#8220;recall&#8221; Ajax to load its content, rather earlier loaded tab content is show. If are &#8220;confused&#8221; then just see how the &#8220;Categories&#8221; tab of the Product Management works.</p>
<p><span id="more-254"></span></p>
<p>I successfully used the same &#8220;behavior&#8221; of tabbed navigation in &#8220;front-end&#8221;, was easy at the end (always with Magento, when you get it), but I was struggling at the start. So, like my other posts, to share here&#8217;s how I used the same type of tab in Magento&#8217;s Front-end.</p>
<p>First thing is add the Tab&#8217;s Java-script file. You can either include by layout or in PHTML file. If you want to do from layout then,</p>
<pre class="brush: xml;">
&lt;reference name=&quot;head&quot;&gt;
        	 &lt;action method=&quot;addJs&quot;&gt;&lt;script&gt;mage/adminhtml/tabs.js&lt;/script&gt;&lt;/action&gt;
&lt;/reference&gt;
</pre>
<p>Next thing is to create Tab&#8217;s Menu inside UL &#038; LI. Here&#8217;s the structure. (Self Explanatory)</p>
<pre class="brush: xml;">
&lt;!-- TAB MENU STRUCTURE --&gt;

&lt;ul id=&quot;page_tabs&quot;&gt;
	&lt;!-- NORMAL TAB --&gt;
	&lt;li&gt;
		&lt;a id=&quot;normaltab&quot; name=&quot;normaltab&quot; class=&quot;tab-item-link&quot; href=&quot;#&quot;&gt; NORMAL TAB &lt;/a&gt;
		&lt;!-- NOTE: class has to be tab-item-link--&gt;

		&lt;div id=&quot;normaltab_content&quot;&gt; Normal Tab HTML&lt;/div&gt;
		&lt;!-- NOTE: See the id of this div content it has id equal to its anchor's (&lt;a&gt;) id + Underscore + content --&gt;
	&lt;/li&gt;
	&lt;!-- NORMAL TAB END--&gt;

	&lt;!-- AJAX LOADED TAB --&gt;
	&lt;li&gt;
		&lt;a id=&quot;ajaxtab&quot; name=&quot;ajaxtab&quot; class=&quot;tab-item-link ajax notloaded&quot; href=&quot;http://example.com/magento/module/controller/action&quot;&gt; AJAX TAB &lt;/a&gt;
		&lt;!-- NOTE 1: class has to be tab-item-link ajax notloaded --&gt;
		&lt;!-- NOTE 2: Since this is Ajax Loaded Tab its Anchor should have href value = SOME URL --&gt;

		&lt;div id=&quot;ajaxtab_content&quot;&gt;&lt;/div&gt;
		&lt;!-- NOTE 1: See the id of this div content it has id equal to its anchor's (&lt;a&gt;) id + Underscore + content --&gt;
		&lt;!-- NOTE 2: Since its innerHTML will be loaded by by Ajax you can set its innerHTML &quot;blank&quot; --&gt;

	&lt;/li&gt;
	&lt;!-- AJAX LOADED TAB END --&gt;
&lt;/ul&gt;
&lt;!-- TAB MENU STRUCTURE END --&gt;

&lt;!-- TAB CONTENT CONTAINER DIV--&gt;
&lt;div id=&quot;tabcontainer&quot;&gt;&lt;/div&gt;
&lt;!-- TAB CONTENT CONTAINER DIV--&gt;
</pre>
<p>Now its the time to use the Tabs JS included, like below.</p>
<pre class="brush: jscript;">
&lt;script&gt;
	// Form Key Required for POST AJAX Method
	var FORM_KEY=&quot;&lt;?php echo Mage::getSingleton('core/session')-&gt;getFormKey() ?&gt;&quot;; 

	// Set this to false, Guess used for some other purpose in backend, not really required in frontend.
	var varienGlobalEvents=false;

	// Initiallizing Varien Tabs
	/**
	* @param 1 : UL Menu ID
	* @param 2 : Target Tab Content ID
	* @param 3 : Initially Loading Tab's Id
	* @param 4 : Don't know yet, just use as it is (LOL)
	*/

	frontend_tabsJsTabs = new varienTabs('page_tabs', 'tabcontainer', 'normaltab',[]);

&lt;/script&gt;
</pre>
<p>Done! You must now have a functioning Tab loading by Ajax and Normal, but yes tab would look good if you add CSS to your Tabs. <img src='http://subesh.com.np/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Here is how it works.</p>
<ol>
<li>
On load it first copies the tab_content div inside the Target Tab Content ID div.
</li>
<li>
On tabbed menu clicked it checks its class name and if it class name does not have &#8220;ajax&#8221; it simply shows the its_content div.
</li>
<li>
If the menu clicked has &#8220;ajax&#8221; then it checks for another class name &#8220;notloaded&#8221;. So if its ajax and notloaded it then makes an Ajax request and updates the responseText to itsid_content div and then removes the &#8220;notloaded&#8221; class name for the menu. After that it then displays the itsid_content div, hiding previous ones.
</li>
<li>
If you re-click the &#8220;Ajax&#8221; typed menu, it will not find &#8220;notloaded&#8221; class in its menu, then it just shows its_content div.
</li>
</ol>
<p>A good trick, I thought while doing this, using class name to restrict the Ajax call.
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F06%2Fmagento-creating-ajax-updated-tabs-frontend-product-management-tabs-backend%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/06/magento-creating-ajax-updated-tabs-frontend-product-management-tabs-backend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/05/magento-ecommerce-how-to-reset-all-test-order-information-and-set-unique-prefix-for-orders-invoices-shipments-and-credit-memos/</link>
		<comments>http://subesh.com.np/2010/05/magento-ecommerce-how-to-reset-all-test-order-information-and-set-unique-prefix-for-orders-invoices-shipments-and-credit-memos/#comments</comments>
		<pubDate>Thu, 06 May 2010 09:54:02 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=242</guid>
		<description><![CDATA[Nice Post I stumbled upon.. from www.eliasinteractive.com. This is a very helpful hack Lee has posted to reset order information while moving from development stage to production stage. I&#8217;d tried this in Enterprise Edition as well and it worked!

Just a Re-Post  
Magento eCommerce: How To Reset All Test Order Information and Set Unique Prefix [...]]]></description>
			<content:encoded><![CDATA[<p>Nice Post I stumbled upon.. from www.eliasinteractive.com. This is a very helpful hack Lee has posted to reset order information while moving from development stage to production stage. I&#8217;d tried this in Enterprise Edition as well and it worked!</p>
<p><span id="more-242"></span></p>
<p>Just a Re-Post <img src='http://subesh.com.np/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><a href="http://www.eliasinteractive.com/blog/magento-ecommerce-how-to-reset-all-test-order-information-and-set-unique-prefix-for-orders-invoices-shipments-and-credit-memos">Magento eCommerce: How To Reset All Test Order Information and Set Unique Prefix For Orders, Invoices, Shipments, and Credit Memos</a>.
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F05%2Fmagento-ecommerce-how-to-reset-all-test-order-information-and-set-unique-prefix-for-orders-invoices-shipments-and-credit-memos%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/05/magento-ecommerce-how-to-reset-all-test-order-information-and-set-unique-prefix-for-orders-invoices-shipments-and-credit-memos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/05/solution-error-message-showing-frontends-magento/</link>
		<comments>http://subesh.com.np/2010/05/solution-error-message-showing-frontends-magento/#comments</comments>
		<pubDate>Tue, 04 May 2010 12:22:40 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Block]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=238</guid>
		<description><![CDATA[I recently got to a situation where I needed to add a new frontend template for some module and after some action show the error or success message. Not the first time though  . Interesting thing was even if I added this code in the PHTML file.



&#60;?php echo $this-&#62;getMessagesBlock()-&#62;getGroupedHtml() ?&#62;

It did not work. Yes, [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got to a situation where I needed to add a new frontend template for some module and after some action show the error or success message. Not the first time though <img src='http://subesh.com.np/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Interesting thing was even if I added this code in the PHTML file.</p>
<p><span id="more-238"></span></p>
<pre class="brush: php;">

&lt;?php echo $this-&gt;getMessagesBlock()-&gt;getGroupedHtml() ?&gt;
</pre>
<p>It did not work. Yes, after adding this block it had worked before. In my case, the probable case might be that I had called the module&#8217;s template from CMS page. In other case it should work. So, I looked for work around and the following did the trick.</p>
<pre class="brush: php;">
// Getting Messages from Session
$messages=Mage::getSingleton(&quot;customer/session&quot;)-&gt;getMessages();

// Creating Block Mage_Core_Block_Messages
// Setting Message
// echoing the Message's HTML
echo $this-&gt;getLayout()-&gt;createBlock(&quot;core/messages&quot;)-&gt;setMessages($messages)-&gt;getGroupedHtml();
</pre>
<p>The Error/Success or Notice messages are set on session. So what I did was take those message/s from the session and create a new block, same as what <strong>$this->getMessagesBlock()</strong> might have called, and set those message to the created block and echoed its HTML.</p>
<p>Clever? or not?</p>
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F05%2Fsolution-error-message-showing-frontends-magento%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/05/solution-error-message-showing-frontends-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/03/redirect-location-model-observer-magento/</link>
		<comments>http://subesh.com.np/2010/03/redirect-location-model-observer-magento/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 12:45:02 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Controllers]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=236</guid>
		<description><![CDATA[Redirection in Magento&#8217;s controller is simple. You just need to call a _redirect() or _forward() function and provide appropriate router/controller/action parameter. But if you want to redirect to some other page from Model or from Observer, then this can be tricky. Lets take an example, for explaining what I am referring to, Suppose you are [...]]]></description>
			<content:encoded><![CDATA[<p>Redirection in Magento&#8217;s controller is simple. You just need to call a <strong>_redirect() </strong>or <strong>_forward() </strong>function and provide appropriate router/controller/action parameter. But if you want to redirect to some other page from Model or from Observer, then this can be tricky. Lets take an example, for explaining what I am referring to, Suppose you are building a module that will only allow user of certain group to view a product in frontend. Then, you will have options like:</p>
<p><span id="more-236"></span></p>
<ul>
<ol>
Rewrite you catalog/product/view controller and add that logic.
</ol>
<ol>
Rewrite Block of that page and show error message accordingly.
</ol>
<ol>
Any other..?
</ol>
</ul>
<p>Yeha, I do have another option as well. The Event-Observer Method. You can observe an event <strong>controller_action_predispatch_catalog_product_view</strong> and set up an observer where you can write your own logic there and redirect accordingly.</p>
<p>You can observe that event by setting up your config something like this.</p>
<pre class="brush: xml;">
&lt;controller_action_predispatch_catalog_product_view&gt;
	&lt;observers&gt;
		&lt;mymodel&gt;
			&lt;type&gt;singleton&lt;/type&gt;
			&lt;class&gt;mymodel/controller_observer&lt;/class&gt;
			&lt;method&gt;controller_action_predispatch_catalog_product_view&lt;/method&gt;
		&lt;/mymodel&gt;
	&lt;/observers&gt;
&lt;/controller_action_predispatch_catalog_product_view&gt;
</pre>
<p>And on the observer&#8217;s <strong>controller_action_predispatch_catalog_product_view</strong> method, you can check your logic for visibiliy of that product to the logged in user group and redirect if not visible.</p>
<p>Here&#8217;s the main point of this post (Did I take a lot of your time ?), in that same method you can directly redirect using the following snippet of code.</p>
<pre class="brush: php;">

Mage::app()-&gt;getResponse()-&gt;setRedirect(Mage::getUrl(&quot;myrouter/mycontroller/noview&quot;));
</pre>
<p>Adding an error message to the session would be a good idea, for user to understand what is happening. Else you can directly call a template in the redirected controller&#8217;s action with appropriate message.</p>
<p>I think this sums up the post for now..and as always hoping it helps somebody and waiting for the response.</p>
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F03%2Fredirect-location-model-observer-magento%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/03/redirect-location-model-observer-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/03/creating-product-links-magento-custom-query/</link>
		<comments>http://subesh.com.np/2010/03/creating-product-links-magento-custom-query/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 06:28:27 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Import/Export]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=220</guid>
		<description><![CDATA[I&#8217;ve already made a post in this blog about Adding Related Product and other links to Product in Magento . But when I used the method to creating links among product&#8217;s, while importing very large number of products and creating large number of product links, it took a lot of time and resource. So I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve already made a post in this blog about <a href="http://subesh.com.np/2009/11/adding-related-product-and-other-links-to-product-in-magento/">Adding Related Product and other links to Product in Magento </a>. But when I used the method to creating links among product&#8217;s, while importing very large number of products and creating large number of product links, it took a lot of time and resource. So I thought why not give it a try by direclty creating a link using SQL? And YES! it worked.</p>
<p><span id="more-220"></span></p>
<p>Below is the code how I created those links using Custom SQL. But I have to tell you that the former methods looks organized, this is just a work around to a situation. You might know what I am trying to say!</p>
<pre class="brush: php;">
$resource 	= Mage :: getSingleton( 'core/resource' );
$read= $resource -&gt; getConnection( 'core_read' );
$write= $resource-&gt;getConnection('core_write');
$linkTable=$resource-&gt;getTableName('catalog/product_link');

// Creating Upsell Product link

$write-&gt;query(&quot;INSERT into $linkTable SET
							product_id='&quot;.$productId.&quot;',
							linked_product_id='&quot;.$linkProduct.&quot;',
							link_type_id='&quot;.Mage_Catalog_Model_Product_Link::LINK_TYPE_UPSELL.&quot;'
			&quot;);

// Creating Related Product link

$write-&gt;query(&quot;INSERT into $linkTable SET
							product_id='&quot;.$productId.&quot;',
							linked_product_id='&quot;.$linkProduct.&quot;',
							link_type_id='&quot;.Mage_Catalog_Model_Product_Link::LINK_TYPE_RELATED.&quot;'
			&quot;);		

// Creating Crosssell Product Link
$write-&gt;query(&quot;INSERT into $linkTable SET
							product_id='&quot;.$productId.&quot;',
							linked_product_id='&quot;.$linkProduct.&quot;',
							link_type_id='&quot;.Mage_Catalog_Model_Product_Link::LINK_TYPE_CROSSSELL.&quot;'
			&quot;);
</pre>
<p>Happy Coding!
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F03%2Fcreating-product-links-magento-custom-query%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/03/creating-product-links-magento-custom-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/03/creating-collection-objects-magento-magical-classvarien_data_collection/</link>
		<comments>http://subesh.com.np/2010/03/creating-collection-objects-magento-magical-classvarien_data_collection/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 11:58:04 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=215</guid>
		<description><![CDATA[Have you ever wondered how Collection in Magento are built, containing array of individual Entity Objects of Magento? Collections are one of the most important data structure (if I am right) used in Magento. Most of the queries in Magento will result into collection, and then you will apply a foreach loop to access individual [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered how Collection in Magento are built, containing array of individual Entity Objects of Magento? Collections are one of the most important data structure (if I am right) used in Magento. Most of the queries in Magento will result into collection, and then you will apply a foreach loop to access individual Entity Objects and their values. Today I came into a different situation where I had individual objects but needed to create a collection of those objects, so that I could return the collection from a function.</p>
<p><span id="more-215"></span></p>
<p>I have not drilled down to the details of collection, untill today when I really need it! Do you think its very late? because I have been into Magento for more than a year now!. Better late than never! So, I got the way of working out my situation. Here is how I created a collection from Magento&#8217;s &#8220;Magical Class&#8221; Varien_Data_Collection. I call this &#8220;Magical Class&#8221;, because it worked like a Magic to me <img src='http://subesh.com.np/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<pre class="brush: php;">
$collection=new Varien_Data_Colllection();
$collection-&gt;addItem($objProduct);
</pre>
<p>There are various other functions in this class you might need to &#8220;work around&#8221; a problem. So, have a look and certainly do comment if you also think this class to be a Magical Class!
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F03%2Fcreating-collection-objects-magento-magical-classvarien_data_collection%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/03/creating-collection-objects-magento-magical-classvarien_data_collection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/03/ordered-items-detail-order-id-magento/</link>
		<comments>http://subesh.com.np/2010/03/ordered-items-detail-order-id-magento/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 12:00:21 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=213</guid>
		<description><![CDATA[Here is a small snippet of code, yet useful, to get ordered items and its details. I&#8217;ve deviced this code a lot before and posted in Magento Commerce&#8217;s Forum as well. But felt like writting it again, so that I can have a quick refrence to it as well. Next thing, I&#8217;ve tried a lot [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a small snippet of code, yet useful, to get ordered items and its details. I&#8217;ve deviced this code a lot before and posted in Magento Commerce&#8217;s Forum as well. But felt like writting it again, so that I can have a quick refrence to it as well. Next thing, I&#8217;ve tried a lot to get all orders and their items details by single query, but have not yet come up with a solution. If you have any method of finding order and its details by a single query, then please do response. The code below first needs an order ID as it parameters to give order details.</p>
<p><span id="more-213"></span></p>
<pre class="brush: php;">
$order = Mage::getModel('sales/order')-&gt;load($order_id);
$items = $order-&gt;getAllItems();
$itemcount=count($items);
$name=array();
$unitPrice=array();
$sku=array();
$ids=array();
$qty=array();
foreach ($items as $itemId =&gt; $item)
{
	$name[] = $item-&gt;getName();
	$unitPrice[]=$item-&gt;getPrice();
	$sku[]=$item-&gt;getSku();
	$ids[]=$item-&gt;getProductId();
	$qty[]=$item-&gt;getQtyToInvoice();
}
</pre>
<p>Hope this might &#8220;just&#8221; help somebody in need.
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F03%2Fordered-items-detail-order-id-magento%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/03/ordered-items-detail-order-id-magento/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>tricks | Subesh Pokhrel&#039;s Blog - Magento Development Tips,PHP,Google Maps</title>
		<link>http://subesh.com.np/2010/01/debugging-magento-eclipse-pdt-zend-debugger/</link>
		<comments>http://subesh.com.np/2010/01/debugging-magento-eclipse-pdt-zend-debugger/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 12:37:29 +0000</pubDate>
		<dc:creator>Subesh Pokhrel</dc:creator>
				<category><![CDATA[Custom Module]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://subesh.com.np/?p=187</guid>
		<description><![CDATA[I had always thought of using Eclipse to debug Magento&#8217;s complex code flow, and tried number of times before. But without any success I had to abandon it, and thought was not applicable for Magento, remember the fox and the sour grapes   I also tried using Trial Version of Zend Studio, but with [...]]]></description>
			<content:encoded><![CDATA[<p>I had always thought of using Eclipse to debug Magento&#8217;s complex code flow, and tried number of times before. But without any success I had to abandon it, and thought was not applicable for Magento, remember the fox and the sour grapes <img src='http://subesh.com.np/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  I also tried using Trial Version of Zend Studio, but with no sucess.</p>
<p><span id="more-187"></span></p>
<p>But today I was looking at fontis&#8217;s blog <a href="http://www.fontis.com.au/blog/magento/debugging-with-xdebug">http://www.fontis.com.au/blog/magento/debugging-with-xdebug</a> and they had indeed used XDebugger and are debugging Magento through command line. So, I thought why not give it a try once again! And as you have already expected i was successfull today!! Wasn&#8217;t easy though <img src='http://subesh.com.np/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Here&#8217;s what I&#8217;ve done to get it working on WAMP. Before getting this done I assume you have created a new PHP Project and imported all files, beforehand in Eclipse.</p>
<p><strong>Step 1</strong>. A very good explanation of downloading Eclipse PDT with Zend Debugger can be found here <a href="http://www.thierryb.net/pdtwiki/index.php?title=Using_PDT_:_Installation_:_Installing_the_Zend_Debugger">Installing_the_Zend_Debugger</a></p>
<p><strong>Step 2</strong>. Configuring the Zend Debugger can also be found on same location but I would like to emphasize on its setting here, coz I missed myself on first run <img src='http://subesh.com.np/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Use these settings for For Zend debugger in <strong>php.ini</strong></p>
<p>[Zend]<br />
zend_extension_ts=D:/wamp/bin/php/php5.2.5/ext/ZendDebugger.dll<br />
zend_debugger.allow_hosts=127.0.0.1<br />
zend_debugger.expose_remotely=always</p>
<p>You should not forget to enable <strong>Zend Debugger</strong> extension on WAMP. Now restart Wamp. You are now well set with Eclipse PDT and Zend Debugger. Next thing you need to do is make debugging settings in your Eclipse.</p>
<p><strong>Step 3</strong>. In you Eclipse Go to <strong>Windows&#8211;&gt;Preference&#8211;&gt;Debug</strong> and set as follows</p>
<p><img class="alignnone size-full wp-image-194" title="debugsettings" src="http://subesh.com.np/wp-content/uploads/2010/01/debugsettings.jpg" alt="debugsettings" width="500" height="497" /></p>
<p><strong>Step 4</strong>. Then <strong>Windows&#8211;&gt;Preference&#8211;&gt;Server</strong> and set as follows</p>
<p><img class="alignnone size-full wp-image-198" title="Debug Server" src="http://subesh.com.np/wp-content/uploads/2010/01/debugserver.jpg" alt="Debug Server" width="500" height="497" /></p>
<p>While setting Server configuration you will be prompt to add server path in path mapping, place that relative to your www root Example: <strong>/mysite</strong> (which will open as localhost/mysite) and select the files in your workspace.</p>
<p><strong>Step 5</strong>. Now all your settings are done. Now let me tell you about debugging a Block Class of Magento, say <strong>Mage_Catalog_Block_Product_List</strong>. Go to the class file and add a breakpoint anywhere inside <strong>_getProductCollection </strong> function.</p>
<p><strong>Step 6</strong>. Go to <strong>Run&#8211;&gt;Open Run Dialog</strong> and configure as following</p>
<p><a class="aligncenter" href="http://subesh.com.np/wp-content/uploads/2010/01/Profile1.png" target="_blank"><img class="alignnone size-full wp-image-200" title="Run Profile1" src="http://subesh.com.np/wp-content/uploads/2010/01/Profile1.png" alt="Run Profile1" width="500" height="369" /></a></p>
<p><a class="aligncenter" href="http://subesh.com.np/wp-content/uploads/2010/01/profile2.png" target="_blank"><img class="alignnone size-full wp-image-202" title="Profile 2" src="http://subesh.com.np/wp-content/uploads/2010/01/profile2.png" alt="Profile 2" width="502" height="367" /></a></p>
<p><strong>Step 7</strong>. All set to go now, Run profile as web page Run&#8211;&gt;Debug As&#8211;&gt;PHP Webpage.</p>
<p>You can now see PHP Debug perspective, and use Step Over or Step Into to debug your values. Here is what I got.</p>
<p><a class="aligncenter" href="http://subesh.com.np/wp-content/uploads/2010/01/debugging.png" target="_blank"><img class="alignnone size-full wp-image-204" title="debugging" src="http://subesh.com.np/wp-content/uploads/2010/01/debugging.png" alt="debugging" width="501" height="263" /></a></p>
<p>Hope this might be a life changer.. at least it is for me!
<div style="margin-top: 15px; font-style: italic">
<p><strong>&copy;</strong> <a href="http://subesh.com.np/">Subesh Pokhrel&#039;s Blog &#8211; Magento Development Tips,PHP,Google Maps</a></p>
</div>
<hr /><small>Copyright &copy; 2010<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. </small>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fsubesh.com.np%2F2010%2F01%2Fdebugging-magento-eclipse-pdt-zend-debugger%2F" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://subesh.com.np/2010/01/debugging-magento-eclipse-pdt-zend-debugger/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
