<?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>release &#8211; Aimeos</title>
	<atom:link href="https://aimeos.org/tips/tag/release/feed/" rel="self" type="application/rss+xml" />
	<link>https://aimeos.org/tips</link>
	<description>ultra fast PHP e-commerce framework</description>
	<lastBuildDate>Tue, 23 Jul 2024 07:31:10 +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>release &#8211; Aimeos</title>
	<link>https://aimeos.org/tips</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Aimeos 2023.10 LTS release</title>
		<link>https://aimeos.org/tips/aimeos-2023-10-lts-release/</link>
					<comments>https://aimeos.org/tips/aimeos-2023-10-lts-release/#comments</comments>
		
		<dc:creator><![CDATA[aimeos]]></dc:creator>
		<pubDate>Wed, 25 Oct 2023 08:23:40 +0000</pubDate>
				<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://aimeos.org/tips/?p=1005</guid>

					<description><![CDATA[The 2023.10 version of the Aimeos e-commerce framework for Laravel and TYPO3 is available now! Especially developers will love the 2023 version because it contains a lot of simplifications and fully supports scaleable cloud setups like Kubernetes natively. The most<span class="ellipsis">&#8230;</span><div class="read-more"><a href="https://aimeos.org/tips/aimeos-2023-10-lts-release/">Read more <span class="screen-reader-text">Aimeos 2023.10 LTS release</span><span class="meta-nav"> &#8250;</span></a></div><!-- end of .read-more -->]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><a href="https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big.jpg"><img width="1024" height="538" src="https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-1024x538.jpg" alt="" class="wp-image-887" srcset="https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-1024x538.jpg 1024w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-300x158.jpg 300w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-768x403.jpg 768w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-100x53.jpg 100w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-150x79.jpg 150w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-200x105.jpg 200w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-450x236.jpg 450w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-600x315.jpg 600w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big-900x473.jpg 900w, https://aimeos.org/tips/wp-content/uploads/2021/10/aimeos-release-rect-big.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>The 2023.10 version of the Aimeos e-commerce framework for Laravel and TYPO3 is available now! Especially developers will love the 2023 version because it contains a lot of simplifications and fully supports scaleable cloud setups like Kubernetes natively. The most important updates in 2023 are:</p>



<ul><li>Laravel 10 distributions</li><li>TYPO3 12 support</li><li>Kubernetes/Serverless support</li><li>Create managers easily</li><li>Merged order and order base</li><li>Stored basket panel</li><li>DB-based translations for type names</li><li>VueJS and GraphQL in backend</li></ul>



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



<h2>Laravel 10 distributions</h2>



<div class="wp-block-image"><figure class="alignright size-large"><a href="https://aimeos.org/tips/wp-content/uploads/2021/10/laravel6.png"><img width="126" height="130" src="https://aimeos.org/tips/wp-content/uploads/2021/10/laravel6.png" alt="" class="wp-image-863" srcset="https://aimeos.org/tips/wp-content/uploads/2021/10/laravel6.png 126w, https://aimeos.org/tips/wp-content/uploads/2021/10/laravel6-100x103.png 100w" sizes="(max-width: 126px) 100vw, 126px" /></a></figure></div>



<p>Since the Laravel 10 release in February 2023, Aimeos fully supports the latest Laravel version and since 2023.04, the Aimeos headless and full stack distribution are based on Laravel 10. You can bootstrap your own Aimeos application in less than five minutes using those distributions and get a fully working Laravel 10 application. This also includes pre-configured authentication setup for both, the full stack and the headless distribution.</p>



<h2>TYPO3 12 support</h2>



<div class="wp-block-image"><figure class="alignleft size-large"><a href="https://aimeos.org/tips/wp-content/uploads/2021/10/typo3.png"><img width="128" height="128" src="https://aimeos.org/tips/wp-content/uploads/2021/10/typo3.png" alt="" class="wp-image-864" srcset="https://aimeos.org/tips/wp-content/uploads/2021/10/typo3.png 128w, https://aimeos.org/tips/wp-content/uploads/2021/10/typo3-100x100.png 100w" sizes="(max-width: 128px) 100vw, 128px" /></a></figure></div>



<p>Also, Aimeos 2023.x fully supports TYPO3 12.4 since it&#8217;s release in April. Many changes has happened in v12 compared to v11, especially a lot of deprecated code has been removed. This made it very hard to make Aimeos 2023.x available for TYPO3 v11 too so we&#8217;ve decided to support v12 only in that release. Therefore, if you need a feature from Aimeos 2023.x or want to upgrade after two years of free support, you must upgrade to the latest TYPO3 v12 too.</p>



<h2>Kubernetes/Serverless support</h2>



<p>We are proud to announce that Aimeos 2023+ is the first cloud-native e-commerce solution for Laravel. Everything including file imports can be distributed across any cloud environment like Kubernetes, AWS, Google Cloud, Azure or so called serverless environments now. Aimeos for Laravel is cloud-ready since the beginning and images/CSS/JS files can be stored in S3 or similar cloud storage services but files were read only from a local file system. This this year, you can store files for importing products, categories, users, etc. from any remote server regardless if they are in CSV or XML format.</p>



<p>We also moved our complete server infrastructure from traditional hosting to a private Kubernetes cloud beginning this year including the web sites, demo setups and private package repository.</p>



<h2>Create managers easily</h2>



<p>Extending existing managers is extremely simply but writing new managers for own data domains or extending existing data domains required a lot of boilerplate code in the past. Since 2023.10, creating new managers is as easy as extending managers now.</p>



<p>First of all, create a setup task for the database migration as before:</p>



<pre class="wp-block-code"><code>namespace Aimeos\Upscheme\Task;

class Test extends Base
{
    public function up()
    {
        $this-&gt;info( 'Creating test schema', 'v' );

        $this-&gt;db( 'db-test' )-&gt;table( $name, function( $table ) {
            $table-&gt;engine = 'InnoDB';

             $table-&gt;id()-&gt;primary( 'pk_mstes_id' );
             $table-&gt;string( 'siteid' );
             $table-&gt;string( 'label' )-&gt;default( '' );
             $table-&gt;int( 'position' )-&gt;default( 0 );
             $table-&gt;smallint( 'status' )-&gt;default( 1 );
             $table-&gt;meta();
         } );
    }
}</code></pre>



<p>Then, create the manager for the new domain named &#8220;test&#8221;:</p>



<pre class="wp-block-code"><code>namespace Aimeos\MShop\Test\Manager;

class Standard
    extends \Aimeos\MShop\Common\Manager\Base
    implements \Aimeos\MShop\Common\Manager\Iface
{
    public function getSaveAttributes() : array
    {
        return $this-&gt;createAttributes( &#91;
            'label' =&gt; &#91;
            ],
            'status' =&gt; &#91;
                'type' =&gt; 'int',
            ],
            'position' =&gt; &#91;
                'type' =&gt; 'int',
                'label' =&gt; 'Position for sorting'
            ],
        ] );
    }
}</code></pre>



