<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Shyim&#39;s Brain</title>
    <link>https://shyim.me/</link>
    <description>Recent content on Shyim&#39;s Brain</description>
    <image>
      <title>Shyim&#39;s Brain</title>
      <url>https://avatars.githubusercontent.com/u/6224096?v=4?s=400</url>
      <link>https://avatars.githubusercontent.com/u/6224096?v=4?s=400</link>
    </image>
    <generator>Hugo -- 0.154.5</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 06 Apr 2024 23:00:00 +0000</lastBuildDate>
    <atom:link href="https://shyim.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Building PHP docker images in a better way with Wolfi-OS</title>
      <link>https://shyim.me/blog/wolfi-os-for-php/</link>
      <pubDate>Sat, 06 Apr 2024 23:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/wolfi-os-for-php/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DEPRECATED: DO NOT USE THIS APPROACH ANYMORE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This blog post contains outdated information. Chainguard has significantly reduced its commitment to open source, and the wolfiphp approach described here is no longer recommended for production use. See the &lt;a href=&#34;https://github.com/orgs/wolfi-dev/discussions/77550&#34; target=&#34;_blank&#34;&gt;wolfiphp announcement&lt;/a&gt; for more details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alternative:&lt;/strong&gt; Use Debian&amp;rsquo;s official packages with &lt;code&gt;apt-get install php8.4-cli&lt;/code&gt; and related packages. While images may be larger, Debian provides stable, openly maintained PHP packages without dependency on corporate-controlled initiatives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building your Shopware project in the CI using shopware-cli</title>
      <link>https://shyim.me/blog/shopware-cli-project-ci/</link>
      <pubDate>Mon, 21 Aug 2023 23:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/shopware-cli-project-ci/</guid>
      <description>&lt;p&gt;In this short blog post, I will show you how you can use &lt;a href=&#34;https://github.com/FriendsOfShopware/shopware-cli&#34; target=&#34;_blank&#34;&gt;shopware-cli&lt;/a&gt; to build your Shopware project and deploy it later with Deployer, Docker image whatever you want.&lt;/p&gt;
&lt;h2 id=&#34;but-first-what-is-shopware-cli&#34;&gt;But first what is Shopware-CLI?&lt;/h2&gt;
&lt;p&gt;Shopware-CLI is a command line application written in Go. It&amp;rsquo;s not the same application as &lt;code&gt;bin/console&lt;/code&gt; in your Project. It&amp;rsquo;s kinda a Swiss knife for the Shopware ecosystem. Likewise, it can do a lot of things like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Devenv: Compose a Developer Environment easily for PHP with Nix</title>
      <link>https://shyim.me/blog/devenv-compose-developer-environment-for-php-with-nix/</link>
      <pubDate>Sun, 25 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/devenv-compose-developer-environment-for-php-with-nix/</guid>
      <description>&lt;p&gt;I have been using &lt;a href=&#34;https://nixos.org&#34; target=&#34;_blank&#34;&gt;Nix&lt;/a&gt; for almost four years and also maintaining some packages at &lt;a href=&#34;https://github.com/nixos/nixpkgs&#34; target=&#34;_blank&#34;&gt;nixpkgs&lt;/a&gt; (the primary Nix repository). The Nix learning curve is complicated, so I could not get my colleagues into it.
But &lt;a href=&#34;https://devenv.sh&#34; target=&#34;_blank&#34;&gt;Devenv&lt;/a&gt; made it so easy to compose a developer environment, so I got their attraction, and some of them switched already, and we are looking to where we can use it too.&lt;/p&gt;
&lt;h2 id=&#34;what-is-devenv&#34;&gt;What is Devenv?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://devenv.sh&#34; target=&#34;_blank&#34;&gt;Devenv&lt;/a&gt; allows you to describe in the Nix language how your &lt;strong&gt;project&lt;/strong&gt; setup has to look like for any Unix-based systems (WSL2, Mac, Linux) for amd64/arm64 architectures. As you may know, no project has the same dependencies: one needs NodeJS 16, and the other NodeJS 18 already. For those reasons, there are already solutions like &lt;a href=&#34;https://github.com/nvm-sh/nvm&#34; target=&#34;_blank&#34;&gt;NVM&lt;/a&gt;(node version manager) where you can pin the version using a &lt;code&gt;.nvmrc&lt;/code&gt; file.
This works, of course, only for Node, and there are similar tools for any language and devenv allows you here to pin any package and with services.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to build your Shopware extension assets much faster</title>
      <link>https://shyim.me/blog/how-to-build-shopware-extension-assets-faster/</link>
      <pubDate>Thu, 15 Dec 2022 21:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/how-to-build-shopware-extension-assets-faster/</guid>
      <description>&lt;p&gt;When you deliver your Shopware extension to a Shop owner, your extension must contain in &lt;code&gt;src/Resources/public&lt;/code&gt; the build assets for the Administration and the Storefront.
We committed in the first plugins in &lt;a href=&#34;https://github.com/FriendsOfShopware&#34; target=&#34;_blank&#34;&gt;Frosh&lt;/a&gt; all assets directly in Git.
But this led to annoying conflicts, or when you merged two pull requests at once, it didn&amp;rsquo;t contain both changes.&lt;/p&gt;
&lt;p&gt;So, for this reason, we removed the build files from all Git repositories again and used &lt;a href=&#34;https://sw-cli.fos.gg&#34; target=&#34;_blank&#34;&gt;shopware-cli&lt;/a&gt; to build the files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy and Cheap Shopware App Hosting using Cloudflare Workers</title>
      <link>https://shyim.me/blog/shopware-app-serverless/</link>
      <pubDate>Sun, 27 Nov 2022 20:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/shopware-app-serverless/</guid>
      <description>&lt;p&gt;Shopware Apps are a different way to extend Shopware and can use an optional external App Server to provide additional functionality from your external backend.
