Quantcast
Channel: Programmierung - Shopware Community Forum
Viewing all 2871 articles
Browse latest View live

Hook: Hook-Registrierung nach Abschluss Registrierung funktioniert nicht

$
0
0

Guten Morgen.

Ich bin relativ neu im Hook-System von Shopware und versuche gerade nach dem Speichern der Kundenregistrierung im Frontend einen Hook zu platzieren.

Der Hintergrund des Hooks soll sein, dem Nutzer je nach Länderauswahl in eine länderbezogene Kundengruppe zu schieben, z.B. "Kunden DE", "Kunden CH" usw.

Hier mal der Quellcode:

public function install()
    {
        $this->subscribeEvent(
            'sAdmin::sSaveRegister::after',
            'afterSaveRegisterHook'
        );

        $this->createConfig();

        return true;
    }

public function afterSaveRegisterHook(Enlight_Hook_HookArgs $args)
    {
        /** @var \sAdmin $subject */
        $subject = $args->getSubject();

        $return = $args->getReturn();

        Shopware()->Debuglogger()->info("Methode aufgerufen.");
        Shopware()->Debuglogger()->info($subject);

        $args->setReturn($return);
    }

Doch leider ist es so, dass er die Methode "afterSaveRegisterHook" nie aufruft.

Mache ich hier irgendwo einen Fehler ? Oder funktioniert die Logging-Ausgabe dort nicht ? Die Methode "die()" hatte auch nicht funktioniert.

Freundliche Grüße

Heiko Bihlmaier


frontend_checkout_cart_item_details_inline im Checkout unterdrücken

$
0
0

Der Block

{block name='frontend_checkout_cart_item_details_inline'}

gibt im Checkout die Eigenschaften der Produkte aus. Dieses möchte ich gerne unterdrücken.

Ein

{block name='frontend_checkout_cart_item_details_inline'}{/block}

bringt kein Resultat.

Es geht nur, wenn man diesen selben Block om Default Template löscht, was nicht Sinn und zweck ist.

Theme: Zusätzliche Snippets mit .ini File

$
0
0

Schönen Abend zusammen,

Ich möchte mit einem Theme zusätzliche Textelemente (Snippets) ausliefern. Dazu habe ich laut Manual die .ini angelegt und die namespaces in den Template-files entsprechend gesetzt. Allerdings dürfte ich noch irgendwo einen kleinen Fehler haben und ich komm nicht darauf wo es hakt.

config.php

...
'snippet' => array(
    'readFromIni' => true,
    'writeToIni' => false,
),
...

/themes/Frontend/Themename/_private/snippets/frontend/navigation/topbar.ini

[en_US]
frontend/navigation/topbar/MyOrders = "My orders"

[de_DE]
frontend/navigation/topbar/MyOrders = "Meine Bestellungen"

/themes/Frontend/Themename/frontend/index/topbar-navigation.tpl

// Sollte "Meine Bestellungen" ausgeben
{s name="frontend/navigation/topbar/MyOrders" namespace="themes//frontend/navigation/topbar"}{/s}

Irgendwo passt etwas mit dem Namespace oder der Bezeichnung nicht - vielleicht hat jemand einen Tipp!?

Danke Euch vorweg & LG,
Synonymous

Fehler bei Shopware Update auf 5.2.6

$
0
0

Hey,

ich wollte gerade das Shopware Update auf 5.2.6 machen und habe folgenden Fehler:

Received the following error message:
Could not apply migration (Migrations_Migration633). Error: SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'mapping_id' 
 

Kann mir jemand weiterhelfen ?

Freitextfeld-Verwaltung Kundenmaske / Registrierungsformular um Freitextfeld ergänzen ** HILFE **

$
0
0

Hallo Zusammen,

ich suche leider schon seit ein paar Stunden vergeblich nach einer Lösung. Vor SW 5.2 konnte man die Kundendaten über die fest definierten Freitextfelder text1 bis text6 erweitern.

Sprich ich konnte in "\themes\Frontend\SHOP\frontend\register\personal_fieldset.tpl" einfach ein neues Input z.B.

<div class="register--neues_feld">
<input autocomplete="section-personal neues_feld" name="register[personal][text1]" type="text" required="required" aria-required="true" placeholder="neues_feld" id="neues_feld" value="{$form_data.text1|escape}" class="register--field is--required{if $error_flags.text1} has--error{/if}" />
</div>

