<?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>eCommerce | Nerdpress.org</title>
	<atom:link href="https://nerdpress.org/category/ecommerce/feed/" rel="self" type="application/rss+xml" />
	<link>https://nerdpress.org</link>
	<description>...dev, tech problems and solutions.</description>
	<lastBuildDate>Fri, 05 Jun 2020 07:02:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Updating OXID eShop to 6.2.0</title>
		<link>https://nerdpress.org/2020/04/20/updating-oxid-eshop-to-6-2-0/</link>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Mon, 20 Apr 2020 11:11:49 +0000</pubDate>
				<category><![CDATA[OXID]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=2910</guid>

					<description><![CDATA[<p>Oxid eShop 6.2 is released and its a good step forward to a modernized codebase, embracing best practices and more symfony-like patterns. Since i do a lot of coding with symfony besides OXID i was very exited about this new version. So i gave it a try and updated one of the shops i maintain. &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2020/04/20/updating-oxid-eshop-to-6-2-0/" class="more-link">Continue reading<span class="screen-reader-text"> "Updating OXID eShop to 6.2.0"</span></a></p>
The post <a href="https://nerdpress.org/2020/04/20/updating-oxid-eshop-to-6-2-0/">Updating OXID eShop to 6.2.0</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="https://oxidforge.org/en/oxid-eshop-version-6-2-0.html" class="aioseop-link">Oxid eShop 6.2</a> is released and its a good step forward to a modernized codebase, embracing best practices and more symfony-like patterns.</p>



<p>Since i do a lot of coding with symfony besides OXID i was very exited about this new version.  So i gave it a try and updated one of the shops i maintain. (<s>Its not public yet, i will update this post once we launch</s>, Its launched by now, yay: <a href="https://www.cafelehmitz-photobooks.com/">https://www.cafelehmitz-photobooks.com/</a>).</p>



<p>I basically followed this upgrade guide: <a href="https://docs.oxid-esales.com/eshop/de/6.2/installation/update/von-6.1.x-auf-6.2.0-aktualisieren.html">https://docs.oxid-esales.com/eshop/de/6.2/installation/update/von-6.1.x-auf-6.2.0-aktualisieren.html</a><br><br>So here is my experience updating OXID eShop 6.1.5 to 6.2.0:</p>



<span id="more-2910"></span>



<p><strong>0. Update the Shop to latest 6.1 version and and also update all used modules to their latest version.</strong><br>Since some sloppy things that were tolerated in modules before are now not tolerated anymore, we need to update the modules.<br><code>OXID 6.2. will throw errors when your modules metadata.php uses non strict code like constrains/contraints typo or wrong version number, which was tolerated before 6.2</code>.<br><br>So to avoid errors like:<br><code>Module directory of /var/www/html/source/modules/ab/htmlmin could not be installed due to Metadata version 2 is not supported</code><br><br>&#8230;upgrade your modules and contact the maintainers if this issues are not fixed yet in their modules.<br></p>



<p><strong>1. Update the composer.json</strong><br><code>"require": {<br>    "oxid-esales/oxideshop-metapackage-ce": "v6.2.0"<br> },<br> "require-dev": {<br>    "oxid-esales/testing-library": "^v7.0.1",<br>    "incenteev/composer-parameter-handler": "^v2.0.0",<br>    "oxid-esales/oxideshop-ide-helper": "^v3.1.2",<br>    "oxid-esales/azure-theme": "^v1.4.2"<br> }</code></p>



<p><strong>2. Clear tmp dir: </strong><br><code>rm -rf source/tmp/*</code></p>



<p><strong>3. Run composer update</strong><br><code>composer update --no-plugins --no-scripts --no-dev</code></p>



<p><strong>4. Copy overridablefunctions.php</strong><br><code>cp vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php source/</code></p>



<p><strong>5. Run the composer scripts</strong><br><code>composer update --no-dev</code></p>



<p><strong>6. Run DB migrations</strong> <br>&#8230;there were no migrations in my case, tough.<br><code>vendor/bin/oe-eshop-db_migrate migrations:migrate</code></p>



<p><strong>7.  Migrate or <a href="https://docs.oxid-esales.com/eshop/de/6.2/installation/update/von-6.1.x-auf-6.2.0-aktualisieren.html#schritt-aktualisierung-der-modulkonfigurationen" class="aioseop-link">update the modules</a></strong><br>Require the module update helper component:<br>  <code> composer require --no-update oxid-esales/oxideshop-update-component</code><br>And run update:<br><code>composer update --no-dev --no-interaction</code><br>However this wasnt working and it removed all dev libraries and led to this error:<br><code>PHP Warning:  Uncaught ErrorException: require(/var/www/html/vendor/composer/../ralouphie/getallheaders/src/getallheaders.php): failed to open stream: No such file or directory in /var/www/html/vendor/composer/autoload_real.php:73</code></p>



<p>So i had to adjust the command and omit the &#8211;no-dev option.<br>    <code>composer update --no-interaction</code></p>



<p><strong>8. Run creation of standard module yaml configuration</strong><br><code>vendor/bin/oe-console oe:oxideshop-update-component:install-all-modules</code></p>



<p><strong>9. Transfer module data from DB into new yaml configuration</strong><br><code>vendor/bin/oe-console oe:oxideshop-update-component:transfer-module-data </code></p>



<p><strong>10. Delete module configuration from DB</strong><br><code>vendor/bin/oe-console oe:oxideshop-update-component:delete-module-data-from-database</code></p>



<p><strong>11. Activate module with new configuration</strong><br><code>vendor/bin/oe-console oe:module:apply-configuration</code></p>



<p><strong>12. Remove module Updater again</strong><br><code>composer remove --no-update oxid-esales/oxideshop-update-component<br>composer update --no-interaction</code><br>Same here: this worked only by omitting the &#8211;no-dev option.</p>



<p><strong>13. Remove xd_receiver.htm</strong><br><code>rm source/xd_receiver.htm</code></p>



<p><strong>14. Once all was done clear the cache again</strong><br><code>rm -rf source/tmp/*</code><br>You might experience an error with<a href="https://github.com/OXIDprojects/ocb_cleartmp" class="aioseop-link"> oxid-community/ocbcleartmp</a> module.<br> <code>[2020-04-14 17:40:16] OXID Logger.ERROR: Function 'isEEVersion' does not exist or is not accessible! (OxidEsales\Eshop\Application\Controller\Admin\NavigationController)</code></p>



<p>So clear tmp and deactivate the module and reactivate it again, solved this.<br>The module was still using not exisiting code from cache.</p>



<p>Thats it. <strong>Nice!</strong><br>Upgrading went almost smooth.<br>Now im looking forward to use DependencyInjection, Custom Commands and Doctrine QueryBuilder in this updated shop.</p>The post <a href="https://nerdpress.org/2020/04/20/updating-oxid-eshop-to-6-2-0/">Updating OXID eShop to 6.2.0</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hersteller Url umnennen in OXID eShop</title>
		<link>https://nerdpress.org/2019/03/27/hersteller-url-umnennen-in-oxid-eshop/</link>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Wed, 27 Mar 2019 09:57:21 +0000</pubDate>
				<category><![CDATA[OXID]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=2861</guid>

					<description><![CDATA[<p>Standardmässig macht der OXID V6* Shop die Marken bzw Hersteller Urls so: url.shop/nach-hersteller/hersteller-xyz Möchte man &#8220;Nach Hersteller&#8221; umnennen in zB &#8220;Marken&#8221; muss man folgendes machen: Im Code: Ändere die Translation Konstante BY_MANUFACTURER: source/Application/translations/de/lang.php:755 source/Application/translations/en/lang.php:755 in ZB: 2. Im Shop Admin Bereich: Stammdaten -&#62; Grundeinstellungen -&#62; SEO Seo URLs neu berechnen Cache leeren</p>
The post <a href="https://nerdpress.org/2019/03/27/hersteller-url-umnennen-in-oxid-eshop/">Hersteller Url umnennen in OXID eShop</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>Standardmässig macht der OXID V6* Shop die Marken bzw Hersteller Urls so:</p>



<p><em>url.shop/nach-hersteller/hersteller-xyz</em></p>



<p>Möchte man &#8220;Nach Hersteller&#8221; umnennen in zB &#8220;Marken&#8221; muss man folgendes machen:</p>



<span id="more-2861"></span>



<ol class="wp-block-list"><li>Im Code:</li></ol>



<ul class="wp-block-list"><li>Ändere die Translation Konstante <strong>BY_MANUFACTURER</strong>:<br><em> source/Application/translations/de/lang.php:755<br> source/Application/translations/en/lang.php:755</em><br></li></ul>



<p>in ZB:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"> <span class="hljs-string">'BY_MANUFACTURER'</span> =&gt; <span class="hljs-string">'Marken'</span>,</code></span></pre>


<p>2. Im Shop Admin Bereich:</p>



<ul class="wp-block-list"><li>Stammdaten -&gt; Grundeinstellungen -&gt; SEO</li><li>Seo URLs neu berechnen</li><li>Cache leeren</li></ul>The post <a href="https://nerdpress.org/2019/03/27/hersteller-url-umnennen-in-oxid-eshop/">Hersteller Url umnennen in OXID eShop</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Check if a country is an EU country in Magento</title>
		<link>https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/</link>
					<comments>https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/#comments</comments>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Sat, 06 Oct 2012 14:25:12 +0000</pubDate>
				<category><![CDATA[magento]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=2266</guid>

					<description><![CDATA[<p>I you ever wondered how you can check if a Country, resp. a Country Code, is in the EU, i did the following: Magento has a config value: eu_countries that lists all Countries of the EU. You can find it in the backend under: Configuration -> General -> Country Options. Against this list you can &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/" class="more-link">Continue reading<span class="screen-reader-text"> "Check if a country is an EU country in Magento"</span></a></p>
The post <a href="https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/">Check if a country is an EU country in Magento</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>I you ever wondered how you can check if a Country, resp. a Country Code, is in the EU, i did the following:</p>
<p>Magento has a config value: eu_countries that lists all Countries of the EU.</p>
<p>You can find it in the backend under: <br /><em>Configuration -> General -> Country Options</em>.</p>
<p>Against this list you can validate your country code, f.e. that you got in an billing or shipping address of an order.</p>
<p><span id="more-2266"></span></p>
<pre class="brush: php; title: ; notranslate">
$address = $order-&gt;getBillingAddress()-&gt;getData();
$eu_countries = Mage::getStoreConfig('general/country/eu_countries');
$eu_countries_array = explode(',',$eu_countries);
if(in_array($address&#x5B;'country_id'], $eu_countries_array)){
//do something useful:
//for example show a tax hint like this german one: 'steuerfreie innergemeinschaftliche Lieferung'
}
</pre>
<p>Pretty simple, once you know!</p>
<p>Do you know any other way?</p>
<p>Let me know!</p>The post <a href="https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/">Check if a country is an EU country in Magento</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2012/10/06/check-if-a-country-is-an-eu-country-in-magento/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>OXID eshop routing</title>
		<link>https://nerdpress.org/2011/11/14/oxid-eshop-routing/</link>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Mon, 14 Nov 2011 10:53:05 +0000</pubDate>
				<category><![CDATA[OXID]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=1949</guid>

					<description><![CDATA[<p>If you wonder about routing in OXID eshops or how the URL structure is here are some hints: OXIDs MVC, well thats some kind of different naming and you have to get used to: the M (Model) you find in /core the V you find in in your templates in /out, there the main view &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2011/11/14/oxid-eshop-routing/" class="more-link">Continue reading<span class="screen-reader-text"> "OXID eshop routing"</span></a></p>
The post <a href="https://nerdpress.org/2011/11/14/oxid-eshop-routing/">OXID eshop routing</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>If you wonder about routing in OXID eshops or how the URL structure is here are some hints:</p>
<p>OXIDs MVC, well thats some kind of different naming and you have to get used to:</p>
<p>the <strong>M</strong> (Model) you find in /core<br />
the <strong>V</strong> you find in in your templates in /out, there the main view is called the same as your controller, given the controller has a render() method.<br />
/views/details =&gt; /out/[templatename]/page/details.tpl<br />
the <strong>C</strong> (Controller) you find in /views (<em>what? oyerywell!</em>)<br />
like /views/details.php</p>
<p>The routing itself is like so:<br />
<span id="more-1949"></span></p>
<pre class="brush: plain; title: ; notranslate">?cl = controller</pre>
<p>in /views</p>
<pre class="brush: plain; title: ; notranslate">?anid = productID </pre>
<p>(that means the hash from the OXID field) or uid if you busy with users or any other relevant id</p>
<pre class="brush: plain; title: ; notranslate">?fnc = myfunction</pre>
<p>the method in the controller in /views</p>
<p>So this ends up in something like this:</p>
<pre class="brush: plain; title: ; notranslate">&lt;br /&gt;
theshop.de?cl=details&amp;amp;anid=05848170643ab0deb9914566391c0c63&amp;amp;fnc=myfunction&lt;br /&gt;
</pre>
<p>This is unmasked routing, normally OXID has this covered in SEO URLs with prettier slugs.</p>
<p>To use custom methods in the controller you have to extend it, the OXID module way, check this <a href="http://wiki.oxidforge.org/Tutorials#How_to_Extend_OXID_eShop_With_Modules_.28Part_1.29">here</a>.</p>
<p>Apropos OXID module way: actually its not so bad, i like the emulation of multiple overloading for the models and controllers.<br />
The module registry in the database however is something id rather have in the code, that would be easier to maintain over environments.<br />
Also some better cascading for templates, assets, lang files etc in the modules would be cool. That &#8220;<em>copy here copy there</em>&#8221; installations can be quite annoying.<br />
But anyway: i can deal with that.</p>The post <a href="https://nerdpress.org/2011/11/14/oxid-eshop-routing/">OXID eshop routing</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>how to not cache the footer in magento</title>
		<link>https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/</link>
					<comments>https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/#comments</comments>
		
		<dc:creator><![CDATA[Max Girkens]]></dc:creator>
		<pubDate>Tue, 04 Oct 2011 03:10:45 +0000</pubDate>
				<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[footer]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=1823</guid>

					<description><![CDATA[<p>With some advanced scheduled-post-voodoo i successfully managed to publish this post already yesterday with some completely unrelated queries and no text. this was not intended &#8211; please accept my apologies :P Anyway: In the footer of my magento shop we might have a summary of the shopping cart, which i simply put in the footer.phtml &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/" class="more-link">Continue reading<span class="screen-reader-text"> "how to not cache the footer in magento"</span></a></p>
The post <a href="https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/">how to not cache the footer in magento</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>With some advanced scheduled-post-voodoo i successfully managed to publish this post already yesterday with some completely unrelated queries and no text. this was not intended &#8211; please accept my apologies :P</p>
<p>Anyway: In the footer of my magento shop we might have a summary of the shopping cart,<br />
which i simply put in the footer.phtml template file:<br />
<span id="more-1823"></span></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php if (Mage::getModel('checkout/cart')-&gt;getItemsCount() &gt; 0): ?&gt;
  &lt;div class=&quot;footer_cart_widget&quot;&gt;
    &lt;a href=&quot;/checkout/cart&quot; class=&quot;cart&quot;&gt;
      &lt;?php echo $this-&gt;__('Warenkorb') ?&gt;:&lt;br /&gt;
      &lt;span class=&quot;cart_meta&quot;&gt;
        &lt;?php echo Mage::getModel('checkout/cart')-&gt;getItemsCount() ?&gt;
        &lt;?php if (Mage::getModel('checkout/cart')-&gt;getItemsCount() == 1): ?&gt;
          Produkt: 
        &lt;?php else: ?&gt;
          Produkte: 
        &lt;?php endif; ?&gt;
        &lt;?php echo $this-&gt;helper('checkout')-&gt;formatPrice(Mage::getSingleton('checkout/cart')-&gt;getQuote()-&gt;getGrandTotal()); ?&gt;
      &lt;/span&gt;
    &lt;/a&gt;
  &lt;/div&gt;
&lt;?php endif; ?&gt;
</pre>
<p><a href="https://nerdpress.org/wp-content/uploads/2011/10/Bildschirmfoto-2011-10-04-um-21.21.05.png"><img decoding="async" src="https://nerdpress.org/wp-content/uploads/2011/10/Bildschirmfoto-2011-10-04-um-21.21.05-300x146.png" alt="Magento Footer Shopping cart Widget disable cache" title="Magento Footer Shopping Cart Summary" width="300" height="146" class="alignnone size-medium wp-image-1846" srcset="https://nerdpress.org/wp-content/uploads/2011/10/Bildschirmfoto-2011-10-04-um-21.21.05-300x146.png 300w, https://nerdpress.org/wp-content/uploads/2011/10/Bildschirmfoto-2011-10-04-um-21.21.05.png 443w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>This means we might need to disable the caching for the footer HTML block,<br />
so that my cart summary will stay dynamically generated.</p>
<p>This is how you can do it:</p>
<p>copy</p>
<pre class="brush: bash; title: ; notranslate">app/code/core/Mage/Page/Block/Html/Footer.php</pre>
<p>to</p>
<pre class="brush: bash; title: ; notranslate">app/code/local/Mage/Page/Block/Html/Footer.php</pre>
<p>and just comment out the following lines:</p>
<pre class="brush: php; title: ; notranslate">
//$this-&gt;addData(array(
//    'cache_lifetime'=&gt; false,
//    'cache_tags'    =&gt; array(Mage_Core_Model_Store::CACHE_TAG, Mage_Cms_Model_Block::CACHE_TAG)
//));
</pre>
<p>you could also put the cart values in the getCacheKeyInfo() method, but as this would result in caching a footer for any state of the shopping cart from my understanding, i don&#8217;t think it&#8217;s necessarily a good idea.</p>The post <a href="https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/">how to not cache the footer in magento</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2011/10/04/how-to-not-cache-the-footer-in-magento/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>set up magento in multiple environments</title>
		<link>https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/</link>
					<comments>https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/#comments</comments>
		
		<dc:creator><![CDATA[Max Girkens]]></dc:creator>
		<pubDate>Tue, 27 Sep 2011 03:29:47 +0000</pubDate>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[environments]]></category>
		<category><![CDATA[Git]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=1667</guid>

					<description><![CDATA[<p>I just started digging in the shop software magento for a project and set up the following development environment. In this scenario development is done on two local machines while products and pages beeing already edited on the &#8220;Live&#8221;-Web-Server. Git is used for version control and deployment. Also FTP SSH. Magento is quite nice when &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/" class="more-link">Continue reading<span class="screen-reader-text"> "set up magento in multiple environments"</span></a></p>
The post <a href="https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/">set up magento in multiple environments</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>I just started digging in the shop software <a href="http://www.magentocommerce.com">magento</a> for a project and set up the following development environment.</p>
<p>In this scenario development is done on two local machines while products and pages beeing already edited on the &#8220;Live&#8221;-Web-Server.<br />
Git is used for version control and deployment. Also <del>FTP</del> SSH.<span id="more-1667"></span></p>
<p><a href="https://nerdpress.org/wp-content/uploads/2011/09/magento_sync_multiple_environments.png"><img decoding="async" class="alignnone size-medium wp-image-1761" title="magento_sync_multiple_environments" src="https://nerdpress.org/wp-content/uploads/2011/09/magento_sync_multiple_environments-300x147.png" alt="sync multiple Magento environments" width="300" height="147" srcset="https://nerdpress.org/wp-content/uploads/2011/09/magento_sync_multiple_environments-300x147.png 300w, https://nerdpress.org/wp-content/uploads/2011/09/magento_sync_multiple_environments.png 732w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Magento is quite nice when it comes to deployment, as most config stuff is stored in XML files.<br />
Those files are kept locally and ignored from version control.</p>
<p>So this is what my <a href="http://stackoverflow.com/questions/4564622/best-practices-for-using-git-with-magento">.gitignore</a> looks like:</p>
<pre class="brush: bash; title: ; notranslate">
#cache, sessions, logs
/var/cache/*
/var/session/*
/var/locks/*
/var/report/*
/var/log/*
#media folder - images etc...
/media/*

#local config files
/app/etc/local.xml
.htaccess

#database dump
/database.sql

</pre>
<p>So i got a copy of the repository in each environment with a local .htaccess and local.xml file.</p>
<p>Theres a few things stored in DB by magento, though.<br />
The most obvious is the &#8220;web/secure/base_url&#8221; and &#8220;web/unsecure/base_url&#8221; which both reside in the &#8220;core_config_data&#8221; table.<br />
Those have to be set to the name of the host you&#8217;re working on.</p>
<p>This can be done with a shell script like this:</p>
<pre class="brush: bash; title: ; notranslate">

#create a dupm of the live DB on the server
ssh user@server.com 'mysqldump -u&#x5B;username] -p&#x5B;password] &gt; ~/db_dump.sql'

#copy DB dump to local machine
scp user@server.com:~/db_dump.sql ./database.sql

#import SQL
mysql -u&#x5B;local_mysql_user] -p&#x5B;local_mysql_pw] &#x5B;local_db_name] &lt; ./database.sql

#update config settings in the DB
mysql -u&#x5B;local_mysql_user] -p&#x5B;local_mysql_pw] &#x5B;local_db_name]&lt;UPDATE
core_config_data
SET value='http://local.server.com/'
WHERE value ='http://server.com';
EOFMYSQL

</pre>
<p>This way all CMS and products  can be edited on the server, while the local machines can be easily synched.<br />
For me this works fine, as we are working only in the file system in the local environment.<br />
In case you can&#8217;t use the online Server as &#8220;database master&#8221; this might be not that simple.</p>
<p>As we most likely don&#8217;t want the whole /media folder under version control we might want to have another shell script to copy the media files to the local machine (via SCP in this case):</p>
<pre class="brush: bash; title: ; notranslate">

#remove local media folder
rm -rf ./media/*
#fetch media files
scp -r ssh_user@server.com:~/magento_folder/media/* ./media

</pre>
<p>I guess this could be done more efficiently with maybe ant or something.<br />
But for the moment this works fine for me.</p>
<p>So now i can update my local environment with one line on the console:</p>
<pre class="brush: bash; title: ; notranslate">

git pull; sh sync_db.sh; sh sync_media.sh

</pre>The post <a href="https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/">set up magento in multiple environments</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2011/09/27/set-up-magento-in-multiple-environments/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>OXID eShop manufacturer long description module and fck editor module</title>
		<link>https://nerdpress.org/2011/09/15/oxid-eshop-manufacturer-long-description-module-and-fck-editor-module/</link>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Thu, 15 Sep 2011 15:00:59 +0000</pubDate>
				<category><![CDATA[OXID]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=1681</guid>

					<description><![CDATA[<p>I recently made my first OXID eShop module: OXID-manufacturer-text-mod Which basically adds a long description field to the manufacturer. This comes just as a normal textarea, as usual in OXID CE. If you would like to add an Richtext Editor, you can purchase the fck Editor module and install it, if you did not already. &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2011/09/15/oxid-eshop-manufacturer-long-description-module-and-fck-editor-module/" class="more-link">Continue reading<span class="screen-reader-text"> "OXID eShop manufacturer long description module and fck editor module"</span></a></p>
The post <a href="https://nerdpress.org/2011/09/15/oxid-eshop-manufacturer-long-description-module-and-fck-editor-module/">OXID eShop manufacturer long description module and fck editor module</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>I recently made my first OXID eShop module: <a href="https://github.com/ivoba/OXID-manufacturer-text-mod">OXID-manufacturer-text-mod</a><br />
Which basically adds a long description field to the manufacturer.</p>
<p>This comes just as a normal textarea, as usual in OXID CE.<br />
If you would like to add an Richtext Editor, you can purchase the <a href="http://www.oxid-esales.com/en/exchange/extensions/fckeditor-lauffaehig-mit-oxid-eepece?tab=get-extension&#038;term=2231">fck Editor module</a><br />
and install it, if you did not already.</p>
<p>After you installed the fck module your textareas of the basic shop are rich text.</p>
<p>But since the manufacturer long description comes from the module, you have to teach the fck module the new field.<br />
<span id="more-1681"></span><br />
Unfortunatly we cant extend the fck module, due to some private vars &#038; methods.<br />
So we have to hack it, like so:</p>
<p>Edit <em>modules/tc_fckeditor/tc_fck_editor.php</em></p>
<p>Add:<br />
line38+:</p>
<pre class="brush: php; title: ; notranslate">
const MANUFACTURERS_MAIN = 'oxmanufacturers__extlongdesc';
</pre>
<p>Add:<br />
line52+:</p>
<pre class="brush: php; title: ; notranslate">
self::MANUFACTURERS_MAIN =&gt; 'editor_oxmanufacturers__extlongdesc',
</pre>
<p>Add:<br />
line153+:</p>
<pre class="brush: php; title: ; notranslate">
           case self::MANUFACTURERS_MAIN:
                $editor-&gt;addCustomJavascript($this-&gt;modulePath . 'custom/oxid_categories.js');
                break;
</pre>
<p>Then enable the module for the manufacturer text in the modules section of the backend:<br />
<em>manufacturer_text => tc_fckeditor/tc_fckeditor</em></p>
<p>And you should be able to rich edit your manufacturer long description.</p>The post <a href="https://nerdpress.org/2011/09/15/oxid-eshop-manufacturer-long-description-module-and-fck-editor-module/">OXID eShop manufacturer long description module and fck editor module</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