In this Blog post, I want to show you that a Shopware App with a Backend can be easy and also very affordable.&lt;/p&gt;
&lt;h2 id=&#34;the-scary-backend-server&#34;&gt;The scary backend server&lt;/h2&gt;
&lt;p&gt;Before the App system, the only way to extend Shopware was to build a plugin. Plugins are like Symfony Bundles with Shopware magic to offer them in Shopware Store.
So we wrote code that runs directly in the customer&amp;rsquo;s web shop, and we can create additional tables to store our information. But we have to make sure that our code works on many setups and PHP versions.
As the plugins can do like anything and this makes sandboxing difficult or build reliable that they don&amp;rsquo;t break each other. That was when the Shopware app system was born to offer a different extension concept.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two weeks after using Gitpod only for development</title>
      <link>https://shyim.me/blog/two-weeks-of-gitpod/</link>
      <pubDate>Mon, 17 Oct 2022 18:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/two-weeks-of-gitpod/</guid>
      <description>&lt;p&gt;I am working together with &lt;a href=&#34;https://github.com/pumpi&#34; target=&#34;_blank&#34;&gt;pumpi&lt;/a&gt; on a project named &lt;a href=&#34;https://github.com/FriendsOfShopware/shopmon&#34; target=&#34;_blank&#34;&gt;shopmon&lt;/a&gt; (will be announced when it&amp;rsquo;s done) and he is lazy to set up a local development environment, and I was lazy to show him that. So I gave him an instance of VS Code running on Web on my personal VPS.
Everything was fine until I broke somehow IPv6 networking with Docker containers (I really hate networking), so we looked for an alternative.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How we do nightly automated load tests at Shopware</title>
      <link>https://shyim.me/blog/how-we-do-loadtest-shopware/</link>
      <pubDate>Thu, 26 May 2022 20:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/how-we-do-loadtest-shopware/</guid>
      <description>&lt;p&gt;With the Shopware version 6.4.11.0, we improved the performance overall a lot. To make sure that we still improve, we decided to set up a nightly load testing job to ensure that the application performance stays the same. So we have running since a month an automated load test for Shopware 6 running, and in this post, I want to speak about it. To test the Shopware, we use multiple dedicated Cloud Servers from &lt;a href=&#34;https://hetzner.cloud&#34; target=&#34;_blank&#34;&gt;Hetzner Cloud&lt;/a&gt; and wrote some custom tooling around &lt;a href=&#34;https://www.ansible.com&#34; target=&#34;_blank&#34;&gt;Ansible&lt;/a&gt; to spawn the servers before.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shopware Rector Project</title>
      <link>https://shyim.me/blog/shopware-rector-project/</link>
      <pubDate>Tue, 17 May 2022 15:20:00 +0000</pubDate>
      <guid>https://shyim.me/blog/shopware-rector-project/</guid>
      <description>&lt;p&gt;Last week I attended the first Hockethon (combination of Hackathon + Hockenheim) of the &lt;a href=&#34;https://www.kellerkinder.de/&#34; target=&#34;_blank&#34;&gt;Kellerkinder&lt;/a&gt;. That event was unique, and I want to thank Kellerkinder for organizing such an event. If you are interested in what we all did on that event, check out the &lt;a href=&#34;https://marco-steinhaeuser.de/hockethon-may-2022-kellerkinder.html&#34; target=&#34;_blank&#34;&gt;blog post from Marco&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I teamed up with &lt;a href=&#34;https://twitter.com/_MaHoDi_&#34; target=&#34;_blank&#34;&gt;Manuel&lt;/a&gt; we made pretty fast progress to enable HTTP caching in the store-API. As the Storefront already has HTTP caching, we used the same logic. But in the end, we had a reference in the Core store-API to the HTTP cache of the storefront bundle. So to do it right, we had to extract the HTTP cache logic of Storefront into the core component.
While migrating code between two components, we thought this task is so brain-dead, so let&amp;rsquo;s use Rector to do this for us.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A deep dive into Shopware 6 Caching</title>
      <link>https://shyim.me/blog/deep-dive-caching-shopware6/</link>
      <pubDate>Mon, 02 May 2022 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/deep-dive-caching-shopware6/</guid>
      <description>&lt;p&gt;In this blog post, I want to dive into the Shopware Caching to clarify how it works and what you have to care about while developing features. We will go from the inner to the outer caching layer in multiple steps and look into them independently.&lt;/p&gt;
&lt;h2 id=&#34;stage-one---the-object-cache&#34;&gt;Stage one - the object cache&lt;/h2&gt;
&lt;p&gt;First, we will start with the object cache implemented in serval &amp;ldquo;route&amp;rdquo; classes. The &amp;ldquo;route&amp;rdquo; classes/controllers are always used in the Shopware context as an entry point for the store-API. These are controllers and services simultaneously, so the default storefront and the store-API can share the same code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy and fast local Shopware 6 Development on Mac with Symfony CLI</title>
      <link>https://shyim.me/blog/shopware-6-symfony-cli-macos-install/</link>
      <pubDate>Sun, 27 Feb 2022 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/shopware-6-symfony-cli-macos-install/</guid>
      <description>&lt;p&gt;I switched a month ago to macOS as of the M1 hype and wanted to try out the entire Apple ecosystem when I have an iPhone, iPad, and Mac. To get Shopware 6 running, I looked into some Guides for Mac and found out for myself: Why is this all so complicated, and why the hell is anyone using Docker for that.&lt;/p&gt;