erstellen und dieses wurde automatisch im Backend beim Kunden gespeichert. Leider bekomme ich das mit der neuen Freitextfeld-Verwaltung nicht mehr zum laufen. Hat bitte jemand einen Tipp für mich. Muss ich dafür den Controller (Register.php) erweitern? Das würde ich eigentlich gerne vermeiden. Die Daten sollten direkt in der Kundenmaske angezeigt werden und somit in der Tabelle "s_user_attributes" gespeichert werden.

Muss dazu nicht einfach der INPUT-Name geändert werden von ( name="register[personal][text1]" ) in z.B.;
(name="register[BITTE SPEICHER ES DOCH EINFACH IN DIE NEUE TABLELLE][text1]")

Es wäre wirklich TOP wenn jemand einen Rat hätte.

SW 5.2 Plugin erweitert Theme nicht

$
0
0

Hallo,

ich habe gerade angefangen, mich mit SW-Plugins zu beschäftigen, und versucht, ein simples gemäß neuer 5.2er Pluginkonvention zu erstellen:

https://github.com/bitski/BitskiThemeFix

Es soll zu Testzwecken SW-Themes erweitern (können), hier beispielhaft über die footer.tpl das Footerlogo entfernen, aber leider wird die entsprechende .tpl-Datei der Themes nicht erweitert.

Auch nach langem Debuggen und Studium der entsprechenden Dev- und Frontendguides und Pluginbeispiele habe ich keine Lösung gefunden.

Ich wäre sehr dankbar dafür, wenn mir jemand einen Stoß in die richtige Richtung geben könnte, warum das Themeoverride hierbei nicht greift oder evtl. nicht korrekt aktiviert wird.

 

P.S.: Daran liegt es nicht, ich habe ohne und mit aktiviertem Customtheme (Option: "true") gestestet:

https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates

 

Vielen Dank im Voraus für eventuellen Input,

Peter | bitski


 

 

 

 

 

 

Facebook Like Box erscheint fehlerhaft

Backend Menü Icon

$
0
0
Hallo Community,
kann mir jemand sagen, wie ich für ein Neuen Menü Item im Backend, ein Icon aus "extra-icon-set-02.css" zuweisen kann?

Ich mache das mit "createMenuItem":
$this->createMenuItem(array(
   'label'         => 'New menu item',
   'controller'    => 'NiceController',
   'class'         => 'sprite-calculator',
   'action'        => 'Index',
   'action'        => 1,
   'parent'        => $this->Menu()->findOneBy('label', 'Artikel')
));
Wenn ich unter "class" eine CSS-Klasse aus "core-icon-set-new.css" nehme, dann Funktioniert es, aber ich brauche ein Icon aus "extra-icon-set-02.css". Was mache ich da Falsch?

Grüße
Nikita

Gutschein-Funktion (sAddVoucher) geht nicht

$
0
0

Hi

Bei mir geht die Gutschein-Funktion (sAddVoucher) nicht. Bei richtigem Gutscheincode wird kein Gutschein im Warenkorb hinzugefügt und bei falschem Gutscheincode kommt nicht mal eine Fehlermeldung. Es passiert einfach nichts...

Mein bisheriges Vorgehen:

1) Gutschein im Backend eingetragen

image

2) Auf der Warenkorbseite im Frontend habe ich den Gutscheincode "TESTCODE" eingegeben und das Formular abgeschickt. Dann lädt es die Seite zwar neu, doch es passiert nichts. Habe es hier auch schon mit falschen Gutscheincodes probiert oder mit Gutscheinen mit anderen Beschreibungen, Bestellnummern und Gutscheincodes...

Soweit ich das verstanden habe, übergibt die Form für die Gutscheineingabe (cart_footer.tpl) den Gutscheincode an die Funktion sAddVoucher (core/sBasket.php). Beide Codes habe ich nicht verändert. Das sind die originalen Shopware-Codes, in meinem Falle die Codes von Shopware 5.2.2. 

Kann mir hier jemand weiterhelfen?

 

Elefunds "Aufrunden und Spenden" für Shopware 5?

$
0
0

Hallo!

 

