<?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>Aimeos &#8211; Aimeos</title>
	<atom:link href="https://aimeos.org/tips/tag/aimeos/feed/" rel="self" type="application/rss+xml" />
	<link>https://aimeos.org/tips</link>
	<description>ultra fast PHP e-commerce framework</description>
	<lastBuildDate>Wed, 22 Jul 2020 07:11:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.7.8</generator>

<image>
	<url>https://aimeos.org/tips/wp-content/uploads/2019/09/Aimeos_e_200-100x104.png</url>
	<title>Aimeos &#8211; Aimeos</title>
	<link>https://aimeos.org/tips</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Aimeos 2020.07 release</title>
		<link>https://aimeos.org/tips/aimeos-2020-07-release/</link>
					<comments>https://aimeos.org/tips/aimeos-2020-07-release/#respond</comments>
		
		<dc:creator><![CDATA[aimeos]]></dc:creator>
		<pubDate>Wed, 22 Jul 2020 07:11:33 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Aimeos]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[TYPO3 10]]></category>
		<guid isPermaLink="false">https://aimeos.org/tips/?p=664</guid>

					<description><![CDATA[The new Aimeos feature release contains some long-awaited new stuff for developers and customers alike. What you get by using the 2020.07 release among various minor improvements and bugfixes is: PDF invoice in order confirmation e-mail Supplier CSV import Improved<span class="ellipsis">&#8230;</span><div class="read-more"><a href="https://aimeos.org/tips/aimeos-2020-07-release/">Read more <span class="screen-reader-text">Aimeos 2020.07 release</span><span class="meta-nav"> &#8250;</span></a></div><!-- end of .read-more -->]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignfull size-large"><img width="1024" height="538" src="https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-1024x538.jpg" alt="Aimeos 2020.07 release" class="wp-image-287" srcset="https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-1024x538.jpg 1024w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-300x158.jpg 300w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-768x403.jpg 768w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-100x53.jpg 100w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-150x79.jpg 150w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-200x105.jpg 200w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-450x236.jpg 450w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-600x315.jpg 600w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px-900x473.jpg 900w, https://aimeos.org/tips/wp-content/uploads/2019/04/aimeos-release-grafik_1200x630px.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>The new Aimeos feature release contains some long-awaited new stuff for developers and customers alike. What you get by using the 2020.07 release among various minor improvements and bugfixes is:</p>



<ul><li>PDF invoice in order confirmation e-mail</li><li>Supplier CSV import</li><li>Improved admin backend for mobile phones</li><li>Better full text search and URL segments</li><li>Official TYPO3 10 support</li><li>Simplified manager and criteria filter methods</li></ul>



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



<h2>PDF invoice in confirmation e-mail</h2>



<div class="wp-block-image"><figure class="alignright size-medium"><img width="212" height="300" src="https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-212x300.png" alt="" class="wp-image-665" srcset="https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-212x300.png 212w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-724x1024.png 724w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-768x1086.png 768w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-100x141.png 100w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-150x212.png 150w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-200x283.png 200w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-300x424.png 300w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-450x636.png 450w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-600x848.png 600w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf-900x1273.png 900w, https://aimeos.org/tips/wp-content/uploads/2020/07/aimeos-order-pdf.png 930w" sizes="(max-width: 212px) 100vw, 212px" /><figcaption>PDF invoice example</figcaption></figure></div>



<p>One of the most often requested features is now part of the Aimeos core: A nice looking template which can be easily adapted to the clients requirements and corporate design. The full source code for the invoice PDFs was contributed by the <a href="https://aimeos.com" target="_blank" rel="noreferrer noopener">Aimeos GmbH</a>.</p>



<p>The PDF document is generated from a HTML template and automatically attached to the e-mails sent to customers when the order has been paid. You can change the content and the layout of the PDF by adapting the template only, including header and footer sections repeated on each page. </p>



<p>Internally, the <a href="https://tcpdf.org/" target="_blank" rel="noreferrer noopener">TCPDF library</a> is used for creating the PDF from the HTML template, which also supports splitting long content  to several pages automatically. In composer based setups, TCPDF is automatically added and installed as dependency. For TYPO3 integrators who still download packages from TER, there&#8217;s a new dependency the <a href="https://extensions.typo3.org/extension/pdfviewhelpers/" target="_blank" rel="noreferrer noopener">pdfviewhelpers extension</a> due to the size of the TCPDF libary.</p>



<h2>Supplier CSV import</h2>



<p>Up to version 2020.07, you have been able to import several entities via configurable CSV files:</p>



<ul><li>attributes</li><li>categories</li><li>coupon codes</li><li>products</li><li>stock levels</li></ul>



<p>Now, you can also import supplier data including addresses, images, texts and references to other domains like products. Also, you can add supplier references in the product CSV import too.</p>



<p>This part of the new release was a big contribution by <a href="https://www.linkedin.com/in/alexey-sh/" target="_blank" rel="noreferrer noopener">Alexey, an Aimeos developer and freelancer</a> who offers his expertise for custom projects.</p>



<h2>Improved admin backend for mobile phones</h2>



<div class="wp-block-image"><figure class="alignright size-medium is-resized"><img src="https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-300x225.png" alt="" class="wp-image-671" width="320" height="240" srcset="https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-300x225.png 300w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-100x75.png 100w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-150x113.png 150w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-200x150.png 200w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-450x338.png 450w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3-600x450.png 600w, https://aimeos.org/tips/wp-content/uploads/2020/07/admin-backend-mobile3.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure></div>



<p>Thanks to <a rel="noreferrer noopener" href="https://www.linkedin.com/in/robertwildling/" target="_blank">Robert</a>, who did an amazing job improving the backend styles, the Aimeos admin interface is much better usable by mobile phone users regardless of their display size. Even with an old iPhones which only have 320px width, managing the items is fully possible now.</p>



<p>Header texts which are too long fade out, the size of the buttons has been adapted to the smallest supported viewport size and all tables gets a scollbar if their columns are bigger than the screen.</p>



<p>Additionally, the left navigation menu got some love and displays the names of the navigation items when clicking on the bottom arrow button. Thus, mobile phone users can see what their meaning is if they can&#8217;t remember.</p>



<h2>Better full text search and URL segments</h2>



<p>The results of the full text search offered by MySQL, PostgreSQL and SQL Server has been refined to return more relevant results. Especially for phrases with several words, stop words and special characters, it yields much better results now.</p>



<p>Optimized URL segments can be added as text to products and categories, but generating URL segments from labels led to a loss of characters if special characters not covered by the ASCII character set was used. Thanks to the <a rel="noreferrer noopener" href="https://github.com/voku/portable-ascii" target="_blank">&#8220;voku/portable-ascii&#8221;</a> library, these characters are now transliterated to the best matching ASCII character or to several characters like for &#8220;ä -&gt; ae&#8221;.</p>



<h2>Official TYPO3 10 support</h2>



<div class="wp-block-image"><figure class="alignright size-thumbnail is-resized"><img src="https://aimeos.org/tips/wp-content/uploads/2020/07/typo3-logo.svg" alt="" class="wp-image-679" width="200" height="200"/></figure></div>



<p>Three month after TYPO3 10 LTS has been released, the Aimeos TYPO3 extension officially supports the new TYPO3 major release. It took some time until the <a href="https://extensions.typo3.org/extension/static_info_tables" target="_blank" rel="noreferrer noopener">static_info_tables extension</a> was available for TYPO3 10, which Aimeos depends on.</p>



<p>The Aimeos 20.7.x extension supports TYPO3 v9 and v10 only because it removes all methods deprecated by v9 and dropped in v10 to clean up the code base. Furthermore, it uses the new APIs  if applicable and offers it&#8217;s own panel for all Aimeos plugin elements with icons and descriptions to support new users.</p>



<h2>Simplified manager and criteria filter methods</h2>



<p>Working with Aimeos should be fun and even you can do the most complex things in e-commerce using Aimeos, the code you have to write should be as small as possible. Therefore, the manager methods have been shorted to:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Existing methods</strong></td><td><strong>New method</strong></td></tr><tr><td>deleteItem(), deleteItems()</td><td>delete()</td></tr><tr><td>findItem()</td><td>find()</td></tr><tr><td>getItem()</td><td>get()</td></tr><tr><td>saveItem(), saveItems()</td><td>save()</td></tr><tr><td>searchItems()</td><td>search()</td></tr></tbody></table></figure>



<p>Also, building filter criteria for the <em>search()</em> method is now much easier. Instead of:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$search</span> <span class="sy0">=</span> <span class="re0">$manager</span><span class="sy0">-&gt;</span><span class="me1">createSearch</span><span class="br0">&#40;</span> <span class="kw4">true</span> <span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">slice</span><span class="br0">&#40;</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">100</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">setConditions</span><span class="br0">&#40;</span> <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">combine</span><span class="br0">&#40;</span> <span class="st_h">'&amp;&amp;'</span><span class="sy0">,</span> <span class="br0">&#91;</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">compare</span><span class="br0">&#40;</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="st_h">'product.type'</span><span class="sy0">,</span> <span class="st_h">'default'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">compare</span><span class="br0">&#40;</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="st_h">'product.dataset'</span><span class="sy0">,</span> <span class="st_h">'shirt'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">compare</span><span class="br0">&#40;</span> <span class="st_h">'&gt;'</span><span class="sy0">,</span> <span class="st_h">'product.datestart'</span><span class="sy0">,</span> <span class="st_h">'2020-01-01'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">getConditions</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
<span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$search</span><span class="sy0">-&gt;</span><span class="me1">setSortations</span><span class="br0">&#40;</span> <span class="br0">&#91;</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="kw3">sort</span><span class="br0">&#40;</span> <span class="st_h">'-'</span><span class="sy0">,</span> <span class="st_h">'product.label'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$search</span><span class="sy0">-&gt;</span><span class="kw3">sort</span><span class="br0">&#40;</span> <span class="st_h">'+'</span><span class="sy0">,</span> <span class="st_h">'product.id'</span> <span class="br0">&#41;</span>
<span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>You can now write using the new 2020.07 release:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$f</span> <span class="sy0">=</span> <span class="re0">$manager</span><span class="sy0">-&gt;</span><span class="me1">filter</span><span class="br0">&#40;</span> <span class="kw4">true</span> <span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">slice</span><span class="br0">&#40;</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">100</span> <span class="br0">&#41;</span>
    <span class="sy0">-&gt;</span><span class="me1">add</span><span class="br0">&#40;</span> <span class="br0">&#91;</span><span class="st_h">'product.type'</span> <span class="sy0">=&gt;</span> <span class="st_h">'default'</span><span class="sy0">,</span> <span class="st_h">'product.dataset'</span> <span class="sy0">=&gt;</span> <span class="st_h">'shirt'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span>
    <span class="sy0">-&gt;</span><span class="me1">add</span><span class="br0">&#40;</span> <span class="st_h">'product.datestart'</span><span class="sy0">,</span> <span class="st_h">'&gt;'</span><span class="sy0">,</span> <span class="st_h">'2020-01-01'</span> <span class="br0">&#41;</span>
    <span class="sy0">-&gt;</span><span class="kw3">sort</span><span class="br0">&#40;</span> <span class="br0">&#91;</span><span class="st_h">'-product.label'</span><span class="sy0">,</span> <span class="st_h">'product.id'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>This will cover 95% of all use cases. A more complex example including mixed AND and OR operators:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">add</span><span class="br0">&#40;</span> <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">and</span><span class="br0">&#40;</span> <span class="br0">&#91;</span>
    <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">or</span><span class="br0">&#40;</span> <span class="br0">&#91;</span>
        <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.datestart'</span><span class="sy0">,</span> <span class="st_h">'&lt;'</span><span class="sy0">,</span> <span class="st_h">'2000-01-01'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
        <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.datestart'</span><span class="sy0">,</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="kw4">null</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="br0">&#93;</span>
    <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">or</span><span class="br0">&#40;</span> <span class="br0">&#91;</span>
        <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.dateend'</span><span class="sy0">,</span> <span class="st_h">'&gt;'</span><span class="sy0">,</span> <span class="st_h">'2000-01-01'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
        <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.dateend'</span><span class="sy0">,</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="kw4">null</span> <span class="br0">&#41;</span>
    <span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">,</span>
<span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>You can use the NOT operator for negating all conditions:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">add</span><span class="br0">&#40;</span> <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">not</span><span class="br0">&#40;</span> <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">and</span><span class="br0">&#40;</span> <span class="br0">&#91;</span>
    <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.type'</span><span class="sy0">,</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="st_h">'default'</span> <span class="br0">&#41;</span><span class="sy0">,</span>
    <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">is</span><span class="br0">&#40;</span> <span class="st_h">'product.status'</span><span class="sy0">,</span> <span class="st_h">'=='</span><span class="sy0">,</span> <span class="nu0">0</span> <span class="br0">&#41;</span><span class="sy0">,</span>
<span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>Creating search functions to pass parameters as part of the search key are also much easier to use now:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">add</span><span class="br0">&#40;</span> <span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">make</span><span class="br0">&#40;</span> <span class="st_h">'product:has'</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="st_h">'attribute'</span><span class="sy0">,</span> <span class="st_h">'default'</span><span class="sy0">,</span> <span class="nu0">123</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">,</span> <span class="st_h">'!='</span><span class="sy0">,</span> <span class="kw4">null</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>Finally, you can parse a complete condition block like before:</p>





<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$f</span><span class="sy0">-&gt;</span><span class="me1">parse</span><span class="br0">&#40;</span> <span class="br0">&#91;</span><span class="st_h">'||'</span> <span class="sy0">=&gt;</span> <span class="br0">&#91;</span>
    <span class="br0">&#91;</span>
        <span class="st_h">'&lt;'</span> <span class="sy0">=&gt;</span> <span class="br0">&#91;</span><span class="st_h">'product.datestart'</span> <span class="sy0">=&gt;</span> <span class="st_h">'2000-01-01'</span><span class="br0">&#93;</span><span class="sy0">,</span>
        <span class="st_h">'=='</span> <span class="sy0">=&gt;</span> <span class="br0">&#91;</span><span class="st_h">'product.datestart'</span> <span class="sy0">=&gt;</span> <span class="kw4">null</span><span class="br0">&#93;</span>
    <span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span>
        <span class="st_h">'&gt;'</span> <span class="sy0">=&gt;</span> <span class="br0">&#91;</span><span class="st_h">'product.dateend'</span> <span class="sy0">=&gt;</span> <span class="st_h">'2000-01-01'</span><span class="br0">&#93;</span><span class="sy0">,</span>
        <span class="st_h">'=='</span> <span class="sy0">=&gt;</span> <span class="br0">&#91;</span><span class="st_h">'product.dateend'</span> <span class="sy0">=&gt;</span> <span class="kw4">null</span><span class="br0">&#93;</span>
    <span class="br0">&#93;</span>
<span class="br0">&#93;</span> <span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div></div></div></div></div></div>






<p>The old manager and criteria API is still available so all extensions developed from 2020.x will continue to work without problems, but the old APIs are deprecated and will be removed in the future.</p>



<h2>More about Aimeos</h2>



<ul><li>Web site: <a href="https://aimeos.org">https://aimeos.org</a></li><li>Github: <a href="https://github.com/aimeos">https://github.com/aimeos</a></li><li>TYPO3 TER: <a href="https://extensions.typo3.org/extension/aimeos/">https://extensions.typo3.org/extension/aimeos/</a></li></ul>



<ul><li>Facebook: <a href="https://facebook.com/Aimeos">https://facebook.com/Aimeos</a></li><li>Twitter: <a href="https://twitter.com/Aimeos">https://twitter.com/Aimeos</a></li><li>YouTube: <a href="https://youtube.com/c/aimeos">https://youtube.com/c/aimeos</a></li></ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://aimeos.org/tips/aimeos-2020-07-release/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is an e-commerce framework?</title>
		<link>https://aimeos.org/tips/ecommerce-framework/</link>
					<comments>https://aimeos.org/tips/ecommerce-framework/#comments</comments>
		
		<dc:creator><![CDATA[aimeos]]></dc:creator>
		<pubDate>Fri, 03 May 2019 15:54:21 +0000</pubDate>
				<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Aimeos]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[framework]]></category>
		<guid isPermaLink="false">https://aimeos.org/tips/?p=173</guid>

					<description><![CDATA[The term e-commerce framework is related to software frameworks for e-commerce applications. They offer an environment for building e-commerce applications quickly. E-Commerce frameworks are flexible enough to adapt them to your specific requirements. As result, they are suitable for building virtually all kinds of<span class="ellipsis">&#8230;</span><div class="read-more"><a href="https://aimeos.org/tips/ecommerce-framework/">Read more <span class="screen-reader-text">What is an e-commerce framework?</span><span class="meta-nav"> &#8250;</span></a></div><!-- end of .read-more -->]]></description>
										<content:encoded><![CDATA[<p>The term <strong>e-commerce framework</strong> is related to software frameworks for e-commerce applications. They offer an environment for building e-commerce applications quickly.</p>
<p>E-Commerce frameworks are flexible enough to adapt them to your specific requirements. As result, they are suitable for building virtually all kinds of online shops and e-commerce related (web) applications like the <a href="https://aimeos.org">Aimeos e-commerce framework</a> does.</p>
<p><span id="more-173"></span></p>
<p>An e-commerce framework must</p>
<ul>
<li>allow replacing all parts of the framework code</li>
<li>forbid changes in the framework code itself</li>
<li>contain bootstrap code to start the application</li>
<li>be extensible by user-written code</li>
</ul>
<p>E-Commerce frameworks should</p>
<ul>
<li>define the general program flow</li>
<li>consist of reusable components</li>
<li>be organized in functional domains</li>
</ul>
<p>Examples of e-commerce frameworks are</p>
<ul>
<li><a href="https://aimeos.org">Aimeos</a> (<a href="https://aimeos.org/Laravel/">Laravel</a>, <a href="https://aimeos.org/Symfony/">Symfony</a>, <a href="https://aimeos.org/TYPO3/">TYPO3</a>, <a href="https://aimeos.org/SlimPHP/">SlimPHP</a>, <a href="https://aimeos.org/Flow/">Flow</a>)</li>
<li>Spryker (Symfony only)</li>
<li>Sylius (Symfony only)</li>
</ul>
<p>They provide an overall structure for e-commerce related applications. Furthermore, they implement the general program flow e.g. how the checkout process works. Contrary to monolithic shop systems, existing program flow can not only be extended but completely changed according to your needs.</p>
<h2>Evolution of e-commerce systems</h2>
<p>Since the beginning of (internet) e-commerce around 1995, a lot has changed on the technology side. The first generation of e-commerce systems evolved from existing ERP and related systems. This was followed by the 2. generation of standalone shop systems between 2004 and 2008. E-commerce frameworks are the latest generation of e-commerce systems and started around 2012.<a href="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png"><img class="aligncenter size-full wp-image-236" src="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png" alt="" width="750" height="350" srcset="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png 750w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-300x140.png 300w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-100x47.png 100w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-150x70.png 150w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-200x93.png 200w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-450x210.png 450w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-600x280.png 600w" sizes="(max-width: 750px) 100vw, 750px" /></a></p>
<p>Hybris, the shop system owned by SAP is one of the representatives of the 1. generation. It&#8217;s strongly connected to the SAP ERP system and Hybris is mainly a shop front-end for SAP. Customer relationship (CRM) and content management (CMS) tools are available in the ERP system but very limited.</p>
<p>The Magento shop system represents the 2. generation of standalone e-commerce systems. They usually contain CRM and CMS and some other functionality but also only at a very basic level. They might be enough for the smallest shops but are unusable for shop owners who run for real profits.</p>
<p>Aimeos is one of the few real e-commerce frameworks that are currently available. These 3rd generation systems excel in their own domain: Present and sell products. For all other e-commerce related tasks, they connect to specialized systems and exchange data in both ways. Thus, shop owners can choose the best systems for their needs.</p>
<h2>E-Commerce framework architecture</h2>
<p>E-commerce frameworks must be based on a strong architectural model. Usually, they make heavy use of interfaces and design patterns like</p>
<ul>
<li>Dependency Injection (make components independent of used object implementation)</li>
<li>Factories (create objects at a central place that instantiates the actual implementation)</li>
<li>Decorators (dynamically add functionality to existing objects)</li>
<li>Publish/Subscribe model (notify listening objects about changes instead of polling for updates)</li>
</ul>
<blockquote><p>A &#8220;design pattern&#8221; is re-usable solution that solves similar software design problems in an elegant way. They require programming language templates which enforce public class methods and their signatures called &#8220;interfaces&#8221;.</p></blockquote>
<p>The basic requirement are independent, side-effect free components that form the building blocks. One or more components care about the functionality of a business &#8220;domain&#8221;. Such a domain can be the HTML front-end, a JSON REST API and the administration interface.</p>
<p><a href="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack.png"><img class="wp-image-184 size-medium aligncenter" src="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-300x290.png" alt="" width="300" height="290" srcset="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-300x290.png 300w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-100x97.png 100w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-150x145.png 150w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-200x193.png 200w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-450x435.png 450w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-600x579.png 600w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack.png 697w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>The vertical separation of code into business domains enables scaling out applications by deploying the application as a bunch of micro services.</p>
<blockquote><p>Micro services are loosely coupled applications that offer their service over lightweight protocols like HTTP and JSON. They are easier to extend, maintain and especially deploy than monolithic applications.</p></blockquote>
<p><a style="display: block; width: 16em; margin: auto; text-align: center; padding: 0.75em; font-weight: bold; background-color: #ba9a5a; border: solid 1px #ba9a5a; color: #fff;" href="https://aimeos.org">More about Aimeos</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://aimeos.org/tips/ecommerce-framework/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title>Was ist ein E-Commerce Framework?</title>
		<link>https://aimeos.org/tips/ecommerce-framework-de/</link>
					<comments>https://aimeos.org/tips/ecommerce-framework-de/#respond</comments>
		
		<dc:creator><![CDATA[aimeos]]></dc:creator>
		<pubDate>Thu, 02 May 2019 15:08:57 +0000</pubDate>
				<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Aimeos]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[framework]]></category>
		<guid isPermaLink="false">https://aimeos.org/tips/?p=196</guid>

					<description><![CDATA[Der Term E-Commerce Framework bezieht sich auf Software-Frameworks für E-Commerce Applikationen. Sie ermöglichen es in relativ kurzer Zeit komplette E-Commerce Applikationen zu bauen. E-Commerce Frameworks sind flexibel genug um sie an kundenspezifische Anforderungen anzupassen. Dadurch können sie als Basis für praktisch alle<span class="ellipsis">&#8230;</span><div class="read-more"><a href="https://aimeos.org/tips/ecommerce-framework-de/">Read more <span class="screen-reader-text">Was ist ein E-Commerce Framework?</span><span class="meta-nav"> &#8250;</span></a></div><!-- end of .read-more -->]]></description>
										<content:encoded><![CDATA[<p>Der Term <strong>E-Commerce Framework</strong> bezieht sich auf Software-Frameworks für E-Commerce Applikationen. Sie ermöglichen es in relativ kurzer Zeit komplette E-Commerce Applikationen zu bauen.</p>
<p>E-Commerce Frameworks sind flexibel genug um sie an kundenspezifische Anforderungen anzupassen. Dadurch können sie als Basis für praktisch alle Arten von Onlineshops und E-Commerce bezogene (Web-)Applikationen dienen, wie beispielsweise das <a href="https://aimeos.org/">Aimeos E-Commerce Framework</a>.</p>
<p><span id="more-196"></span></p>
<p>Ein E-Commerce Framework muss</p>
<ul>
<li>es erlauben, jeden seiner Bestandteile zu ersetzen</li>
<li>Änderungen am Framework-Code selbst verbieten</li>
<li>Bootstrap-Code beinhalten um die Applikation zu starten</li>
<li>erweiterbar für kundenspezifischen Code sein</li>
</ul>
<p>E-Commerce Frameworks sollen</p>
<ul>
<li>den allgemeinen Programmablauf definieren</li>
<li>aus wiederverwendbaren Komponenten bestehen</li>
<li>in funktionalen Domänen unterteilt sein</li>
</ul>
<p>Beispiele für E-Commerce Frameworks sind</p>
<ul>
<li><a href="https://aimeos.org/">Aimeos</a> (<a href="https://aimeos.org/Laravel/">Laravel</a>, <a href="https://aimeos.org/Symfony/">Symfony</a>, <a href="https://aimeos.org/TYPO3/">TYPO3</a>, <a href="https://aimeos.org/SlimPHP/">SlimPHP</a>, <a href="https://aimeos.org/Flow/">Flow</a>)</li>
<li>Spryker (nur Symfony)</li>
<li>Sylius (nur Symfony)</li>
</ul>
<p>Sie bieten eine komplette Infrastruktur für E-Commerce bezogene Applikationen. Weiterhin implementieren sie den allgemeinen Programmfluss, z.B. wie der Checkout-Prozess funktioniert. Im Gegensatz zu monolithischen Shopsystemen kann der bestehende Programmfluss nicht nur erweitert werden, sondern auch komplett für die eigenen Bedürfnisse geändert werden.</p>
<h2>Evolution von E-Commerce Systemen</h2>
<p>Seit dem Beginn des E-Commerce im Internet um 1995 hat sich vieles auf Seiten der Technologie verändert. Die erste Generation von E-Commerce Systemen entwickelte sich aus existierenden Warenwirtschaftsprogrammen und ähnlichen Systemen. Daraufhin folgte die zweite Generation von eigenständigen Shopsystemen zwischen 2004 und 2008. E-Commerce Frameworks sind die neuste Generation von E-Commerce Systemen und begannen ab 2012 auf den Markt zu kommen.<a href="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png"><img class="aligncenter size-full wp-image-236" src="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png" alt="" width="750" height="350" srcset="https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations.png 750w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-300x140.png 300w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-100x47.png 100w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-150x70.png 150w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-200x93.png 200w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-450x210.png 450w, https://aimeos.org/tips/wp-content/uploads/2017/06/ecommerce-generations-600x280.png 600w" sizes="(max-width: 750px) 100vw, 750px" /></a></p>
<p>Hybris, das Shopsystem von SAP ist einer der Vertreter der ersten Generation. Es ist eng mit dem SAP ERP System verzahnt und Hybris ist hauptsächlich eine Shopoberfläche für SAP. Customer Relationship (CRM) und Content Management (CMS) Werkzeuge sind im Umfeld von SAP verfügbar aber mit eingeschränkter Funktionalität im Gegensatz zu spezialisierten Systemen.</p>
<p>Das Magento Shopsystem repräsentiert die zweite Generation von eigenständigen E-Commerce Systemen. Sie beinhalten CRM und CMS Komponenten sowie ein paar weitere Funktionalitäten, aber ebenfalls nur mit einem beschränkten Funktionsumfang. Sie können für Kleinstunternehmen ausreichend sein, für Shopsbetreiber mit größeren Umsätzen aber meistens unbrauchbar.</p>
<p>Aimeos ist eines der wenigen echten E-Commerce Frameworks die im Moment verfügbar sind. Diese Systeme der dritten Generation glänzen in ihrer Kerndomäne: Der Präsentation und dem Verkauf der Produkte. Für alle weiteren E-Commerce bezogenen Aufgaben verbinden sie sich mit spezialisierten Systemen und tauschen Daten in beide Richtungen aus. Dadurch können Shopbetreiber das jeweils beste System für ihre Bedürfnisse wählen.</p>
<h2>E-Commerce Framework Architektur</h2>
<p>Gute E-Commerce Frameworks müssen einer stringenten Architektur folgen. Dafür verwenden sie ausgiebig Interfaces und Design Patterns wie</p>
<ul>
<li>Dependency Injection (Komponenten sind unabhängig von der konkreten Objektimplementierung)</li>
<li>Factories (erzeugen zentral Objekte und instanzieren die tatsächliche Implementierung)</li>
<li>Decorators (fügen dynamisch zusätzliche Funktionalität zu existierenden Objekten hinzu)</li>
<li>Publish/Subscribe (benachrichtigen registrierte Objekte über Änderungen anstatt wiederholt auf Änderungen zu testen)</li>
</ul>
<blockquote><p>Ein &#8220;Design Pattern&#8221; ist eine wiederverwendbare Lösung, die ähnliche Softwaredesign-Probleme elegant löst. Sie benötigen Schablonen names &#8220;Interfaces&#8221; in den Programmiersprachen, die öffentliche Klassenmethoden und ihre Signaturen erzwingen können.</p></blockquote>
<p>Die wichtigste Anforderung sind unabhängige Bausteine ohne Seiteneffekte, die zu Komponenten zusammen gefügt werden können. Ein oder mehrere Bausteine sind für die Funktionalität einer Fachdomäne zuständig. Eine Domäne kann eine HTML Oberfläche, eine JSON REST API oder eine Administrationsoberfläche sein.</p>
<p><a href="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack.png"><img class="aligncenter wp-image-184 size-medium" src="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-300x290.png" alt="" width="300" height="290" srcset="https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-300x290.png 300w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-100x97.png 100w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-150x145.png 150w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-200x193.png 200w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-450x435.png 450w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack-600x579.png 600w, https://aimeos.org/tips/wp-content/uploads/2017/06/Aimeos-stack.png 697w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Die vertikale Trennung von Code in Fachdomänen ermöglicht es Applikationen beliebig zu skalieren, indem sie als Microservices auf mehreren Serverinstanzen laufen können.</p>
<blockquote><p>Microservices sind lose gekoppelte Applikationen, die ihre Dienste über leichtgewichtige Protokolle wie HTTP oder JSON anbieten. Sie sind leichter zu erweitern, zu warten und auszurollen als monolithische Applikationen.</p></blockquote>
<p><a style="display: block; width: 16em; margin: auto; text-align: center; padding: 0.75em; font-weight: bold; background-color: #ba9a5a; border: solid 1px #ba9a5a; color: #fff;" href="https://aimeos.org/de/">Mehr über Aimeos</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://aimeos.org/tips/ecommerce-framework-de/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Aimeos 2019.01 major release</title>
		<link>https://aimeos.org/tips/aimeos-2019-01-major-release/</link>
					<comments>https://aimeos.org/tips/aimeos-2019-01-major-release/#comments</comments>
		
		<dc:creator><![CDATA[aimeos]]></dc:creator>
		<pubDate>Wed, 30 Jan 2019 10:47:52 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Neos]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[SlimPHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Aimeos]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://aimeos.org/tips/?p=241</guid>

					<description><![CDATA[The new beta version contains a lot of improvements and focuses on: Even more performance Developer experience Code cleanup Performance improvements Aimeos is already known as ultra fast e-commerce solution for Laravel, Symfony, SlimPHP, TYPO3 and Flow/NeosCMS even for complex requirements. This release pushes<span class="ellipsis">&#8230;</span><div class="read-more"><a href="https://aimeos.org/tips/aimeos-2019-01-major-release/">Read more <span class="screen-reader-text">Aimeos 2019.01 major release</span><span class="meta-nav"> &#8250;</span></a></div><!-- end of .read-more -->]]></description>
										<content:encoded><![CDATA[<p><a href="https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000.jpg"><img class="aligncenter size-full wp-image-243" src="https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000.jpg" alt="" width="1000" height="666" srcset="https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000.jpg 1000w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-300x200.jpg 300w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-768x511.jpg 768w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-100x67.jpg 100w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-150x100.jpg 150w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-200x133.jpg 200w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-450x300.jpg 450w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-600x400.jpg 600w, https://aimeos.org/tips/wp-content/uploads/2019/01/pit-crew-583024_1000-900x599.jpg 900w" sizes="(max-width: 1000px) 100vw, 1000px" /></a></p>
<p>The new beta version contains a lot of improvements and focuses on:</p>
<ul>
<li>Even more performance</li>
<li>Developer experience</li>
<li>Code cleanup</li>
</ul>
<p><span id="more-241"></span></p>
<h2>Performance improvements</h2>
<p>Aimeos is already known as ultra fast e-commerce solution for Laravel, Symfony, SlimPHP, TYPO3 and Flow/NeosCMS even for complex requirements. This release pushes the limits teared down by <a href="https://aimeos.com/gigacommerce/">Aimeos #gigacommerce</a> further with render times of 20ms and below if content caching is enabled. Without caching, response times are exceptional too compared to other shop systems and in the 2019.01 release, we reduced that time further.</p>
<p>First, we denormalized tables that use types, so the type code is now stored directly instead of the type ID. This saves several database queries per request. Additionally, it&#8217;s possible to retrieve related data for e.g. products filtered by type:</p>
<pre>$manager-&gt;searchItems( $filter, ['text', 'price', 'product' =&gt; ['suggestion'] );</pre>
<p>This fetches related products of type &#8220;suggestion&#8221; only instead of all related products. Especially for shops with many relations, this can be a huge performance improvement if components can&#8217;t be cached.</p>
<p>PHP 7.3 promises another huge performance improvement and we are testing that version every time. Unfortunately, there&#8217;s a bug in PHP 7.3 with prevents production usage yet. It seems that the PHP developers over-optimized opcode caching so PHP 7.3 produces wrong results: <a href="https://bugs.php.net/bug.php?id=77310">https://bugs.php.net/bug.php?id=77310</a></p>
<h2>Simplifications for developers</h2>
<p>One of the major goals for this Aimeos release was to simplify interfaces so the first steps for new developers are easier. As a result, creating managers, controllers and clients requires only:</p>
<pre>$manager = \Aimeos\MShop::create( $context, 'product' );
$cntl = \Aimeos\Controller\Frontend::create( $context, 'catalog' );
$client = \Aimeos\Client\Html::create( $context, 'catalog/lists' );</pre>
<p>Items with relations are fetched recursively now and a decorator limits the recursion depth to two levels. The allowed depth is configurable like everything else in Aimeos. This allows you to get all releated data you need at one without fetching and merging data from several calls to searchItems():</p>
<pre>$products = $manager-&gt;searchItems( $filter, ['product', 'price', 'text] );</pre>
<p>For bundle and selection products, the items in the result list contains the bundled and variant articles including prices, texts and related products.</p>
<p>Also, all newly created items have the status &#8220;enabled&#8221; by default and must be explicitly disabled if required. This saves many calls to &#8220;setStatus()&#8221; especially when implementing a new importer. The frontend controllers allow multiple category IDs for filtering so it&#8217;s possible to search for<br />
products in multiple categories with one method call.</p>
<h2>Code cleanups</h2>
<p>Finally, a lot of old code has been removed due to the switch to document oriented managment of items. Especially in the index managers and the filter criteria implementation was some code left after the changes required to use ElasticSearch natively.</p>
<p>The 2019.x releases are the last ones that will support PHP 5 as 5.6 isn&#8217;t maintained any more since this year. You should use PHP 7 nevertheless to get the best performance.</p>
<p>For a full list of backward incompatible changes, please have a look at the Wiki article. BC breaking changes in 2019.01 are listed up to 2018-12-31:</p>
<p><a href="https://aimeos.org/docs/Developers/Changelog/2019">https://aimeos.org/docs/Developers/Changelog/2019</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://aimeos.org/tips/aimeos-2019-01-major-release/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