&lt;h2 id=&#34;docker-on-mac&#34;&gt;Docker on Mac&lt;/h2&gt;
&lt;p&gt;I saw that many people are using &lt;code&gt;Dockware&lt;/code&gt; for their Setup. (Dockware is a Docker image with all the Tools/Servers included to run Shopware 6).
Docker runs not native on macOS and uses a Virtual machine to emulate a Linux kernel and all the containers below it.
So obviously, the filesystem would be slow, and many people using, for this reason, SFTP or other tools like &lt;code&gt;docker-sync&lt;/code&gt; to hold the same state between host and container.
This is one of the most significant disadvantages for me. Like me, the dumb user has to run a tool to have this synchronized. I know that tools like PhpStorm can do this for me automatically, but when it doesn&amp;rsquo;t work, I will waste so much time to find this out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shopware packages is live &#43; deprecation of packages.friendsofshopware.com</title>
      <link>https://shyim.me/blog/deprecation-frosh-packages/</link>
      <pubDate>Wed, 01 Sep 2021 00:00:01 +0000</pubDate>
      <guid>https://shyim.me/blog/deprecation-frosh-packages/</guid>
      <description>&lt;p&gt;Today is finally the day when &lt;code&gt;Shopware packages&lt;/code&gt; is being released. You might ask what is &lt;code&gt;Shopware packages&lt;/code&gt;, and what does it have to do with packages.friendsofshopware.com?
Good question 🙂&lt;/p&gt;
&lt;h2 id=&#34;what-is-shopware-packages&#34;&gt;What is Shopware packages?&lt;/h2&gt;
&lt;p&gt;Shopware packages is the long-awaited official &lt;code&gt;Composer package repository&lt;/code&gt; for all Shopware store extensions. But why do we want to use that or care about that?&lt;/p&gt;
&lt;h2 id=&#34;what-can-i-expect-from-shopware-packages&#34;&gt;What can I expect from Shopware packages?&lt;/h2&gt;
&lt;p&gt;With composer, we can manage all dependencies in our Shopware setups. We usually use a composer project template which requires Shopware and provides some basic tooling.
When we want now update the Shopware version, we just pick a newer version of Shopware in composer, and we are ready to go.
That&amp;rsquo;s nice and easy for our Shopware upgrades, but we mostly also use extensions for our shops such as PayPal.
Typically, we download the ZIP-file from the Store, unpack and upload it to &lt;code&gt;custom/plugins&lt;/code&gt;. Yes, we all are lazy and this really sounds annoying.
With the new repository, we can treat the extensions as normal composer dependency like just using &lt;code&gt;composer req store.shopware.com/swagpaypal&lt;/code&gt; like cool guys 😎.
This will automatically get the most recent version compatible to our Shopware version and other requirements set by the extension manufacturer.
Since the dependencies are built directly into Composer, we can use typical commands like &lt;code&gt;composer update store.shopware.com/swagpaypal&lt;/code&gt; to update the extension or even update Shopware and all required extensions at once. It&amp;rsquo;s cool, isn&amp;rsquo;t it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimization of Thumbnails in PHP</title>
      <link>https://shyim.me/blog/thumbnails-and-php/</link>
      <pubDate>Wed, 14 Jul 2021 00:15:59 +0000</pubDate>
      <guid>https://shyim.me/blog/thumbnails-and-php/</guid>
      <description>&lt;p&gt;Every shop owner wants a fast online shop with the best pagespeed results. The images have a huge impact on these stats.