Wir testen bei uns gerade in einem lokalen Demoshop das elefunds Plugin, um seinen Warenkorb aufzurunden und den entsprechenden Betrag spenden zu können (https://github.com/elefunds/elefunds-Shopware)

 

Leider ist dieses Plugin offensichtlich nur bis Shopware 4.2 kompatibel - zumindest lokal wird der Warenkorb nicht erweitert oder sonstiges.

Gibt es hier schon evtl. User-Anpassungen, um es für Shopware 5 kompatibel zu machen oder andere ähnliche Plugins?

Ausgabe des Registrierungsformulars im DebugLogger nicht möglich?

$
0
0

Hi Forum,
ich greife die eingegebenen Felder vom Registrierungsformular mit folgendem Event ab:

$this->subscribeEvent(
		'Shopware_Modules_Admin_SaveRegisterMainData_FilterSql',
		'ShopwareModulesAdminSaveRegisterMainDataFilterSql'
	);

mit der folgenden Funktion möchte ich mir dann die Felder im DebugLogger anzeigen lassen:

public function ShopwareModulesAdminSaveRegisterMainDataFilterSql(Enlight_Event_EventArgs $arguments)
    {
        $return = $arguments->getReturn();
        Shopware()->Debuglogger()->info('Formular:', $return);
    }

Jedoch bekomme ich hier keine Ausgabe, vielleicht weil gleich nach dem abschicken des Formulars die Account Seite aufgerufen wird?! Wie bekomme ich denn nun die Felder zu sehen, um sie zu bearbeiten?

Vielen Dank

Einkaufswelt Text SEO

$
0
0

Ich verwende einige Einkaufswelten und möchte nun Klahrheit schaffen, ob die Textelemente in der Einkaufswelt SEO relevant sind. Bisher sind meine Kategorie Texte auch nur in der Kategorie hinterlegt. Jedoch werden Sie in der EW nicht angezeigt. Mein Aufbau soll so sein:

Banner

Kategorie Elemente

SEO Text

Ich bin mir nun nicht im Klaren ob ein Textelement den gleichen SEO Effekt hat bzw. überhaupt vom Googler Crawler wahrgenommen wird. Weiß jemand, wie man das optimal lösen kann?

Frage zu ListProductService dekorieren

$
0
0

Ich habe mit folgendem Script den ListProductService um weitere Bilder dekoriert. Das funktioniert auch soweit. Es existieren Objekte mit weiteren Bilddaten.

Nun habe ich Verständnisprobleme wie ich in meinem Smarty Template darauf zugreife. Kann mir jemand ein konkretes Beispiel geben?

<?php
namespace ShopwarePlugins\AmbicoAddDataToProduct\StoreFrontBundle;

use Shopware\Bundle\StoreFrontBundle\Service\ListProductServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Service\MediaServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Struct;

class ListProductService implements ListProductServiceInterface {
    private $service;
    private $mediaService;

    function __construct(ListProductServiceInterface $service, MediaServiceInterface $mediaService) {
        $this->service = $service;
        $this->mediaService = $mediaService;
    }

    public function getList(array $numbers, Struct\ProductContextInterface $context) {
        $products = $this->service->getList($numbers, $context);
        $media = $this->mediaService->getProductsMedia($products, $context);

        foreach($numbers as $number) {
            $product = $products[$number];
            
            if(isset($media[$number])) {
                $attribute = new Struct\Attribute(['images' => $media[$number]]);
                $product->addAttribute('moreimages', $attribute);
            }
            $products[$number] = $product;

        }

        return $products;
    }

    public function get($number, Struct\ProductContextInterface $context) {
        $products = $this->getList([$number], $context);
        return array_shift($products);
    }

}

 

In meinem Smarty Template sehe ich mit folgendem Script das Objekte weiterer Bilder existieren. Möchte ich jedoch auf ein Feld zugreifen kommt folgende Fehlermeldung 

Cannot use object of type Shopware\Bundle\StoreFrontBundle\Struct\Attribute as array in ...

 

{if $sArticle.attributes.moreimages}
    {$ambicomoreimages = $sArticle.attributes.moreimages}
    {$moreimages=$ambicomoreimages->get('images')}

    {foreach $moreimages as $image}

        {$image|@var_dump}

    {/foreach}
{/if}

 

 

 

Elastic Search - Backlog

$
0
0

Hallo,
wir verwenden bei einem Projekt Elastic Search und befüllen diese über eine Shopware CLI Plugin und der API.
D.h. es wird über die Console eine Import/Update Comand aufgerufen, welcher dann über die API Ressource die Artikel updatet.

$this-&gt;articleResource = \Shopware\Components\Api\Manager::getResource('Article');
...
...
$this-&gt;articleResource-&gt;update($articleID, $article);


Das klappt soweit wunderbar und die Artikel sind vorhanden bzw. geändert im Backend von Shopware:

Macht man im Shopware eine Änderung des Artikels, so wird dies in die Tabelle s_es_backlog geschrieben. Somit weiß der Backlog Service, dass dieser Artikel neu nach Elastic Search synchronisert werden muss. Über die API und ein Artikel Update wird dieser Eintrag leider nicht geschrieben. Ich kann leider nichtherausfinden warum. Laut Shopware Support funktioniert das und Sie können das Problem nicht nachstellen!

Was ich bis jetzt herausgefunden habe:

Elastic Search Backlog Registrierung:
https://github.com/shopware/shopware/blob/5.2/engine/Shopware/Bundle/ESIndexingBundle/services.xml#L129

Der Backloger wird auf doctrine.event_subscriber Registriert.
https://github.com/shopware/shopware/blob/384666b210810803b75cb3aa47c131edb72fddfe/engine/Shopware/Components/DependencyInjection/Compiler/DoctrineEventSubscriberCompilerPass.php#L36

Somit sollte der Service bei jedem Model Event aufgerufen werden.Dies ist ja auch nötig um die Artikel Updates in die Backlog Tabelle zu schreiben.
Wie bereits erwähnt, klappt dies beim Ändern von Artilkel im Backend. Aber über unser Consolen Plugin (CLI) eben nicht.

Hat jemand dazu eine Idee, warum dies nicht funktioniert?

Danke & Viele Grüße
ottscho

 

P.S. ich bin für jeden Tipp danbkar.

 

 

Nach Update auf 5.2.6 Probleme beim Varianten generieren

$
0
0

Hallo,

ich habe gestern ein Update auf Shopware Version 5.2.6 gemacht.

Eben wollte ich einen Artikel erstellen. Das klappt auch erstmal, aber wenn ich dann die Varianten generieren möchte kommt folgender Fehler:

Fehler

Beim Generieren der Artikel-Varianten ist ein Fehler aufgetreten:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2211,2212,2213,2214,2215,2216,2217,2218,2219,2220) ORDER BY g6Position, o6Positi' at line 3

 

