<?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>Magento Design and Development &#187; cms</title>
	<atom:link href="http://inchoo.net/tag/cms/feed/" rel="self" type="application/rss+xml" />
	<link>http://inchoo.net</link>
	<description>Magento Design and Magento Development Professionals - Inchoo</description>
	<lastBuildDate>Wed, 23 May 2012 06:32:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Injecting Variables into a Magento CMS static block</title>
		<link>http://inchoo.net/ecommerce/magento/injecting-variables-into-a-magento-cms-static-block/</link>
		<comments>http://inchoo.net/ecommerce/magento/injecting-variables-into-a-magento-cms-static-block/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 09:30:44 +0000</pubDate>
		<dc:creator>Thomas Spigel</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=13459</guid>
		<description><![CDATA[In this tutorial i&#8217;ll show you how to inject any custom variable you need into a cms static block in place of a {{var variable_name}} tag. You&#8217;ve seen this in &#8230;]]></description>
			<content:encoded><![CDATA[<p>In this tutorial i&#8217;ll show you how to inject any custom variable you need into a cms static block in place of a {{var variable_name}} tag. You&#8217;ve seen this in the email templates if you were working on them (in the matter of fact the model (filter) we&#8217;re calling is extending the same filter the email templates are using for injecting the variables).<span id="more-13459"></span></p>
<p>First, let&#8217;s assume a few things:<br />
1) the package is named &#8216;Company&#8217; and the module is named &#8216;Module&#8217;<br />
2) you know how to make a php module and a new block class. The block&#8217;s alias is in this example &#8216;module/dynamic&#8217;<br />
3) the phtml template for the dynamic block will be dynamic.phtml<br />
4) the block id of the static cms block will be &#8216;static_block&#8217; (and you already created it in the admin)<br />
5) you need to add the email of the current customer to the static block. The logic of when you want to show the block and everything deeper is out of the scope of this document.</p>
<p>First let&#8217;s look @ the phtml file, which only uses the method which we&#8217;ll create afterwards in the block class:</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php if(Mage::getSingleton('customer/session')-&gt;getCustomer()-&gt;getId()) : ?&gt;
	&lt;?php echo $this-&gt;getStaticBlock();?&gt;
&lt;?php endif;?&gt;
</pre>
<p>As you see, we&#8217;re only checking if the customer is set and are getting the static block. So next let&#8217;s see the logic in the dynamic block class:</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
/**
 * Just another block class
 */