But can we achieve better results with only PHP?&lt;/p&gt;
&lt;h2 id=&#34;image-generation-with-php&#34;&gt;Image generation with PHP&lt;/h2&gt;
&lt;p&gt;In PHP there are two ways how images can be generated: using the &lt;code&gt;gd&lt;/code&gt;, or the &lt;code&gt;ImageMagick&lt;/code&gt; extension. Both extensions are not optimized to create very small images and they are quite slow. They also lack support for newer image formats like avif (PHP 8.1 will have avif in &lt;code&gt;gd&lt;/code&gt;).
The PHP community has build packages (like &lt;a href=&#34;https://github.com/spatie/image-optimizer&#34; target=&#34;_blank&#34;&gt;spatie/image-optimizer&lt;/a&gt;) to optimize an image after it has been uploaded by executing several optimziers in the CLI. This approach requires to have functions like &lt;code&gt;exec&lt;/code&gt;, &lt;code&gt;system&lt;/code&gt; or &lt;code&gt;proc_open&lt;/code&gt; available, which are disabled by default on some shared hosters. Also, the optimizers need to be installed on the host system. But there are new technologies like &lt;code&gt;ffi&lt;/code&gt; or &lt;code&gt;wasm&lt;/code&gt; available in PHP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>You don&#39;t need a plugin to customize a Shopware 6 project</title>
      <link>https://shyim.me/blog/you-dont-need-a-plugin-to-customize-shopware-6/</link>
      <pubDate>Sun, 04 Jul 2021 23:15:59 +0000</pubDate>
      <guid>https://shyim.me/blog/you-dont-need-a-plugin-to-customize-shopware-6/</guid>
      <description>&lt;p&gt;Every developer who has created a plugin has already created a Symfony bundle. All Shopware plugins are extending from a Shopware bundle class which extends from the Symfony bundle.
You might now ask yourself: when plugins are bundles, why did you write this blog post? First, let&amp;rsquo;s list the differences of a plugin and the two types of bundles:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Feature&lt;/th&gt;
          &lt;th&gt;Plugin&lt;/th&gt;
          &lt;th&gt;Shopware Bundle&lt;/th&gt;
          &lt;th&gt;Symfony Bundle&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;modifying Shopware&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;can have migrations&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;can be a theme&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;can modify admin / storefront with js/css&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;can be installed, uninstalled (lifecyle)&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;can be managed by the shop owner in administration&lt;/td&gt;
          &lt;td&gt;✔️&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;the-benefits-of-working-with-a-bundle&#34;&gt;The benefits of working with a Bundle&lt;/h2&gt;
&lt;p&gt;Having less features is sometimes better.
As an agency, you don&amp;rsquo;t want the shop owner to manage your custom built extensions. The lifecycle of plugins is intended mostly for store distribution and often irrelevant in a custom built environment.
When you make changes to a project, you want your code to be active always, regardless of the state of the shop. This makes Shopware updates smoother as well, as the upgrade process runs without plugins your code will still run.
This solves &lt;a href=&#34;https://github.com/shopware/production/issues/57&#34; target=&#34;_blank&#34;&gt;theme compile issues during update process&lt;/a&gt;, e.g.
The loading order of the bundles can be fix configured in the &lt;code&gt;config/bundles.php&lt;/code&gt; file to fix bundle dependency issues.
Also you could store the entire code in the template of the Shopware 6 project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a Shopware Environment with Windows</title>
      <link>https://shyim.me/blog/shopware-development-environment-windows/</link>
      <pubDate>Fri, 16 Oct 2020 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/shopware-development-environment-windows/</guid>
      <description>&lt;p&gt;At work I use Linux, but at home I prefer Windows due to gaming. In this short Tutorial I would like to share my Windows setup with you.&lt;/p&gt;
&lt;h2 id=&#34;my-recommended-setup-includes&#34;&gt;My recommended setup includes:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WSL 2&lt;/li&gt;
&lt;li&gt;Docker Desktop for Windows&lt;/li&gt;
&lt;li&gt;Ubuntu / Debian&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-us/p/gwsl/9nl6kd1h33v3&#34; target=&#34;_blank&#34;&gt;GWSL&lt;/a&gt; (X-Server for Windows)&lt;/li&gt;
&lt;li&gt;PhpStorm&lt;/li&gt;
&lt;li&gt;Development Docker setup or my own Docker setup. (We will use my own in this tutorial)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At first we need to install WSL 2 and Docker Desktop. Please follow the tutorials below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I don&#39;t like Custom fields?</title>
      <link>https://shyim.me/blog/custom-fields/</link>
      <pubDate>Tue, 25 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/custom-fields/</guid>
      <description>&lt;p&gt;Normally every project needs custom values saved on products or another entities. Shopware does offer by default Custom fields. It looks nice, but it can produce very fast issues.&lt;/p&gt;
&lt;p&gt;Before we start: &lt;strong&gt;This is my opinion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with a simple Pro Contra list.&lt;/p&gt;
&lt;h3 id=&#34;pro&#34;&gt;Pro&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Can be easily created in the Administration / Code.&lt;/li&gt;
&lt;li&gt;Can define field types, labels etc and Shopware does the rendering in Administration for me&lt;/li&gt;
&lt;li&gt;Loaded by default on the entities&lt;/li&gt;
&lt;li&gt;Custom Fields are schema less. You can save anything in it&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;contra&#34;&gt;Contra&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Custom Fields are schema less. You can save anything in it&lt;/li&gt;
&lt;li&gt;They are saved as JSON
&lt;ul&gt;
&lt;li&gt;Hard to modify using SQL&lt;/li&gt;
&lt;li&gt;Cannot have associations&lt;/li&gt;
&lt;li&gt;Slow on SQL Filtering, Aggregation&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Loaded by default on the entities&lt;/li&gt;
&lt;li&gt;Support between MySQL and MariaDB differs and Performance&lt;/li&gt;
&lt;li&gt;Cannot have Flags. All fields are public using Sales-Channel / Store-API&lt;/li&gt;
&lt;li&gt;Cause it does not have a Schema they will be indexed as &lt;code&gt;dynamic&lt;/code&gt; in Elasticsearch. This brings lot of other problems&lt;/li&gt;
&lt;li&gt;You don&amp;rsquo;t have a control is it translatable or not&lt;/li&gt;
&lt;li&gt;Fields values cannot be easy deleted on all entities. You need to modify each entry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The most problems are introduced cause of the usage of an JSON field. In SQL the accessed fields needs to be extracted. This takes some time of course.
On a bigger shop using many products this could leak to performance issues in the listing when it&amp;rsquo;s used inside a product filter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to deploy plugin updates automatically to the Shopware Store</title>
      <link>https://shyim.me/blog/how-to-deploy-plugin-updates-to-shopware-store/</link>
      <pubDate>Wed, 18 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/blog/how-to-deploy-plugin-updates-to-shopware-store/</guid>
      <description>&lt;p&gt;This blog post describes a small example how to automaticly deploy plugin updates to the Store. I will use the &lt;a href=&#34;https://github.com/FriendsOfShopware/FroshPerformance&#34; target=&#34;_blank&#34;&gt;FroshPerformance&lt;/a&gt; plugin as example.&lt;/p&gt;
&lt;h2 id=&#34;preparation&#34;&gt;Preparation&lt;/h2&gt;
&lt;p&gt;You will need&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a Plugin which based on the 5.2 Pluginsystem or Shopware 6 Plugin&lt;/li&gt;
&lt;li&gt;a Continuous Integration (i will use Travis as example)&lt;/li&gt;
&lt;li&gt;Credentials for the Shopware Account&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/FriendsOfShopware/FroshPluginUploader/&#34; target=&#34;_blank&#34;&gt;FroshPluginUploader&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;prepare-the-plugin-itself&#34;&gt;Prepare the Plugin itself&lt;/h3&gt;
&lt;p&gt;You will need a &lt;code&gt;plugin.xml&lt;/code&gt; with filled &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;compability&lt;/code&gt; and &lt;code&gt;changelog&lt;/code&gt; for the languages &lt;code&gt;en&lt;/code&gt; and &lt;code&gt;de&lt;/code&gt;. All these informations will be picked up automaticly and updated in the Account.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cluster Setup</title>
      <link>https://shyim.me/shopware-6/cluster-setup/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-6/cluster-setup/</guid>
      <description>This guide assumes you are using Shopware 6.3.0.0 or later</description>
    </item>
    <item>
      <title>Config Overview</title>
      <link>https://shyim.me/shopware-5/config-overview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/config-overview/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.google.com/spreadsheets/d/1aI8h-8cs3foUusVYSIQfRGvs6PxCGhS2ypHpoSOZVZk/edit?usp=sharing&#34; target=&#34;_blank&#34;&gt;Config Table&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>config.php Tweaks</title>
      <link>https://shyim.me/shopware-5/config.php-tweaks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/config.php-tweaks/</guid>
      <description>&lt;h2 id=&#34;disable-template-cache&#34;&gt;Disable Template Cache&lt;/h2&gt;
&lt;p&gt;Add following code in your config.php to disable the Template Cache&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;template&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;forceCompile&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configure-smtp-in-configphp&#34;&gt;Configure SMTP in config.php&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mail&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;type&amp;#39;&lt;/span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;smtp&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;// Possible values: &amp;#39;mail&amp;#39;, &amp;#39;smtp&amp;#39;, &amp;#39;file&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;host&amp;#39;&lt;/span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;port&amp;#39;&lt;/span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;587&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ssl&amp;#39;&lt;/span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tls&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;// Possible values: &amp;#39;&amp;#39;, &amp;#39;tls&amp;#39;, &amp;#39;ssl&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;auth&amp;#39;&lt;/span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;login&amp;#39;&lt;/span&gt;,  &lt;span style=&#34;color:#75715e&#34;&gt;// Possible values: &amp;#39;plain&amp;#39;, &amp;#39;login&amp;#39;, &amp;#39;crammd5&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;username&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;me@localhost&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mypassword&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;redis&#34;&gt;Redis&lt;/h2&gt;
&lt;p&gt;When you use Redis for Session &lt;strong&gt;and&lt;/strong&gt; Cache, you must use different databases for each. Otherwise, when you delete your Cache, you will also wipe all your sessions!&lt;/p&gt;</description>
    </item>
    <item>
      <title>DAL exceptions</title>
      <link>https://shyim.me/shopware-6/dal-errors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-6/dal-errors/</guid>
      <description>&lt;h2 id=&#34;expected-input-to-be-non-empty-non-associative-array&#34;&gt;Expected input to be non empty non associative array.&lt;/h2&gt;
&lt;p&gt;The entity repositories are built for multiple operations. Example array:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Test&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;recrusion-with-onetoone-association&#34;&gt;Recrusion with OneToOne Association&lt;/h2&gt;
&lt;p&gt;Both sides of the association should not have &lt;code&gt;autoload&lt;/code&gt; enabled. Otherwise you have an never-ending recrusion&lt;/p&gt;</description>
    </item>
    <item>
      <title>Event Cheat-Sheet</title>
      <link>https://shyim.me/shopware-5/event-cheat-sheet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/event-cheat-sheet/</guid>
      <description>&lt;h2 id=&#34;shopware_modules_order_sendmail_filtervariables&#34;&gt;Shopware_Modules_Order_SendMail_FilterVariables&lt;/h2&gt;
&lt;p&gt;Manipulate variables of sOrder mail&lt;/p&gt;
&lt;h2 id=&#34;shopware_modules_admin_checkuser_successful&#34;&gt;Shopware_Modules_Admin_CheckUser_Successful&lt;/h2&gt;
&lt;p&gt;After checked is the user loggedin&lt;/p&gt;
&lt;h2 id=&#34;enlight_controller_action_module_controller_action&#34;&gt;Enlight_Controller_Action_MODULE_CONTROLLER_ACTION&lt;/h2&gt;
&lt;p&gt;Overwrite or add new actions to a controller. In your subscriber you have to return true; at the end&lt;/p&gt;
&lt;h2 id=&#34;enlight_bootstrap_afterinitresource_diname&#34;&gt;Enlight_Bootstrap_AfterInitResource_DINAME&lt;/h2&gt;
&lt;p&gt;After a service has been loaded&lt;/p&gt;
&lt;h2 id=&#34;enlight_bootstrap_initresource_diname&#34;&gt;Enlight_Bootstrap_InitResource_DINAME&lt;/h2&gt;
&lt;p&gt;Before a service has been loaded or register your own di&lt;/p&gt;
&lt;h2 id=&#34;enlight_components_mail_send&#34;&gt;Enlight_Components_Mail_Send&lt;/h2&gt;
&lt;p&gt;Before a mail is sent&lt;/p&gt;
&lt;h2 id=&#34;theme_inheritance_template_directories_collected&#34;&gt;Theme_Inheritance_Template_Directories_Collected&lt;/h2&gt;
&lt;p&gt;An event to register global template directories&lt;/p&gt;
&lt;h2 id=&#34;enlight_controller_front_dispatchloopshutdown&#34;&gt;Enlight_Controller_Front_DispatchLoopShutdown&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s the last event before the response is send&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extjs Tweaks</title>
      <link>https://shyim.me/shopware-5/extjs-less-than-3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/extjs-less-than-3/</guid>
      <description>&lt;h2 id=&#34;open-backend-application-with-link&#34;&gt;Open backend application with link&lt;/h2&gt;
&lt;p&gt;With /backend?app=&lt;strong&gt;[NAME]&lt;/strong&gt; can you open any Module (/backend/?app=Article), you can also pass supported variables like /backend/?app=[&lt;strong&gt;NAME&lt;/strong&gt;]&amp;amp;params[&lt;strong&gt;NAME&lt;/strong&gt;]=&lt;strong&gt;VALUE&lt;/strong&gt; (/backend/?app=Article&amp;amp;params[articleId]=1)&lt;/p&gt;
&lt;h2 id=&#34;create-a-real-checkbox-in-configxml&#34;&gt;Create a real checkbox in config.xml&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-markup&#34; data-lang=&#34;markup&#34;&gt;&amp;lt;element type=&amp;#34;boolean&amp;#34;&amp;gt;
    &amp;lt;name&amp;gt;test&amp;lt;/name&amp;gt;
    &amp;lt;label lang=&amp;#34;de&amp;#34;&amp;gt;test&amp;lt;/label&amp;gt;
    &amp;lt;label lang=&amp;#34;en&amp;#34;&amp;gt;test&amp;lt;/label&amp;gt;
    &amp;lt;options&amp;gt;
      &amp;lt;xtype&amp;gt;checkbox&amp;lt;/xtype&amp;gt;
    &amp;lt;/options&amp;gt;
&amp;lt;/element&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;use-components-from-another-backend-application&#34;&gt;Use components from another backend application&lt;/h2&gt;
&lt;p&gt;When you want to use components from an another application, you have to load first the App. Otherwise the Ext.Loader cannot find the right controller to load the files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>General exceptions</title>
      <link>https://shyim.me/shopware-6/general-errors/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-6/general-errors/</guid>
      <description>&lt;h1 id=&#34;pagecontroller-cant-be-requested-via-xmlhttprequest&#34;&gt;PageController can&amp;rsquo;t be requested via XmlHttpRequest&lt;/h1&gt;
&lt;p&gt;By default Ajax is disabled on all Storefront controllers. You can enable it by adding an new defaults &lt;code&gt;XmlHttpRequest&lt;/code&gt;
Example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/**
 * @Route(&amp;#34;/widgets/test&amp;#34;, name=&amp;#34;widgets.test&amp;#34;, options={&amp;#34;seo&amp;#34;=&amp;#34;false&amp;#34;}, methods={&amp;#34;GET&amp;#34;}, defaults={&amp;#34;XmlHttpRequest&amp;#34;=true})
 */
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://shyim.me/shopware-5/introduction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/introduction/</guid>
      <description>Hey my name is Shyim. In this personal Knowledgebase I will share with you some Tips and Tricks about Shopware.</description>
    </item>
    <item>
      <title>Introduction</title>
      <link>https://shyim.me/shopware-6/introduction/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-6/introduction/</guid>
      <description>Hey my name is Shyim. In this personal Knowledgebase I will share with you some Tips and Tricks about Shopware.</description>
    </item>
    <item>
      <title>Plugin System Features with Version</title>
      <link>https://shyim.me/shopware-5/plugin-system-features-with-version/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/plugin-system-features-with-version/</guid>
      <description>&lt;p&gt;&lt;strong&gt;5.2.7&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;****&lt;a href=&#34;https://github.com/shopware/shopware/pull/654&#34; target=&#34;_blank&#34;&gt;automatic controller registration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5210&#34;&gt;5.2.10&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/blob/5.3/UPGRADE-5.2.md#5210&#34; target=&#34;_blank&#34;&gt;added my_plugin.plugin_dir parameter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5211&#34;&gt;5.2.11&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/pull/698&#34; target=&#34;_blank&#34;&gt;config.xml with store values and translateable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5213&#34;&gt;5.2.13&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/pull/806&#34; target=&#34;_blank&#34;&gt;Autoloading of plugin resources (css,js,less)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/blob/5.3/UPGRADE-5.2.md#5213&#34; target=&#34;_blank&#34;&gt;Payment Installer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/blob/5.3/UPGRADE-5.2.md#5213&#34; target=&#34;_blank&#34;&gt;Automatisches laden von .css/.js/.less Dateien&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5215&#34;&gt;5.2.15&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/pull/900&#34; target=&#34;_blank&#34;&gt;cronjob.xml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;5217&#34;&gt;5.2.17&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shopware/shopware/pull/939&#34; target=&#34;_blank&#34;&gt;config type button&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Plugins</title>
      <link>https://shyim.me/shopware-5/plugins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/plugins/</guid>
      <description>&lt;h2 id=&#34;add-a-smarty-plugin-folder-with-a-plugin&#34;&gt;Add a Smarty Plugin folder with a Plugin&lt;/h2&gt;
&lt;p&gt;It can be solved with a simple CompilerPass in your Plugin&lt;/p&gt;
&lt;p&gt;{% code title=&amp;ldquo;MyPlugin/Components/CompilerPass/AddTemplatePluginDirCompilerPass.php&amp;rdquo; %}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;namespace&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MyPlugin\Components\CompilerPass&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;use&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;use&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Symfony\Component\DependencyInjection\ContainerBuilder&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;AddTemplatePluginDirCompilerPass&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;implements&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;CompilerPassInterface&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;process&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;ContainerBuilder&lt;/span&gt; $container)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $template &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $container&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getDefinition&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;template&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $template&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;addMethodCall&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;addPluginsDir&amp;#39;&lt;/span&gt;, [$container&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;getParameter&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;my_plugin.my_parameter_to_folder&amp;#39;&lt;/span&gt;)]);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;{% endcode %}&lt;/p&gt;
&lt;p&gt;{% code title=&amp;ldquo;MyPlugin.php&amp;rdquo; %}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;MyPlugin&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;build&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;ContainerBuilder&lt;/span&gt; $container)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;parent&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;build&lt;/span&gt;($container);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        $container&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;addCompilerPass&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;AddTemplatePluginDirCompilerPass&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;{% endcode %}&lt;/p&gt;
&lt;h2 id=&#34;inject-plugin-configuration&#34;&gt;Inject Plugin Configuration&lt;/h2&gt;
&lt;p&gt;This method loads only configuration from main shop.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Privacy Policy — Shopware Shop Manager</title>
      <link>https://shyim.me/app-privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/app-privacy/</guid>
      <description>&lt;p&gt;&lt;em&gt;Last updated: June 12, 2026&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Shopware Shop Manager (&amp;ldquo;the app&amp;rdquo;) is an Android companion app that lets merchants
