<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shopware on besserentwickeln.de</title><link>https://besserentwickeln.de/tags/shopware/</link><description>Recent content in Shopware on besserentwickeln.de</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright>Philipp Tuchardt</copyright><lastBuildDate>Tue, 21 Jan 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://besserentwickeln.de/tags/shopware/index.xml" rel="self" type="application/rss+xml"/><item><title>Shopware 6 Subscriber Beispiel</title><link>https://besserentwickeln.de/n/shopware-6-subscriber-beispiel/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/shopware-6-subscriber-beispiel/</guid><description>&lt;p>Pfad: &lt;code>MyTheme/src/Subscriber/ProductListingSubscriber.php&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-php" data-lang="php">&lt;span class="line">&lt;span class="cl">&lt;span class="o">&amp;lt;?&lt;/span>&lt;span class="nx">php&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">namespace&lt;/span> &lt;span class="nx">MyTheme\Subscriber&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">use&lt;/span> &lt;span class="nx">Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">use&lt;/span> &lt;span class="nx">Symfony\Component\EventDispatcher\EventSubscriberInterface&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">ProductListingSubscriber&lt;/span> &lt;span class="k">implements&lt;/span> &lt;span class="nx">EventSubscriberInterface&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">public&lt;/span> &lt;span class="k">static&lt;/span> &lt;span class="k">function&lt;/span> &lt;span class="nf">getSubscribedEvents&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="k">array&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">ProductListingCriteriaEvent&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="na">class&lt;/span> &lt;span class="o">=&amp;gt;&lt;/span> &lt;span class="s1">&amp;#39;onProductListingCriteria&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">public&lt;/span> &lt;span class="k">function&lt;/span> &lt;span class="nf">onProductListingCriteria&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ProductListingCriteriaEvent&lt;/span> &lt;span class="nv">$event&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">void&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$criteria&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nv">$event&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">getCriteria&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$criteria&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">addAssociation&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;properties&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Pfad: &lt;code>src/Resources/config/services.xml&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; ?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;container&lt;/span> &lt;span class="na">xmlns=&lt;/span>&lt;span class="s">&amp;#34;http://symfony.com/schema/dic/services&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">xmlns:xsi=&lt;/span>&lt;span class="s">&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">xsi:schemaLocation=&lt;/span>&lt;span class="s">&amp;#34;http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;services&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;service&lt;/span> &lt;span class="na">id=&lt;/span>&lt;span class="s">&amp;#34;MyTheme\Subscriber\ProductListingSubscriber&amp;#34;&lt;/span> &lt;span class="na">public=&lt;/span>&lt;span class="s">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="nt">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;tag&lt;/span> &lt;span class="na">name=&lt;/span>&lt;span class="s">&amp;#34;kernel.event_subscriber&amp;#34;&lt;/span>&lt;span class="nt">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/service&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;/services&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/container&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Nicht vergessen, den Cache zu leeren :)&lt;/p></description></item><item><title>Twig If-Bedingung kurz geschrieben</title><link>https://besserentwickeln.de/n/twig-if-bedingung-kurz-geschrieben/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/twig-if-bedingung-kurz-geschrieben/</guid><description>&lt;p>Lange Version&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-twig" data-lang="twig">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">{%&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nv">category.translated.customFields.my_custom_field&lt;/span> &lt;span class="k">or&lt;/span> &lt;span class="nv">category.translated.customFields.my_custom_field&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="kp">false&lt;/span> &lt;span class="cp">%}&lt;/span>&lt;span class="x">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Kurze Version&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-twig" data-lang="twig">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">{{&lt;/span> &lt;span class="nv">category.translated.customFields.my_custom_field&lt;/span> &lt;span class="o">??&lt;/span> &lt;span class="kp">false&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s1">&amp;#39;foo&amp;#39;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;bar&amp;#39;&lt;/span> &lt;span class="cp">}}&lt;/span>&lt;span class="x">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Twig: Block aus Datei einbinden</title><link>https://besserentwickeln.de/n/twig-block-aus-datei-einbinden/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/twig-block-aus-datei-einbinden/</guid><description>&lt;p>Beispiel&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-twig" data-lang="twig">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">{{&lt;/span> &lt;span class="nb">block&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="s1">&amp;#39;my_cool_block&amp;#39;&lt;/span>&lt;span class="o">,&lt;/span> &lt;span class="s1">&amp;#39;@Storefront/path/to/my/file.html.twig&amp;#39;&lt;/span>&lt;span class="o">)&lt;/span> &lt;span class="cp">}}&lt;/span>&lt;span class="x">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>M1 DDEV Chromium</title><link>https://besserentwickeln.de/p/m1-ddev-chromium/</link><pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/p/m1-ddev-chromium/</guid><description>&lt;p>Einer meiner Kollegen bekam auf seinem M1-Macbook beim Ausführen von &lt;code>bin/build-storefront.sh&lt;/code> folgenden Fehler.&lt;/p>
&lt;h2 id="fehlermeldung">Fehlermeldung
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even &lt;span class="k">if&lt;/span> nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! code &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! path /var/www/html/vendor/shopware/storefront/Resources/app/storefront/node_modules/puppeteer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! &lt;span class="nb">command&lt;/span> failed
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! &lt;span class="nb">command&lt;/span> sh /tmp/install-9c2094bf.sh
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! The chromium binary is not available &lt;span class="k">for&lt;/span> arm64.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! If you are on Ubuntu, you can install with:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! sudo apt install chromium
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! sudo apt install chromium-browser
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! /var/www/html/vendor/shopware/storefront/Resources/app/storefront/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:115
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! throw new Error&lt;span class="o">()&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! Error
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! at /var/www/html/vendor/shopware/storefront/Resources/app/storefront/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserFetcher.js:115:27
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">npm ERR! at FSReqCallback.oncomplete &lt;span class="o">(&lt;/span>node:fs:206:21&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Als Workaround haben wir &lt;code>--ignore-scripts --legacy-peer-deps&lt;/code> zu jedem &lt;code>npm install&lt;/code> bzw. &lt;code>npm clean-install&lt;/code> in der &lt;code>build-storefront.sh&lt;/code> hinzugefügt.&lt;/p></description></item><item><title>Shopware 6: Automatisiertes Security-Update mit GitLab</title><link>https://besserentwickeln.de/p/shopware-6-automatisiertes-security-update-mit-gitlab/</link><pubDate>Thu, 25 Aug 2022 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/p/shopware-6-automatisiertes-security-update-mit-gitlab/</guid><description>&lt;p>Diese Pipeline erstellt automatisch einen Merge Request mit einem Update des Shopware Security Plugins, basierend auf einem Tag.&lt;/p>
&lt;h2 id="voraussetzungen">Voraussetzungen
&lt;/h2>&lt;ul>
&lt;li>GitLab&lt;/li>
&lt;li>Shopware 6 Composer-Setup&lt;/li>
&lt;/ul>
&lt;h3 id="variablen">Variablen
&lt;/h3>&lt;ul>
&lt;li>SSH_DEPLOY_PRIVATE_KEY
&lt;ul>
&lt;li>Der private Schlüssel eines erstellten Schlüsselpaars muss in dieser Variable gespeichert werden&lt;/li>
&lt;li>Der öffentliche Schlüssel muss unter „Settings &amp;gt; Repository &amp;gt; Deploy Key“ eingetragen werden
&lt;ul>
&lt;li>Nicht vergessen, Schreibrechte zu vergeben&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>SSH_KNOWN_HOSTS
&lt;ul>
&lt;li>Diese aus der &lt;a class="link" href="https://docs.gitlab.com/ee/user/gitlab_com/#ssh-known_hosts-entries" target="_blank" rel="noopener"
>GitLab-Dokumentation&lt;/a> entnehmen&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="code">Code
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">stages&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">security&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">securityUpdate&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">stage&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">security&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">rules&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="k">if&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;$CI_COMMIT_TAG =~ /security-.*/&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">image&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;kellerkinder/pipeline-image:8.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">before_script&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">eval&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">agent&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">echo&lt;/span> &lt;span class="s2">&amp;#34;${SSH_DEPLOY_PRIVATE_KEY}&amp;#34;&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="n">tr&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">d&lt;/span> &lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\r&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="n">ssh&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">add&lt;/span> &lt;span class="o">-&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">mkdir&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">~/.&lt;/span>&lt;span class="n">ssh&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="o">~/.&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">known_hosts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">echo&lt;/span> &lt;span class="s2">&amp;#34;$SSH_KNOWN_HOSTS&amp;#34;&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="o">~/.&lt;/span>&lt;span class="n">ssh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">known_hosts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">chmod&lt;/span> &lt;span class="mi">700&lt;/span> &lt;span class="o">~/.&lt;/span>&lt;span class="n">ssh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">config&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="s2">&amp;#34;security&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">config&lt;/span> &lt;span class="n">user&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">email&lt;/span> &lt;span class="s2">&amp;#34;ci@example&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">remote&lt;/span> &lt;span class="n">remove&lt;/span> &lt;span class="n">origin&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="bp">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">remote&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">origin&lt;/span> &lt;span class="s2">&amp;#34;git@gitlab.com:path/repo.git&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">script&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">cd&lt;/span> &lt;span class="o">$&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="n">CI_PROJECT_DIR&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">composer&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">no&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">interaction&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">optimize&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">autoloader&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">composer&lt;/span> &lt;span class="n">update&lt;/span> &lt;span class="n">store&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">shopware&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">swagplatformsecurity&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">checkout&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">b&lt;/span> &lt;span class="n">feature&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">security&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">-$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">date&lt;/span> &lt;span class="o">+%&lt;/span>&lt;span class="n">F&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">A&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="o">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">diff&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">cached&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">quiet&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">then&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">echo&lt;/span> &lt;span class="s2">&amp;#34;Kein Security-Update verfügbar – nichts zu committen.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">exit&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">fi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">commit&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span> &lt;span class="s2">&amp;#34;Security Update $(date +&lt;/span>&lt;span class="si">%F&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span> &lt;span class="n">git&lt;/span> &lt;span class="n">push&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">set&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">upstream&lt;/span> &lt;span class="n">origin&lt;/span> &lt;span class="n">feature&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">security&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">patch&lt;/span>&lt;span class="o">-$&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">date&lt;/span> &lt;span class="o">+%&lt;/span>&lt;span class="n">F&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="beispiel-tag">Beispiel-Tag
&lt;/h2>&lt;p>&lt;code>security-YYMMDD&lt;/code>&lt;/p></description></item><item><title>Shopware 6: Alle Produkte schnell indexieren</title><link>https://besserentwickeln.de/n/shopware-6-alle-produkte-schnell-indexieren/</link><pubDate>Fri, 15 Jul 2022 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/shopware-6-alle-produkte-schnell-indexieren/</guid><description>&lt;p>Indexiert nur den Lagerbestand des Produkts und überspringt alles andere, um einmalig alle Produkte zu sichern.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">bin/console dal:refresh:index --skip&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;theme.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;flow.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;newsletter_recipient.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;customer.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;landing_page.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;media.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;media_folder.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;media_folder_configuration.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;payment_method.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product_stream.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product_stream_mapping.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;rule.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;sales_channel.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;category.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;promotion.exclusion&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;promotion.indexer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.inheritance&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.variant-listing&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.child-count&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.search-keyword&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.stream&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.rating-averaget&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.cheapest-price&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.category-denormalizer&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.many-to-many-id-field&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;product.seo-url&amp;#34;&lt;/span>,&lt;span class="s2">&amp;#34;netzp.blogpost.indexer&amp;#34;&lt;/span> --use-queue
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Shopware 5 Snippet in Variable</title><link>https://besserentwickeln.de/n/shopware-5-snippet-in-variable/</link><pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/shopware-5-snippet-in-variable/</guid><description>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-smarty" data-lang="smarty">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">{&lt;/span>&lt;span class="nf">s&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;DetailBuyInfoNotAvailable&amp;#34;&lt;/span> &lt;span class="na">namespace&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;frontend/detail/buy&amp;#34;&lt;/span> &lt;span class="na">assign&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;snippetDetailBuyInfoNotAvailable&amp;#34;&lt;/span>&lt;span class="cp">}{&lt;/span>&lt;span class="nf">/s&lt;/span>&lt;span class="cp">}&lt;/span>&lt;span class="x">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Shopware 6 – composer: command not found</title><link>https://besserentwickeln.de/n/shopware-6-composer-command-not-found/</link><pubDate>Wed, 28 Oct 2020 00:00:00 +0000</pubDate><guid>https://besserentwickeln.de/n/shopware-6-composer-command-not-found/</guid><description>&lt;p>Ok, ganz einfach. Ich speichere das hier, weil ich es schon zweimal vergessen habe:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">php composer.phar install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item></channel></rss>