class Company_Module_Block_Dynamic extends Mage_Core_Block_Template
{
	/**
	 * This getter will return the html of your static block
	 * @return string
	 */
	public function getStaticBlock()
	{
		// loading the static block
		$block = Mage::getModel('cms/block')
		-&gt;setStoreId(Mage::app()-&gt;getStore()-&gt;getId())
		-&gt;load('static_block');
		/* @var $block Mage_Cms_Model_Block */

		// setting the assoc. array we send to the filter.
		$array = array();
		// the array keys are named after the tags in the static block. let's say $array['customer_email'] is {{var customer_email}} in the static block. you can set as many variables you need.
		$array['customer_email'] = Mage::getSingleton('customer/session')-&gt;getCustomer()-&gt;getEmail();

		// loading the filter which will get the array we created and parse the block content
		$filter = Mage::getModel('cms/template_filter');
		/* @var $filter Mage_Cms_Model_Template_Filter */
		$filter-&gt;setVariables($array);

		// return the filtered block content.
		return $filter-&gt;filter($block-&gt;getContent());

	}
}
?&gt;
</pre>
<p>Ok. Now enter somewhere in your static_block CMS block the tag {{var customer_email}} (or some other key you added) and it&#8217;ll be dynamically added into CMS block.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/injecting-variables-into-a-magento-cms-static-block/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Magento CMS syntax – part2</title>
		<link>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part2/</link>
		<comments>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part2/#comments</comments>
		<pubDate>Sat, 28 May 2011 17:32:13 +0000</pubDate>
		<dc:creator>Ivan Weiler</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=9512</guid>
		<description><![CDATA[Every Magento user noticed that there is special {{magentocode}} syntax available in cms pages and static blocks. We traced a bit to find out which params are available and what &#8230;]]></description>
			<content:encoded><![CDATA[<p>Every Magento user noticed that there is special {{magentocode}} syntax available in cms pages and static blocks. We traced a bit to find out which params are available and what exactly they do.<span id="more-9512"></span><br />
<strong><a href="http://inchoo.net/ecommerce/magento/magento-cms-syntax-part1/" target="_blank"><br />
Magento CMS syntax – part1</a> is first part of this series. Please read before this.</strong></p>
<p>Since the part1 article 4 new codes were introduced in newer Magento versions, so now there&#8217;s 10 of them total: skin, media, htmlescape, store, block, layout, config, customvar, protocol and widget.</p>
<p>They are currently handled by Mage_Widget_Model_Template_Filter processor class (which extends Mage_Cms_Model_Template_Filter which extends Mage_Core_Model_Email_Template_Filter).</p>
<h2>5. blockDirective</h2>
<p>Description: Prints out cms static block or any block defined by type</p>
<p>Example:<br />
<strong>{{block id=&#8221;static_block_code&#8221;}}</strong> &#8211; static block example<br />
<strong>{{block type=&#8221;core/template&#8221; template=&#8221;custom/test.phtml&#8221;}}</strong> &#8211; core/template block with defined template</p>
<p>Synonym:<br />
Mage::app()->getLayout()->createBlock(&#8216;cms/block&#8217;)->setBlockId(&#8216;static_block_code&#8217;)->toHtml();<br />
Mage::app()->getLayout()->createBlock(&#8216;core/template&#8217;)->setTemplate(&#8216;custom/test.phtml&#8217;)->toHtml();</p>
<p>Params:<br />
id = static block code; if id is set type is always cms/block<br />
type = block type, same as in layout files<br />
Any additional parameter provided will be passed on to block object (template=&#8221;custom/test.phtml&#8221; from above example will trigger ->setTemplate(&#8220;custom/test.phtml&#8221;) on that block)</p>
<h2>6. layoutDirective</h2>
<p>Description: Reads and prints out layout handle defined in your layout xml files</p>
<p>Example: <strong>{{layout area=&#8221;frontend&#8221; handle=&#8221;my_layout_handle&#8221;}}</strong><br />
&lt;sales_email_order_items&gt; layout handle defined in sales.xml is used this way in order e-mail templates for example.</p>
<p>Synonym:<br />
$layout = Mage::getModel(&#8216;core/layout&#8217;);<br />
$layout->getUpdate()->load(&#8216;my_layout_handle&#8217;);<br />
$layout->generateXml()->generateBlocks();<br />
echo $layout->getOutput();</p>
<p>Params:<br />
area = frontend or adminhtml<br />
handle = layout handle<br />
Any additional parameter provided will be passed to every block defined in layout</p>
<h2>7. configDirective</h2>
<p>Description: Prints out Magneto config value. Use predefined through Insert Variable dialog in editor.</p>
<p>Example: <strong>{{config path=&#8221;general/store_information/address&#8221;}}</strong></p>
<p>Synonym: Mage::getStoreConfig(&#8216;general/store_information/address&#8217;);</p>
<p>Params:<br />
path = config path</p>
<h2>8. customvarDirective</h2>
<p>Description: Prints out Custom Variable HTML Value (System->Custom Variables in admin). Can be easily added through Insert Variable dialog in editor.</p>
<p>Example: <strong>{{customvar code=&#8221;my_custom_var&#8221;}}</strong></p>
<p>Synonym: Mage::getModel(&#8216;core/variable&#8217;)->loadByCode(&#8216;my_custom_var&#8217;)->getValue();</p>
<p>Params:<br />
code = custom variable code</p>
<h2>9. protocolDirective</h2>
<p>Description: Prints out current protocol (http or https) for absolute links</p>
<p>Example:<br />
<strong>{{protocol}}</strong> &#8211; current protocol http or https<br />
<strong>{{protocol url=&#8221;inchoo.net/&#8221;}}</strong> &#8211; domain URL with current protocol<br />
<strong>{{protocol http=&#8221;http://inchoo.net&#8221; https=&#8221;https://inchoo.net&#8221;}}</strong> &#8211; one or another</p>
<p>Params:<br />
url = url to print with proper protocol prefix http(s)://; (for Magento links use {{store}} code)<br />
http + https = prints out https value if viewing secure page, http value otherwise<br />
store = optional store id to check secure by that store; I&#8217;m not exactly sure what&#8217;s the purpose of this</p>
<h2>10. widgetDirective</h2>
<p>Description: Prints out defined widget. Magento widgets automatically insert these codes, for manual custom usage it&#8217;s probably better to use block codes.</p>
<p>Example: <strong>{{widget type=&#8221;catalog/product_widget_new&#8221; products_count=&#8221;5&#8243; template=&#8221;catalog/product/widget/new/content/new_list.phtml&#8221;}}</strong></p>
<p>Synonym: Mage::app()->getLayout()->createBlock(&#8216;catalog/product_widget_new&#8217;, null, array(&#8216;products_count&#8217;=>5, &#8216;template&#8217;=>&#8217;catalog/product/widget/new/content/new_list.phtml&#8217;))->toHtml();</p>
<p>Params:<br />
type = widget type, similar as block type<br />
name =  determine what name block should have in layout; probably needed only if more than one same widget is used on same page<br />
Any additional parameter provided will be passed on to widget object. There is also code that accepts id param, but it currently does nothing useful.</p>
<p><strong>Please be careful when copy/pasting examples from this article directly into Magneto, readers have reported that quotes get messed up in the process sometimes. Please type in manually.</strong></p>
<p>To be continued .. Ivan</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Symfony 2 Form</title>
		<link>http://inchoo.net/tools-frameworks/symfony-2-forms/</link>
		<comments>http://inchoo.net/tools-frameworks/symfony-2-forms/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 13:24:07 +0000</pubDate>
		<dc:creator>Darko Goles</dc:creator>
				<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Tools & Frameworks]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Symfony 2]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=9153</guid>
		<description><![CDATA[NOTE: Tested on Symfony2 PR12. Might not work on later releases! If you want to use forms in Symfony 2 project there is already prepared system for that. First in &#8230;]]></description>
			<content:encoded><![CDATA[<p><strong>NOTE: Tested on Symfony2 PR12. Might not work on later releases!</strong></p>
<p>If you want to use forms in Symfony 2 project there is already prepared system for that.</p>
<p>First in &#8216;Yourname/SomethingBundle/Forms&#8217; folder create class like this:<span id="more-9153"></span></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

namespace Surgeworks\AdminBundle\Forms;

use Symfony\Component\Form\Form;
use Symfony\Component\Form\TextField;
use Symfony\Component\Form\HiddenField;

//form for Create and update information about languages
class LanguageForm extends Form{

    protected function configure() {
        $this-&gt;add(new TextField('language_name',  array('max_length'=&gt;50, 'required' =&gt; true)));
        $this-&gt;add(new TextField('language_symbol',  array('max_length'=&gt;10, 'required' =&gt; true)));
        $this-&gt;addOption('name', 'adminForm');
    }
}
</pre>
<p>then the form is ready for using inside controller:</p>
<pre class="brush: php; title: ; notranslate">
    /**
     * @extra:Route(&quot;/admin/languages/add_new&quot;, name=&quot;_admin_languages_add&quot;)
     * @extra:Template
     */
    public function addAction() {

        $form = LanguageForm::create($this-&gt;get('form.context'), 'adminForm');
</pre>
<p>After that in the same controller action bind form to your existing Entity:</p>
<pre class="brush: php; title: ; notranslate">
$request = $this-&gt;get('Request');
            $form-&gt;bind($request, $language);
</pre>
<p>Attention:  make sure that form field names is same like your Entity properties names!</p>
<p>One little tip: When field names in Entity class contain _ (underscore) character, make sure to remove that character in setter and getter function names, for example:</p>
<pre class="brush: php; title: ; notranslate">
//contains underscore character like fieldname in database
protected $status_id;
//theese methods must be without that character
    public function getStatusId() {
        return $this-&gt;status_id;
    }
    public function setStatusId($status_id) {
        $this-&gt;status_id = $status_id;
    }
</pre>
<p>For displaying form in the template there are several ways, end one of them is:</p>
<pre class="brush: php; title: ; notranslate">
        &lt;form action=&quot;#&quot; method=&quot;post&quot; id=&quot;adminForm&quot; enctype=&quot;application/x-www-form-urlencoded&quot;&gt;
    {{ form_errors(form) }}
    {% for field in form %}
        {% if not field.ishidden %}
            &lt;div class=&quot;formitem&quot;&gt;
            {{ form_errors(field) }}
            {{ form_label(field) }}
            {{ form_field(field) }}
            &lt;/div&gt;
        {% endif %}
    {% endfor %}
{{ form_hidden(form) }}
                &lt;input type=&quot;submit&quot; value=&quot;submit&quot;/&gt;
        &lt;/form&gt;
</pre>
<p>In the next article of Symfony 2 series I will write about validating form&#8217;s data in Symfony 2.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/tools-frameworks/symfony-2-forms/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to move existing WordPress site to another server</title>
		<link>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/</link>
		<comments>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 10:21:53 +0000</pubDate>
		<dc:creator>Darko Goles</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Tools & Frameworks]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=8773</guid>
		<description><![CDATA[Some experienced developers would say: &#8220;Piece of cake , I can do it for about 15 minutes!&#8221; But, is it really so easy and trivial task? It&#8217;s not so heavy, &#8230;]]></description>
			<content:encoded><![CDATA[<p>Some experienced developers would say: &#8220;Piece of cake , I can do it for about 15 minutes!&#8221;<br />
But, is it really so easy and trivial task?</p>
<p>It&#8217;s not so heavy, but you have to pay attention on some really important things and because of that,  I would like to say that it is not heavy but more sensitive task to do.</p>
<p>So, let&#8217;s start with article.</p>
<p><span id="more-8773"></span></p>
<p>Imagine this situation:<br />
We have one live site on <em>http://somedomainold.com</em> with fully functional WordPress installation, many articles, plugins installed on the site. Let&#8217;s say that current database is bigger than 500 Mb. We have access to control panel, ftp and also ssh on live server.<br />
Now we want now to copy same WordPress installation to<em> http://portal.somedomain.com</em> (into sub-domain of new domain on new server).</p>
<p>Why did I mentioned SSH?</p>
<p>Because I don&#8217;t want to download database file and then upload it again on new test server but I want to transfer whole data without downloading it.<br />
(Of course, in this case we must have ftp and ssh access to new server also).</p>
<p><em>TIP: For those that never used SSH before, I would advice that use Google for basic UNIX terminal commands, because they would need them. <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </em></p>
<p>First of all, we have to back up live site (just in case something goes wrong) and also we can use backup to transfer both database backup and files backup to new server without problems.<br />
Often it could be done through control panel of live site. If not, there are alternatives, but I will talk just about  first mentioned case for now.</p>
<p>When backup of whole site is finished, copy that &#8216;somefile.tgz&#8217; backup file into public folder either from control panel or from some root ftp access so we could download that file via URL (for example: www.somedomainold.com/somefile.tgz.  (Do not forget to delete it after transferring!)<br />
Next, we have to connect by SSH to new server with our credentials (I often use Putty for SSH access because it is relatively simple, but there are more tools available for free).<br />
Fire up Putty and enter basic connection information in sessions category: Host-name / IP address of server we will connect to and press &#8216;Open&#8217; button to start the session.</p>
<p><img class="alignleft size-full wp-image-8777" title="moving_wp1" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp1.jpg" alt="" width="600" height="183" /></p>
<p><img class="alignleft size-full wp-image-8778" title="moving_wp2" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp2.jpg" alt="" width="600" height="87" /></p>
<p>If all went right you should see console like this:</p>
<p><img class="alignleft size-full wp-image-8779" title="moving_wp3" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp3.jpg" alt="" width="600" height="89" /></p>
<p>Now it&#8217;s time to do some UNIX stuff.<br />
First we want to choose our folder on server where we will host out new wordpress installation. (Using comands “cd”, “ls” will give us that possibility).<br />
Next, we need to is &#8216;download&#8217; that backup file from old server to new. We can do it with “wget” command in terminal.</p>
<p><img class="alignleft size-full wp-image-8780" title="moving_wp4" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp4.jpg" alt="" width="600" height="40" /></p>
<p>After that we want to decompress our downloaded backup package and move site files from inside unpacked folder to our sub-domain directory and also extract our sqldump file so we could restore it on our mysql database on new server. (I didn&#8217;t mention that we should first create mysql database and assign a database user with root credentials to it and one of the easiest possibilities is to do that through control panel of new site).<br />
For file decompressing you can use &#8216;tar -zxvf yourfile.tar.gz &#8216;.</p>
<p>Because I went too deep in details, let&#8217;s back to main theme.</p>
<p>After these &#8216;few&#8217; steps, we should ensure that all is on it&#8217;s place, so finally we should finish with folder structure like this:</p>
<p>/html/portal/<br />
here should be out wordpress installation (index.php, .htaccess, folders wp-content etc.)</p>
<p>(By the way, folder &#8216;html&#8217; is in our case root domain public directory and folder name portal is our sub-domain folder where http://portal.somedomain.com points to). Why is this important? Because of .htaccess setup later in this article.</p>
<p>Next we should replace all occurrences of &#8216;http://somedomainold.com&#8217; with &#8216;http://portal.somedomain.com&#8217; in our sqldump file.<br />
First time I tried to do that with &#8216;nano&#8217; text editor in SSH terminal, but database was too big for that editor, so Putty and SSH connection crashed every time and I decided to take advantage of another tool in terminal, so I used &#8216;vi&#8217; editor for that purpose because it won&#8217;t load whole file in memory, just visible part so terminal wouldn&#8217;t crash.<br />
(Use Google to search for &#8216;find and replace with vi&#8217; tutorial).</p>
<p>After replacing domain names in sql dump file save it and exit vi editor.</p>
<p>So, now we have files of site on right place and also sql dump file ready to restore to new database.<br />
(of course while &#8216;vi&#8217; editor is open we should probably add line on top of existing sql statements: USE new_database_name; )</p>
<p>Let&#8217;s Google again for instructions how to restore sql dump file to mysql using console. There are plenty of tutorials doing that.</p>
<p>When restoring database is completed we are almost ready to start our transferred wordpress site.</p>
<p>Open up your browser and try to enter to wp-admin:  http://portal.somedomain.com/wp-admin,<br />
log in with old site credentials and check general settings for updating URLs of the site. Also check permalinks settings and save it again.<br />
If new wordpress site is not working or displays only frontpage and not other pages in menu, probably is some problem with rewrite and / or permissions in .htaccess file. So in that case – delete .htaccess file or rename it via ftp and go to wp-admin &#8211; &gt; settings &#8211; &gt; permalinks again and save it again and new .htaccess file will be created  with some wordpress lines.<br />
From my experience because our installation was in root domain before and now is on subdomain,<br />
we need to add subdomain folder name before /index.php in .htaccess file (like on image) and all should be OK.</p>
<p><img class="alignleft size-full wp-image-8781" title="moving_wp5" src="http://inchoo.net/wp-content/uploads/2011/03/moving_wp5.jpg" alt="" width="600" height="354" /></p>
<p>Maybe there are easier ways to move site, maybe there are better ways, but I felt that I have to write about that from my experience before, so thank you for reading <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/wordpress/how-to-move-existing-wordpress-site-to-another-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress 3.1 new features rundown</title>
		<link>http://inchoo.net/wordpress/wordpress-3-1-new-features-rundown/</link>
		<comments>http://inchoo.net/wordpress/wordpress-3-1-new-features-rundown/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 13:05:34 +0000</pubDate>
		<dc:creator>Zeljko Prsa</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5959</guid>
		<description><![CDATA[Writers, developers rejoice for some new features like Internal linking, Front-end Admin Bar and some pretty good advancements on taxonomy queries and post templates. Hit the button, read the rundown. Features expected &#8230;]]></description>
			<content:encoded><![CDATA[<p>Writers, developers rejoice for some new features like <strong><a href="http://inchoo.net/wordpress/wordpress-3-1-new-features-rundown">Internal linking</a></strong>, <strong>Front-end Admin Bar</strong> and some pretty good advancements on taxonomy queries and post templates. <a href="http://inchoo.net/wordpress/wordpress-3-1-new-features-rundown/">Hit the button</a>, read the rundown.<br />
<span id="more-5959"></span><br />
Features expected in WordPress 3.1:</p>
<p><strong>Internal linking</strong> &#8211; After years of expectations WordPress will gain more on CMS functionality then ever and make wordpress even more SEO efficient.</p>
<p> Writers will now have the ability to browse thru posts and pages from the admin and add the internal links directly while writing the post. Guess I&#8217;ll stop using dedicated desktop apps that don&#8217;t support that.</p>
<p><strong>Front-End Admin Bar</strong> &#8211; Having the back-end on the front-end in terms of a on-top placed administration bar will provide easy access to the dashboard, post writing etc. </p>
<p>This would come in handy for multisite wordpress sites and for those who like having some bar sitting on top <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Judging by the community feedback it&#8217;s a very welcomed feature. </p>
<p><strong>Admin Screens on AJAX</strong> &#8211; This one will allow reordering/sorting columns  for the admin interface. One great application of this is with the sorting, pagination and most importantly searching. Hope this one gets applied to comments also but as they state on their dev blog &#8220;it&#8217;s still being reviewed for inclusion&#8221;.</p>
<p>Next presented features are more interesting to developers and advanced users since they bring WordPress even closer to that CMS flavor:</p>
<p><strong>Advanced taxonomy queries</strong> &#8211; The taxonomy queries, as announced, should be easier to create and enable sorting posts and pages a lot easier. I guess that recreating multiple taxonomies through categories should be a thing of the past.</p>
<p>Something like: &#8220;I&#8217;d like a list of all your cars without the stereo please&#8221;. &#8220;Yes sir, here you are.&#8221; but without wordpress actually talking with the user <img src='http://inchoo.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Post templates / Post styles</strong> &#8211; This feature brings WordPress a few steps closer to an actual CMS with the ability for the user to select a pre-defined post template or post style, carefully prepared by a developer and accessible via drop-down. </p>
<p>All of these improvements are also accompanied with bug fixes and of course, some UI changes and enhancements. This will also be the last version to support PHP 4.</p>
<p>The release is scheduled for December 15, a month after the Beta release.</p>
<p>You can read their full process and scope at <a href="http://wpdevel.wordpress.com/2010/09/03/process-and-scope-for-3-1-part-i/">their dev blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/wordpress/wordpress-3-1-new-features-rundown/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Turning Magento into CMS only (ditching shop functionality)</title>
		<link>http://inchoo.net/ecommerce/magento/administration-magento/turning-magento-into-cms-only-ditching-shop-functionality/</link>
		<comments>http://inchoo.net/ecommerce/magento/administration-magento/turning-magento-into-cms-only-ditching-shop-functionality/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 17:41:37 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[Magento]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=10200</guid>
		<description><![CDATA[For the last two days I had most interesting time with Magento. I was able to took some time and try out some things that I were planning to do &#8230;]]></description>
			<content:encoded><![CDATA[<p>For the last two days I had most interesting time with Magento. I was able to took some time and try out some things that I were planning to do ever since I started working with Mage. Everyone in Magento development know how flexible (extensible) Magento is. Personally, my favorite feature is the one related to layouts and blocks, how they are built with xml files and so on. Anyhow back to my idea: Strip Magento to the core by ditching entire shop functionality. <span id="more-10200"></span></p>
<p>Why would I wanna do this? As I said, I like the flexibility and the power built in, so why not make my self a WordPress like CMS based on Magento core. </p>
<p>Took me two days to get satisfying results as you can see on the image. I ended up having only 9 modules under app/code/core/Mage folder. </p>
<p><a href="http://activecodeline.net/wp-content/uploads/2009/08/ma1.png"><img src="http://activecodeline.net/wp-content/uploads/2009/08/ma1-300x220.png" alt="ma1" title="ma1" width="300" height="220" class="alignnone size-medium wp-image-861" /></a></p>
<p><a href="http://activecodeline.net/wp-content/uploads/2009/08/ma2b.png"><img src="http://activecodeline.net/wp-content/uploads/2009/08/ma2b-300x236.png" alt="ma2b" title="ma2b" width="300" height="236" class="alignnone size-medium wp-image-866" /></a></p>
<p><a href="http://activecodeline.net/wp-content/uploads/2009/08/screen_1.png"><img src="http://activecodeline.net/wp-content/uploads/2009/08/screen_1-300x197.png" alt="screen_1" title="screen_1" width="300" height="197" class="alignnone size-medium wp-image-862" /></a></p>
<p>I kept the Customers module since it integrates full registration and authentication of users. After deleting sufficient files (controllers, blocks, modules), size of system drastically reduced (which is to be expected). During this process I noticed several places where some module (singleton) calls are coded into core module, although they should not be. After few deleted lines of code and minor logic change to patch those &#8220;coded&#8221; values, system is working without any noticeable issues (for now <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>Next stop, traverse trough all of the 9 remaining modules and fix the rest of dependency code that might point to removed modules. And final step, fully remove Prototype from system and throw in jQuery. Should be trivial on frontend since I am left only with CMS static pages and AccountController.  </p>
<p>I have decided I will not distribute this &#8220;modified&#8221; version of Magento, due to possible implications on subject of legality. Hopefully, no hard feelings on readers side <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . This is merely my private little project from which I will continue building my own CMS for my own private use.</p>
<p>Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/administration-magento/turning-magento-into-cms-only-ditching-shop-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento CMS syntax – part1</title>
		<link>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part1/</link>
		<comments>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part1/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 22:59:59 +0000</pubDate>
		<dc:creator>Ivan Weiler</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=2505</guid>
		<description><![CDATA[Every Magento user noticed that there is special {{magentocode}} syntax available in cms pages and blocks. We traced a bit to find out which params are available and what exactly &#8230;]]></description>
			<content:encoded><![CDATA[<p>Every Magento user noticed that there is special {{magentocode}} syntax available in cms pages and blocks. We traced a bit to find out which params are available and what exactly they do.</p>
<p><span id="more-2505"></span></p>
<p>As strange as this may sound, processor class that gets called is Mage_Core_Model_Email_Template_Filter located at app/code/core/Mage/Core/Model/Email/Template/Filter.php .</p>
<p>There are also some interesting directives in superclass Varien_Filter_Template, but if i&#8217;m not mistaken, none of them can be used.</p>
<p>There are six replacement codes  that can be used and each triggers its equivalent Directive function:</p>
<p>skinDirective<br />
mediaDirective<br />
htmlescapeDirective<br />
storeDirective<br />
blockDirective<br />
layoutDirective</p>
<p>I&#8217;ll start with easier and most commonly used and continue with advanced ones in part two of this article.</p>
<p><strong>1. skinDirective</strong></p>
<p>Description: Used to retrieve path of skin folder and its files, theme fallback respected<br />
Example: {{skin url=&#8217;images/image.jpg&#8217; _theme=&#8217;blank&#8217;}}<br />
Synonym: Mage::getDesign()-&gt;getSkinUrl($params['url'], $params)<br />
Params:<br />
url = empty or relative file path<br />
_theme = alternative theme, fallbacks if file not exist<br />
_package = alternative package<br />
_area = alternative area(frontend,adminhtml)<br />
_type, _default etc. = nothing useful, somebody please correct me if i&#8217;m wrong <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>2. mediaDirective</strong></p>
<p>Description: Used to retrieve path of root/media folder and its files<br />
Example: {{media url=&#8217;image.jpg&#8217;}}<br />
Synonym: Mage::getBaseUrl(&#8216;media&#8217;) . $params['url']<br />
Params:<br />
url = empty or relative file path</p>
<p><strong>3. htmlescapeDirective</strong></p>
<p>Description: Used to escape special html chars<br />
Example: {{htmlescape var=&#8217;&lt;a href=&#8221;www.inchoo.net&#8221;&gt;inchoo&lt;/a&gt;&lt;b&gt;inchoo&lt;/b&gt;&lt;i&gt;inchoo&lt;/i&gt;&#8217; allowed_tags=&#8217;b'}}<br />
Synonym: Mage::helper(&#8216;core&#8217;)-&gt;htmlEscape($params['var'], $params['allowed_tags'])<br />
Params:<br />
var = string to escape<br />
allowed_tags = comma-separated list of allowed tags</p>
<p><strong>4. storeDirective</strong></p>
<p>Description: Used to build magento routes and custom urls<br />
Example: {{store url=&#8217;customer/account&#8217; _query_a=&#8217;8&#8242;}}<br />
Synonym: Mage::getUrl($params['url'], $params);<br />
Params:<br />
url = magento routers url<br />
direct_url = normal url, appended to baseurl<br />
_query_PARAMNAME = adds query param, for example _query_a=&#8217;8&#8242; adds a=8 to url<br />
_fragment = adds fragment, for example #comments<br />
_escape = escapes &#8220;,&#8217;,&lt;,&gt;<br />
custom = if using magento route url param, every custom param added will be appended like /a/8/b/10</p>
<p>I probably missed something in this last one, but it&#8217;s very late and i&#8217;m tired of poking through Magento <img src='http://inchoo.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To be continued ..</p>
<p><strong>EDIT: <a href="http://inchoo.net/ecommerce/magento/magento-cms-syntax-part2/">Magento CMS syntax – part2</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/magento-cms-syntax-part1/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Magento FLIR</title>
		<link>http://inchoo.net/ecommerce/magento/magento-flir/</link>
		<comments>http://inchoo.net/ecommerce/magento/magento-flir/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:22:02 +0000</pubDate>
		<dc:creator>Ivan Weiler</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=2481</guid>
		<description><![CDATA[Facelift Image Replacement (or FLIR, pronounced fleer) is an image replacement script that dynamically generates image representations of text on your web page in fonts that otherwise might not be &#8230;]]></description>
			<content:encoded><![CDATA[<p>Facelift Image Replacement (or FLIR, pronounced fleer) is an image replacement script that dynamically generates image representations of text on your web page in fonts that otherwise might not be visible to your visitors. Let&#8217;s see how it behaves in Magento.</p>
<p><span id="more-2481"></span></p>
<p>1. Download FLIR from <a href="http://facelift.mawhorter.net/" target="_blank">FLIR homepage</a>. I was using latest 1.2 stable for this article because of simplicity, but if you try you&#8217;ll find out that 2.0 beta also works great but requires little more configuration.</p>
<p>2. Unpack FLIR content (cache,fonts,etc.) inside skin/frontend/default/default/facelift<br />
I think it makes perfect sense to put it into skin folder.</p>
<p>3. Open app/design/frontend/yourpackage/yourtheme/template/page/html/head.phtml and append</p>
<p>&lt;script language=&#8221;javascript&#8221; src=&#8221;&lt;?php echo $this-&gt;getSkinUrl(&#8216;facelift/flir.js&#8217;) ?&gt;&#8221;&gt;&lt;/script&gt;</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
document.observe(&#8220;dom:loaded&#8221;, function() {<br />
FLIR.init({ path: &#8216;&lt;?php echo $this-&gt;getSkinUrl(&#8216;facelift/&#8217;) ?&gt;&#8217; }, new FLIRStyle({ mode: &#8216;wrap&#8217; }) );<br />
FLIR.auto();<br />
});<br />
&lt;/script&gt;</p>
<p>If your php error reporting isn&#8217;t disabled add error_reporting(0); somewhere on top of config-flir.php. This is main config file from which you can define options and custom fonts, so examine it.</p>
<p>Refresh your Magento store and you <a href="http://inchoo.net/wp-content/uploads/2009/06/magento-flir-screenshot.jpg" target="_blank">should see the result</a>.</p>
<p>flir.js can also be alternatively included from layout files inside head block<br />
&lt;reference name=&#8221;head&#8221;&gt;<br />
&lt;action method=&#8221;addItem&#8221;&gt;&lt;type&gt;skin_js&lt;/type&gt;&lt;name&gt;facelift/flir.js&lt;/name&gt;&lt;/action&gt;<br />
&lt;/reference&gt;</p>
<p>There is nice <a href="http://facelift.mawhorter.net/quick-start/" target="_blank">Quick Start Guide</a> and <a href="http://docs.facelift.mawhorter.net/" target="_blank">Documentation</a> available from <a href="http://facelift.mawhorter.net/" target="_blank">FLIR homepage</a>, so i won&#8217;t go in details on some advanced FLIR settings, but here are few examples:</p>
<p>//pass selectors as comma separated list<br />
FLIR.auto(&#8216;h5,h4&#8242;);<br />
//pass an array of selectors<br />
FLIR.auto( [ 'h4', 'h5' ] );<br />
//replace manually with custom options<br />
FLIR.replace( &#8216;div.box h4&#8242; , new FLIRStyle({ mode: &#8216;wrap&#8217; , css: {&#8216;font-family&#8217;:'arial&#8217;} }) );<br />
//prototype way<br />
$$(&#8216;div.box h4&#8242;).each( function(el) { FLIR.replace(el);  } );</p>
<p>Cya.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/magento-flir/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simple random banner rotator in Magento using static blocks</title>
		<link>http://inchoo.net/ecommerce/magento/simple-random-banner-rotator-in-magento-using-static-blocks/</link>
		<comments>http://inchoo.net/ecommerce/magento/simple-random-banner-rotator-in-magento-using-static-blocks/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 12:33:56 +0000</pubDate>
		<dc:creator>Tomas Novoselic</dc:creator>
				<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[blocks]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=1534</guid>
		<description><![CDATA[This is my first post here and I&#8217;ll write about my first challenge regarding Magento since I came to work at Inchoo. As title says I&#8217;ll show you how to &#8230;]]></description>
			<content:encoded><![CDATA[<p>This is my first post here and I&#8217;ll write about my first challenge regarding Magento since I came to work at Inchoo.</p>
<p>As title says I&#8217;ll show you how to implement simple random banner rotation functionality in Magento using static blocks.<span id="more-1534"></span></p>
<p>First of all, upload images you want to use in &#8220;<strong>/skin/frontend/YOUR</strong><strong>_INTERFACE</strong><strong>/YOUR_THEME/images/</strong>&#8221;</p>
<p>In admin panel add N static blocks (&#8220;CMS-&gt;Static Blocks-&gt;Add new block&#8221;)</p>
<p>For identifier field use something like this:</p>
<pre class="brush: php; title: ; notranslate">
SomeBannerIdentifierName_1
SomeBannerIdentifierName_2
SomeBannerIdentifierName_3
...
SomeBannerIdentifierName_N
</pre>
<p>For each content use this:</p>
<pre class="brush: php; title: ; notranslate">&lt;a href=&quot;ADDRESS_YOU_WANT_TO_USE&quot;&gt;&lt;img src=&quot;{{skin url=images/media/IMAGE_YOU_WANT_TO_USE.jpg}}&quot; alt=&quot;Some alt text&quot;  /&gt;&lt;/a&gt;
</pre>
<p><em>Please note that you are not restricted only to images, you could use text, video or whatever you want here, but I&#8217;ll focus on images with links as title says.</em></p>
<p>Now when all is set, make new file called banner_rotator.phtml in  &#8220;<strong>/app/design/frontend/YOUR_INTERFACE/YOUR_THEME/template/callouts/banner_rotator.phtml</strong>&#8221;</p>
<p>And use this code inside:</p>
<pre class="brush: php; title: ; notranslate">
&lt; ?php
echo $this-&gt;getLayout()-&gt;createBlock('cms/block')-&gt;setBlockId('SomeBannerIdentifierName_'.mt_rand(1, N))-&gt;toHtml() ?&gt;
</pre>
<p>*<em>Make sure you replace &#8220;N&#8221; with highest number of your static block</em></p>
<p>In order to show this block, you should be familiar with Magento layouts.<br />
Since that is out of scope for this article, I&#8217;ll show you how to put it below the content on cms pages.</p>
<p>Open &#8220;<strong>/app/design/frontend/YOUR</strong><strong>_INTERFACE</strong><strong>/YOUR_THEME/layout/cms.xml</strong>&#8221;</p>
<p>[*] Put this line:</p>
<pre class="brush: php; title: ; notranslate">
&lt;block type=&quot;core/template&quot; name=&quot;home.banner.rotator&quot; template=&quot;callouts/banner_rotator.phtml&quot;/&gt;
</pre>
<p>Find this:</p>
<pre class="brush: php; title: ; notranslate">
&lt;cms_page&gt;
&lt;reference name=&quot;content&quot;&gt;
&lt;block type=&quot;cms/page&quot; name=&quot;cms_page&quot;/&gt;

P U T  [*] H E R E  ! ! !

&lt;/reference&gt;
&lt;/cms_page&gt;
</pre>
<p>Unfortunately I can&#8217;t be more specific so feel free to ask me anything.</p>
<p>UPDATE:</p>
<p>If you want this to work for specific page such as homepage do this:</p>
<p>Instead of here <strong>/app/design/frontend/YOUR</strong><strong>_INTERFACE</strong><strong>/YOUR_THEME/layout/cms.xml</strong><br />
put this:</p>
<pre class="brush: php; title: ; notranslate">
&lt;reference code=&quot;content&quot;&gt;
&lt;block type=&quot;core/template&quot; name=&quot;home.banner.rotator&quot; template=&quot;callouts/banner_rotator.phtml&quot;/&gt;
&lt;/reference&gt;
</pre>
<p>into your Admin panel&#8217;s CMS->Pages->Your page->Design->Layout Update XML field<br />
Everything else is the same&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/simple-random-banner-rotator-in-magento-using-static-blocks/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Custom Magento CMS page layout</title>
		<link>http://inchoo.net/ecommerce/magento/custom-cms-page-layout/</link>
		<comments>http://inchoo.net/ecommerce/magento/custom-cms-page-layout/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:35:59 +0000</pubDate>
		<dc:creator>Ivan Weiler</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=1192</guid>
		<description><![CDATA[Last week I had a request to add new custom layout for few cms pages in one Magento shop. It&#8217;s really useful for different static pages of your shop. First &#8230;]]></description>
			<content:encoded><![CDATA[<p>Last week I had a request to add new custom layout for few cms pages in one Magento shop. It&#8217;s really useful for different static pages of your shop.  <span id="more-1192"></span>First create extension with only  config file in it:  app/code/local/Inchoo/AdditionalCmsPageLayouts/etc/config.xml<br />
<code><br />
&lt;?xml version="1.0"?&gt;<br />
&lt;config&gt;<br />
 &lt;global&gt;<br />
  &lt;page&gt;<br />
   &lt;layouts&gt;<br />
    &lt;custom_static_page_one&gt;<br />
     &lt;label&gt;Custom static page 1&lt;/label&gt;<br />
     &lt;template&gt;page/custom-static-page-1.phtml&lt;/template&gt;<br />
    &lt;/custom_static_page_one&gt;<br />
   &lt;/layouts&gt;<br />
  &lt;/page&gt;<br />
 &lt;/global&gt;<br />
&lt;/config&gt;<br />
</code></p>
<p>Then activate it:  app/etc/modules/Inchoo_AdditionalCmsPageLayouts.xml<br />
<code><br />
&lt;?xml version="1.0"?&gt;<br />
&lt;config&gt;<br />
 &lt;modules&gt;<br />
  &lt;Inchoo_AdditionalCmsPageLayouts&gt;<br />
   &lt;codePool&gt;local&lt;/codePool&gt;<br />
   &lt;active&gt;true&lt;/active&gt;<br />
  &lt;/Inchoo_AdditionalCmsPageLayouts&gt;<br />
 &lt;/modules&gt;<br />
&lt;/config&gt;<br />
</code></p>
<p>Add your page/custom-static-page-1.phtml template file (or copy some default one for start) and you&#8217;re done <img src='http://inchoo.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   There is also <a href="http://www.magentocommerce.com/wiki/adding_cms_layout_templates" target="_blank">tutorial about this on Magento Wiki</a>. However i don&#8217;t like approach of duplicating and overriding Mage files from /local, if it can be avoided, so i decided to write this small and useful example of adding or overriding default Magento settings through separated config files. And yes, Magento values can be overridden this way.  Default layouts config can be found in app/code/core/Mage/<span class="search_hit">Cms</span>/etc/config.xml along with used xml code structure, so check it out.  Thank you for listening!</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/ecommerce/magento/custom-cms-page-layout/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Application Architecture How To</title>
		<link>http://inchoo.net/tools-frameworks/application-architecture-how-to/</link>
		<comments>http://inchoo.net/tools-frameworks/application-architecture-how-to/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 20:31:21 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Tools & Frameworks]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=1144</guid>
		<description><![CDATA[Knowing how to program does not mean you know how to develop. Once you reach the point where you know most, if not all, ins and outs of your programming &#8230;]]></description>
			<content:encoded><![CDATA[<p>Knowing how to program does not mean you know how to develop. Once you reach the point where you know most, if not all, ins and outs of your programming language, then it&#8217;s time to move on. Move on to stuff like programming patterns and application architecture (design). These terms are basically language independent, meaning if you are good at application architecture and know your way around common programming patterns then you reach the point where programming language is almost irrelevant. Good and extensible architecture is good no matter what programming language you use.<span id="more-1144"></span></p>
<p>Internet is full of &#8220;your language sucks, mine is better&#8221;, &#8220;your language framework sucks, mine is better&#8221;. To be honest, I&#8217;m sick of it. The way I see it; C#, python, php, ruby, java&#8230; are all great and powerful languages. Using one over other will not make you write great application just like that. There is only one thing I consider advantage in web development, and that is using interpreted language over compiled one. This however is merely my preference.</p>
<p>Here&#8217;s a link to some pretty useful material on application architecture, <a href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586">Application Architecture Guide 2.0</a>. Architecture Guide 2.0 is about designing applications on the .NET Platform.</p>
<p>Here is another one for web apps, <a href="http://apparch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=19802">Web Architecture Pocket Guide</a>.</p>
<p>I&#8217;m a PHP developer, however I like to throw a few lines of code in C# from time to time. Although books are related to Microsoft .Net platform, if you are not short sighted (in terms of technology), I&#8217;m sure you will find these books useful reading whatever platform you might be using.</p>
<p><object width="432" height="364" data="http://images.soapbox.msn.com/flash/soapbox1_1.swf" type="application/x-shockwave-flash"><param name="id" value="qfkcr44k" /><param name="flashvars" value="c=v&amp;v=e615c682-0b89-4c90-8b31-d7b5dbf40283&amp;ifs=true&amp;fr=shared" /><param name="src" value="http://images.soapbox.msn.com/flash/soapbox1_1.swf" /><param name="allowfullscreen" value="true" /></object>&lt;a href=&#8221;http://video.msn.com/?playlist=videoByUuids:uuids:e615c682-0b89-4c90-8b31-d7b5dbf40283&amp;#038;showPlaylist=true&#8221; mce_href=&#8221;http://video.msn.com/?playlist=videoByUuids:uuids:e615c682-0b89-4c90-8b31-d7b5dbf40283&amp;amp;showPlaylist=true&#8221; target=&#8221;_new&#8221; title=&#8221;Train the Trainer &#8211; Application Architecture Guide 2.0&#8243;&gt;Video: Train the Trainer &#8211; Application Architecture Guide 2.0&lt;/a&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/tools-frameworks/application-architecture-how-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress: advantages and disadvantages?</title>
		<link>http://inchoo.net/wordpress/wordpress-as-cms/</link>
		<comments>http://inchoo.net/wordpress/wordpress-as-cms/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 19:21:58 +0000</pubDate>
		<dc:creator>Tomislav Bilic</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[cms]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=72</guid>
		<description><![CDATA[Couple of days ago I posted a question to LinkedIn Q&#38;A. It was for those individuals/companies who use WordPress to run their main site. I was interested to know why &#8230;]]></description>
			<content:encoded><![CDATA[<p>Couple of days ago I posted a <a title="Wordpress as CMS?" href="http://www.linkedin.com/answers/technology/web-development/TCH_WDD/308438-15378406" target="_blank">question to LinkedIn Q&amp;A</a>. It was for those individuals/companies who use WordPress to run their main site. I was interested to know why do they find <a title="Wordpress as CMS" href="http://inchoo.net/services/custom-wordpress-development/">WordPress to be their chosen one CMS</a>. The users were supposed to name top 3 key elements in WP that they find most important for your site.  That was the easy part to most of them. Harder part was to name top 3 key elements they miss in WP, but have a feeling it would be important for their site.</p>
<p>There were some really interesting replies.</p>
<p><span id="more-72"></span></p>
<h2>Advantages:</h2>
<ul>
<li>It&#8217;s free</li>
<li>Fast to setup</li>
<li>Easy to learn</li>
<li>Lots of plugins and templates available so you don&#8217;t need to be a PHP guru or designer to have a nice looking site with lots of features.</li>
<li>Easy to modify page templates allowing you to customize the presentation layers to your heart content</li>
<li>Large and active open source community community of people developing add-ons, plugins, themes frequently</li>
<li>Easy to host with simple requirements</li>
</ul>
<h2>Disadvantages:</h2>
<ul>
<li> Many of the themes have a tendency to look the same or similar.</li>
<li>PHP&#8217;s track record for security is pretty bad.</li>
<li>Database queries may be very heavy</li>
<li>It isn&#8217;t a full CMS product &#8211; which is fine for a lot of sites &#8211; but if your site is moving a long way away from something based around a blog then you might find it starts to creak a bit!</li>
</ul>
<p><a title="Wordpress as CMS?" href="http://www.linkedin.com/answers/technology/web-development/TCH_WDD/308438-15378406" target="_blank">http://www.linkedin.com/answers/technology/web-development/TCH_WDD/308438-15378406</a></p>
<p>Many of the people think that WordPress is still just for blogging and if you want some decent CMS, you should consider <a title="Drupal as WordPress alternative" href="http://drupal.org/" target="_blank">Drupal</a>. This quote summarizes those thoughts:</p>
<blockquote><p>Most of the disadvantages come in when someone tries to warp it outside of being a blog, when they stack on a ton of plugins that try to make WordPress take the place of Joomla or Drupal. It doesn&#8217;t. When people try to make it do that, it does it to a lower performance level, and has more sustainability problems.</p></blockquote>
<p>What are your thoughts about this topic. Feel free to post the comment here or if you are a LinkedIn user, you can reply there.</p>
]]></content:encoded>
			<wfw:commentRss>http://inchoo.net/wordpress/wordpress-as-cms/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