manage their own Shopware 6 shop. It is operated by Soner Sayakci (&lt;a href=&#34;mailto:s.sayakci@gmail.com&#34;&gt;s.sayakci@gmail.com&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&#34;the-short-version&#34;&gt;The short version&lt;/h2&gt;
&lt;p&gt;The app has &lt;strong&gt;no backend, no analytics and no tracking&lt;/strong&gt;. It communicates exclusively
with the Shopware Admin API of the shop(s) &lt;strong&gt;you&lt;/strong&gt; connect. Everything the app stores,
it stores on your device.&lt;/p&gt;
&lt;h2 id=&#34;what-the-app-stores-on-your-device&#34;&gt;What the app stores on your device&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Shop connection settings&lt;/strong&gt;: the shop URL, display name, color tag, daily revenue
target, low-stock threshold, content language and the access scopes of your login.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session credential&lt;/strong&gt;: when you sign in, your admin password is used once to obtain
an OAuth session from &lt;em&gt;your&lt;/em&gt; shop and is &lt;strong&gt;never stored&lt;/strong&gt;. The app keeps only a
revocable, rotating refresh token, encrypted with a hardware-backed key
(Android Keystore, AES-GCM). You can revoke it at any time by changing your
password or deleting the user session in your shop&amp;rsquo;s administration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shop data cache&lt;/strong&gt;: a small overview snapshot per shop (revenue figures, order
counts, recent orders, low-stock products, pending review count) so the dashboard
works offline. It is refreshed from your shop and can be deleted by removing the
shop or clearing the app&amp;rsquo;s data.&lt;/li&gt;
&lt;li&gt;Generated documents (PDF invoices/delivery notes) and camera captures are staged in
the app&amp;rsquo;s &lt;strong&gt;cache&lt;/strong&gt; directory only for viewing/sharing/uploading.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Credentials and cached shop data are &lt;strong&gt;excluded from Android cloud backup and
device-to-device transfer&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problems and Solutions</title>
      <link>https://shyim.me/shopware-5/problems-and-solutions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/problems-and-solutions/</guid>
      <description>&lt;h2 id=&#34;sending-a-bcc-mail-does-not-work&#34;&gt;Sending a BCC Mail does not work?&lt;/h2&gt;
&lt;p&gt;Zend-Mailer does not Support BCC on SMTP transport.&lt;a href=&#34;https://github.com/shopware/shopware/blob/v5.3.4/engine/Library/Zend/Mail/Transport/Smtp.php#L233&#34; target=&#34;_blank&#34;&gt; It drops the Bcc&lt;/a&gt; header before sending the mail.&lt;/p&gt;
&lt;p&gt;A solution could be to clone the mail and replace the receiver&lt;/p&gt;
&lt;h2 id=&#34;plugin-manager-still-shows-trial-version&#34;&gt;Plugin-Manager still shows Trial-Version&lt;/h2&gt;
&lt;p&gt;Open Plugin-Manager and press the Button &amp;ldquo;Synchronize licenses&amp;rdquo;. When the button does not exist in your used Version:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login in your Shopware Account in Plugin Manager&lt;/li&gt;
&lt;li&gt;Clear all cookies of the Page&lt;/li&gt;
&lt;li&gt;Login in your Backend&lt;/li&gt;
&lt;li&gt;Licenses should be now synchronized in Background&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;smarty-plugins-missing-on-finish-page&#34;&gt;Smarty Plugins missing on Finish Page&lt;/h2&gt;
&lt;p&gt;Can be only fixed with an Update to Shopware 5.4.0&lt;/p&gt;</description>
    </item>
    <item>
      <title>Salary Transparency</title>
      <link>https://shyim.me/salary-transparency/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/salary-transparency/</guid>
      <description>&lt;p&gt;I got the idea from &lt;a href=&#34;https://xeiaso.net/salary-transparency&#34; target=&#34;_blank&#34;&gt;Xeiaso&lt;/a&gt; to make my salary also transparent.&lt;/p&gt;
&lt;p&gt;From Xeiaso:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Please consider publishing your salary data like this as well. By open, voluntary transparency we can help to end stigmas around discussing pay and help ensure that the next generations of people in tech are treated fairly. Stigmas thrive in darkness but die in the light of day. You can help end the stigma by playing your cards out in the open like this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Smarty</title>
      <link>https://shyim.me/shopware-5/smarty/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-5/smarty/</guid>
      <description>&lt;h2 id=&#34;assign-the-snippet-value-to-a-variable&#34;&gt;Assign the snippet value to a variable&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-markup&#34; data-lang=&#34;markup&#34;&gt;{s name=&amp;#34;NameFromSnippet&amp;#34; assign=&amp;#34;tplVariable&amp;#34;}Default Value{/s}
{$tplVariable|replace:&amp;#39;Test&amp;#39;:&amp;#39;Lol&amp;#39;}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;read-plugin-config-values&#34;&gt;Read plugin config values&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{config name=&amp;#34;myVar&amp;#34; namespace=&amp;#34;MYPLUGINNAME&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;check-existence-of-template-file&#34;&gt;Check existence of Template file&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{if &amp;#34;frontend/foo.tpl&amp;#34;|template_exists}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Supports</title>
      <link>https://shyim.me/supports/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/supports/</guid>
      <description>&lt;p&gt;Sponsoring possible with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sponsors/shyim&#34; target=&#34;_blank&#34;&gt;Github Sponsor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://paypal.me/shyim&#34; target=&#34;_blank&#34;&gt;PayPal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This awesome people are supporting me:&lt;/p&gt;
&lt;h1 id=&#34;github-sponsors&#34;&gt;Github Sponsors&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Thanks &amp;lt;3 to Webversiert GmbH for sponsoring me &amp;lt;3&lt;/li&gt;
&lt;li&gt;Thanks &amp;lt;3 to Rafael Prukop for sponsoring me &amp;lt;3&lt;/li&gt;
&lt;li&gt;Christopher Dosin for sponsoring me &amp;lt;3&lt;/li&gt;
&lt;li&gt;Marcus Kreusch for sponsoring me &amp;lt;3&lt;/li&gt;
&lt;li&gt;Alexander Wolf for sponsoring me &amp;lt;3&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;paypal-supporters&#34;&gt;PayPal Supporters&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Kai Neuwerth (13,37€)&lt;/li&gt;
&lt;li&gt;Sebastian Langer (5€)&lt;/li&gt;
&lt;li&gt;Martin Schneider (6,66€)&lt;/li&gt;
&lt;li&gt;Uwe Kleinmann (5€)&lt;/li&gt;
&lt;li&gt;Joshua Behrens (4,20€)&lt;/li&gt;
&lt;li&gt;Michael Telgmann (6,66€)&lt;/li&gt;
&lt;li&gt;Christopher Puschmann (5,77€)&lt;/li&gt;
&lt;li&gt;Alea123 (6,66€)&lt;/li&gt;
&lt;li&gt;Rafael Prukop (25€)&lt;/li&gt;
&lt;li&gt;Nils Vosgröne (0,68€)&lt;/li&gt;
&lt;li&gt;Lars Schröder (6,66€)&lt;/li&gt;
&lt;li&gt;Lars Lohmann (5€)&lt;/li&gt;
&lt;li&gt;Sebastian König (5€)&lt;/li&gt;
&lt;li&gt;Alexander W.H. Wachert (5€)&lt;/li&gt;
&lt;li&gt;Johan Moormann (75€)&lt;/li&gt;
&lt;li&gt;David Neustadt (5€)&lt;/li&gt;
&lt;li&gt;Christian Voss (50€)&lt;/li&gt;
&lt;li&gt;Stefano Rutishauser (15€)&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Usefull feature flag overview</title>
      <link>https://shyim.me/shopware-6/featureflag-recommendations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://shyim.me/shopware-6/featureflag-recommendations/</guid>
      <description>&lt;p&gt;Here is an small overview of usefull feature flags:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Remove cheapest price from normal ProductEntity saves A lot of resources on seo indexer
FEATURE_NEXT_16151=1

# Scopes seo urls to an specific sales channel and only generates seo urls for accessible entities in that sales channel
FEATURE_NEXT_13410=1

# Configure Elasticsearch using default admin search settings (introduced with 6.4.16.0)
FEATURE_NEXT_22900=1

# Basic performance improvments
# only loading required seo associations in DAL
# not calculation empty cards
# checkout/cart returns 204 instead rendering of content
PERFORMANCE_TWEAKS=1
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
  </channel>
</rss>