Kann mir jemand weiterhelfen ?


Eigene Filter / Attribute

$
0
0
Hallo Zusammen,

ich versuche mich gerade in die Erweiterung der Filter einzuarbeiten.

Ich habe das Demo Plugin aus den Docs genutzt und versucht umzuschreiben.
Ich möchte als Facet Radio Buttons haben.

Das Problem ist, dass der übergeben Wert ein Integer Wert sein sollte.
Dies habe ich nicht, da ich nur nach Textstrings im Attribut1 filtern möchte.

Verwende ich anstatt dem Integer Wert einfach einen String, so klappt es vom Ergebnis. Aber im Filter selber wird nicht der aktive Filter angezeigt.

z.B.

http://demoshop1.ottscho1.timmeserver.d ... sruestung/

Der letzte Filter (attr1) ist es.
Man kann auch einfach an die URL ?attr1=test2 hängen. Somit werden nur noch 2 Artikel angezeigt. Oder man wählt test2 bei den Filtern aus.

Das Ganze ist abgewandelt von dem ESD Beispiel aus den Docs.
Wahrscheinlich sollte man eher mit dem Core Fact ProductAttributeFacet arbeiten.
Aber dazu fehlt mir ein Beispiel und ich werde daraus nicht ganz schlau.

Hat jemand damit schon gearbeitet und kann helfen?

Ziel ist es später mal alle Attributtfelder filterbar anzubieten.
Erst mal ohne Multiselekt.

Ich bin dankbar für jede Hilfe.

Fehlermeldung im Backend

$
0
0

Servus. Mir wird diese Fehlermeldung nach dem Update angezeigt.

 