<p>That&#8217;s all! You can work with your new manager like with any other manager from the Aimeos core:</p>



<pre class="wp-block-code"><code>$manager = \Aimeos\MShop::create( $this-&gt;context(), 'test' )

$item = $manager-&gt;create()
    -&gt;set( 'label', 'test label' )
    -&gt;set( 'position', 2 )
    -&gt;set( 'status', 1 );

$item = $manager-&gt;save( $item );

$label = $item-&gt;label;
// or using get() with default value
$label = $item-&gt;get( 'label', 'default value' );</code></pre>



<p>For more information, there&#8217;s an article about <a href="https://aimeos.org/docs/latest/models/create-managers/">creating new managers</a> in the Aimeos documentation.</p>



<h2>Merged order and order base</h2>



<p>The biggest architectural change since the beginning is simplifying the order data domain by merging the order and order base tables/managers/items. The initial idea behind was that we can have several invoice/refund entries for each stored order base item (=basket) but that turned out to not work well over the years and complicated handling orders a lot. Thus, the data is all stored in the order record now.</p>



<p>That leads to some consequences, especially for the JSON:API as this change isn&#8217;t backward compatible! An application using the JSON:API doesn&#8217;t need to use the order endpoint any more to create an order item because the basket endpoint did that already. Furthermore, the property names in the basket changed and &#8220;.base&#8221; has to be removed.</p>



<p>The JSON:API has been backward compatible for six years (2017-2022) and we want to keep v2 stable for the next 5-10 years now.</p>



<h2>Stored basket panel</h2>



<div class="wp-block-image"><figure class="alignright size-medium"><a href="https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket.png"><img width="300" height="180" src="https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-300x180.png" alt="" class="wp-image-1009" srcset="https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-300x180.png 300w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-1024x614.png 1024w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-768x461.png 768w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-1536x922.png 1536w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-100x60.png 100w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-150x90.png 150w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-200x120.png 200w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-450x270.png 450w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-600x360.png 600w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket-900x540.png 900w, https://aimeos.org/tips/wp-content/uploads/2023/10/saved-basket.png 2000w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p>Customer baskets are stored in the database during some time and now, the admin backend contains a new &#8220;Sales &gt; Baskets&#8221; Panel in the admin backend. Administrators and editors can check saved and abandoned baskets of the customers and it&#8217;s also possible to send emails to 3rd party applications for reminding customers about their abandoned carts.</p>



<h2>DB-based translations for type names</h2>



<div class="wp-block-image"><figure class="alignleft size-medium"><a href="https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations.png"><img width="300" height="180" src="https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-300x180.png" alt="" class="wp-image-1011" srcset="https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-300x180.png 300w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-1024x614.png 1024w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-768x461.png 768w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-1536x922.png 1536w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-100x60.png 100w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-150x90.png 150w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-200x120.png 200w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-450x270.png 450w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-600x360.png 600w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations-900x540.png 900w, https://aimeos.org/tips/wp-content/uploads/2023/10/type-translations.png 2000w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure></div>



<p>Before, translations for attribute types were only possible by translating them statically the Gettext translation files or in the Aimeos configuration. Thus, only developers were able to update these translations and it was difficult to update translations if they have been delivered by ERP systems.</p>



<p>Now, type translations are saved in the database along with the types and can be edited in the admin backend and updated easily by ERP systems. This is available for all types, not only attribute types.</p>



<h2>VueJS and GraphQL in backend</h2>



<p>Several panels have been rewritten in the admin backend to use VueJS components now. This lead to better code quality and is another step forward to remove all jQuery-related code in the next versions. Also, VueJS components for which no VueJS 3 version is available has been replaced by better supported ones, namely the combo box select components which have been replaced by Vue Multiselect now. Finally, this will make the upgrade to VueJS 3 possible in the next versions.</p>



<p>Furthermore, requests to the JSON admin API has been replaced by requests to the new GraphQL API where possible. We will continue to extend the GraphQL API and replace existing JSON admin API requests until we completely phased out the JSON admin API. In 2024.x, the JSON admin API will be also marked as deprecated. The frontend JSON:API will never be replaced and will be the only way for frontends to interact with Aimeos servers as GraphQL is not suited well for read-heavy applications like e-commerce apps.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aimeos.org/tips/aimeos-2023-10-lts-release/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<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>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>