Fatal error: Call to a member function getHeaders() on a non-object in /www/htdocs/w00ff2d2/engine/Shopware/Kernel.php on line 197

In Forum finde ich nicht. Hat da ein Herr von Shopware eine Idee?

Elastic Search / Integration

$
0
0

Hallo,

ich will mich an die Elastic Search Integration wagen und bin leider mit einem Fehler gescheitert.
Die config.php habe ich angepasst:

image

 

In der Console habe ich die Indexe erzeugt. Was mich wundert, es kommt keine weitere Meldung. Es bleibt einfach so stehen:

image

 

Rufe ich nun den Shop auf, so erhalte ich folgende Meldung:

Fatal error: Uncaught exception 'Elasticsearch\Common\Exceptions\Missing404Exception' with message '{"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","index":"sw_shop1","resource.type":"index_or_alias","resource.id":"sw_shop1"}],"type":"index_not_found_exception","reason":"no such index","index":"sw_shop1","resource.type":"index_or_alias","resource.id":"sw_shop1"},"status":404}' in /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:519 Stack trace: #0 /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(208): Elasticsearch\Connections\Connection->process4xxError(Array, Array, Array) #1 /usr/www/users/cartot/_develop/vendor/react/promise/src/FulfilledPromise.php(25): Elasticsearch\Connections\Connection->Elasticsearch\Connections\{closure}(Array) #2 /usr/www/users/cartot/_develop/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php(55): React\Promise\FulfilledProm in /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php on line 519

 

Da ich bis jetzt mit dem Thema noch keine Erfahrung habe, bin ich über jeden Tipp dankbar.

Shopware ist die Version SW 5.1.2 und ES 2.2.0

Vielen Dank

 

Neues Plugin-System: Doctrine Model Event Subscriber via services.xml funktioniert nicht

$
0
0

Ich versuche mich gerade am neuen 5.2 Plugin System und möchte mich auf ein Model Update-Event registrieren. Aber scheinbar greift der Listener nicht.

So sieht es bisher in etwa aus:

Resources/services.xml:

&lt;?xml version="1.0" ?&gt;

&lt;container xmlns="http://symfony.com/schema/dic/services&quot;
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quot;
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"&gt;

    &lt;services&gt;
        &lt;service id="my_id_my_plugin_name.order.listener"
                 class="MyIdMyPlugin\Subscriber\DocumentSubscriber"&gt;
            &lt;tag name="doctrine.event_subscriber" event="postPersist" /&gt;
        &lt;/service&gt;
    &lt;/services&gt;
&lt;/container&gt;

Subscriber/DocumentSubscriber.php:

class DocumentSubscriber implements EventSubscriber
{
    public function getSubscribedEvents()
    {
        return [
            'Shopware\Models\Order\Order::postUpdate' =&gt; 'onOrderUpdate',
        ];
    }

    public function onOrderUpdate(\Enlight_Event_EventArgs $arguments)
    {
        /** @var Order $order */
        $order = $arguments-&gt;get('entity');

        /** @var EntityManager $manager */
        $manager = $arguments-&gt;get('entityManager');

        echo "&lt;pre&gt;";
        print_r(Debug::dump($order, 3));
        print_r(Debug::dump($manager, 3));
        echo "&lt;/pre&gt;";
        exit;
    }
}


Zuerst habe ich es mit mit dem Service Tag

&lt;tag name=&quot;shopware.event_subscriber&quot; /&gt;

probiert, aber das Doctrine Tag von http://symfony.com/doc/current/doctrine/event_listeners_subscribers.html ist vermutlich bei den Model-Events die richtige Wahl. Trotzdem bekomme ich keine Ausgabe beim Updaten einer Bestellung per API oder übers Backend.

Hat jemand eine Idee?

Endlosschleife was tun?

$
0
0

Guten Abend,

ich bin neu hier. Melde mich direkt mit einem Problemm.

Ich bin gerade bem Aufbau in meinem Shop und habe ein Problem. Beim Aufrufen der Startseite wird versucht immmer wieder die gleiche anfrage abgerufen.(siehe Bild)

Was ist los, kann mir vielleicht jemand helfen?

Vielen dank im voraus.

Gruss

Darius

 

Viewing all 2871 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>