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

ExtJS 404 im Backend

$
0
0

Hallo zusammen,

ich arbeite gerade an einem Plugin und das erste mal mit Backendprogrammierung. Ich bekomme jedes mal ein 404 Fehler von der Seite wenn ich mein hinzugefügtes Menu Symbol klicke.

Als erstes mal die Fehlermeldung:

Ext.define('Shopware.apps.Index', {
extend:'Enlight.app.SubApplication',
bulkLoad: true,
loadPath: '/backend/Index/load',
controllers:[
'Main',
'Widgets',
'ErrorReporter',
'ThemeCacheWarmUp'
],
requires: [
'Shopware.container.Viewport'
],
views: [
'Main',
'Menu',
'Footer',
'Search',
'widgets.Window',
'widgets.Sales',
'widgets.Upload',
'widgets.Visitors',
'widgets.Orders',
'widgets.Notice',
'widgets.Merchant',
'widgets.News',
'widgets.Base',
'merchant.Window',
'themeCache.ThemeCacheWarmUp'
],
models: [
'Widget',
'WidgetSettings',
'Turnover',
'Batch',
'Customers',
'Visitors',
'Orders',
'News',
'Merchant',
'MerchantMail',
'ThemeCacheWarmUp'
],
stores: [
'Widget',
'WidgetSettings',
'ThemeCacheWarmUp'
]
});

 

Das Menuitem habe ich folgendermaßen hinzugefügt: 

        $this->createMenuItem(array(
            'label' => 'LABEL',
            'controller' => 'MyPlugin',
            'class' => 'sprite-application-block',
            'action' => 'Index',
            'active' => 1,
            'parent' => $this->Menu()->findOneBy(['label' => 'Inhalte'])
        ));

 

Die app.js sieht folgender Maßen aus: 

Ext.define('Shopware.apps.MyPlugin', {
    extend: 'Enlight.app.SubApplication',

    name: 'Shopware.apps.MyPlugin',

    loadPath: '{url action=load}',
    bulkLoad: true,

    controllers: ['Main'],

    views: [
        'list.Window',
        'list.List'
    ],

    models: ['Main'],
    stores: ['Main'],

    launch: function () {
        return this.getController('Main').mainWindow;
    }
});

 

Könntet ihr mir erklären was das sein kann? Ich habe leider nichts darüber gefunden.


Plugin will plötzlich Lizenz

$
0
0

Ich habe ein Plugin vor längerer Zeit geschrieben....

Jetzt wurde irgendwas an Shopware geändert und seit dem wird immer gemeldet das bei diesem Plugin evtl. ein Betrugsversuch vorliegt und das es keine gültige Lzenz hat.

Irgendwie stelle ich mich auch relativ dumm an was das Suchen angeht... darum stell ich hier jetzt einfach mal die Frage.

Was kann ich machen damit diese Meldung nicht mehr kommt ?

Bitte keine Kurzantworten wie:

Du musst Sie lizensieren!

Klar das es irgendwie gemacht werden muss :) sinnvoll wären vllt Links oder eine Erklärung die mich in meinem Problem weiter bringen. VIELEN Dank :D

Ajax Reload bei Variantenauswahl und Bundle

$
0
0
Hallo zusammen,

folgendes Problem bei SW 5.1 und dem Ajax-Reload bei der Variantenauswahl und dem Bundle-Plugin.

Ich habe das Bundle-Plugin soweit angepasst, dass der der Button für den Warenkorb erst aktiviert wird, sobald eine Variante ausgewählt wurde, damit nicht standardmäßig der Hauptartikel in den Warenkorb gelegt wird.

Die Abfrage hat bis 5.0.3 funktioniert, da ja ein kompletter Page-Reload ausgeführt wurde.
{if !$configuratorGroup.selected_value}
Der Ajax-Reload setzt vom "normalen" Warenkorb-Button nach einer Auswahl nun den richtigen Status und aktiviert diesen Button. Der vom Bundle bleibt aber leider davon nun unberührt.

Kann mir jemand sagen, wo ich ansetzen muss, um das Problem zu lösen?

Vielen Dank!!!

JS Datei in Plugin einbinden?

$
0
0

Hallo,

ich bin derzeit etwas verwirrt, weil man viele Beispiele in der Dokumentation findet, die Shopware 5 betreffen, aber nicht Shopware 5.2 mit dem neuen Plugin Struktur.

Ich möchte gerne einen Button im Listing implementieren, der bei Click mein eigenes Plugin aufruft um den aktuellen Warenkorb abzufragen.

Nun bin ich dabei erstmal die Plugin Struktur festzulegen und habe damit begonnen:

<?php
namespace FpGetBasket;

use Shopware\Components\Plugin;

class FpGetBasket extends Plugin {

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Front_RouteStartup' => 'onRouteStartup',
            'Theme_Compiler_Collect_Plugin_Javascript' => 'addJsFiles'
        ];
    }

    public function onRouteStartup(\Enlight_Controller_EventArgs $args)
    {

    }

    public function addJsFiles(Enlight_Event_EventArgs $args)
	{
	    $jsFiles = array(__DIR__ . '/Resources/js/fpgetbasket.js');
	    return new Doctrine\Common\Collections\ArrayCollection($jsFiles);
	}

}

Im fpgetbasket.js steht bisher nur alert("test");

Dies wird aber nicht ausgegeben. Wo liegt hier der Fehler? Ich habe leider kein Beispiel gefunden, wie ich das korrekt umsetzen muss. Auch die Beispielplugins für 5.2 zeigen dies nicht.

Kann hier jemand helfen?

Danke!

SEO Title Tag für Artikel

$
0
0

hallo,

ich bekommeau fder produktseite den artikelnamen nicht aus dem seitentitel raus. habe mehrere anleitungen gefunden und ausprobiert, der title tag lässt sich insgesamt auch verändern und erweitern, aber ganz am anfang habe ich immer den artikelnamen. selbst wenn ich im header.tpl unter dem  block name='frontend_index_header_title` leer lasse, bleibt im seitentitel immer noch der artikelname, obwohl da doch dann nichts stehen sollte? wo holt showare sich den her? von mir aus könnte der produktname auch am ende stehen, mein ziel ist es ein anders wort am anfang zu haben und nicht den produktnamen. weil der produktname nicht mein hauptsächliches SEO Keyword ist. und dieses steht ja soweit mir bekannt ist am optimalsten an vorderster stelle im title

lg, arcil
 

Einkaufswelten Elemente: Mit update() Funktion Eingabefelder entfernen/aktualisieren

$
0
0

Hallo,

ich möchte ein Einkaufwelten Element updaten in welchem ich einfache Textfelder verwende um Daten abzufragen.

Eines dieser Felder soll nun kein Pflichtfeld mehr sein. Ein anderes soll komplett entfernt werden.
Um nicht alle Daten neu einpflegen zu müssen würde ich nun gerne das Plugin über die update() Funktion aktualisieren.

Wie schaffe ich esdas Pflichtfeld als Nicht Pflichtfeld einzustellen und ein Feld zu entfernen? Ist das überhaupt möglich?

Meine install() Funktion in der Bootstrap.php:

public function install()
    {
        $teamElement = $this->createEmotionComponent([
            'name' => 'Team Element',
            'xtype' => 'emotion-components-team',
            'template' => 'emotion_team',
            'cls' => 'emotion-team-element',
            'description' => 'Team Element für die Einkaufswelten'
        ]);

        $teamElement->createHiddenField([
            'name' => 'team_widget_store',
            'allowBlank' => true
        ]);

        $teamElement->createTextField([
            'name' => 'team_name',
            'fieldLabel' => 'Name',
            'supportText' => 'z.B. Max Mustermann',
            'allowBlank' => false
        ]);

        $teamElement->createTextField([
            'name' => 'team_position',
            'fieldLabel' => 'Position',
            'supportText' => 'z.B. Innendienst',
            'allowBlank' => true
        ]);

/*
Dieses Feld soll kein Pflichtfeld mehr sein
*/

        $teamElement->createTextField([
            'name' => 'team_phone',
            'fieldLabel' => 'Telefon',
            'supportText' => 'z.B. 0 12 34 / 5678 123',
            'allowBlank' => false
        ]);

        $teamElement->createTextField([
            'name' => 'team_email',
            'fieldLabel' => 'E-Mail',
            'supportText' => 'z.B. info@domain.de',
            'allowBlank' => false
        ]);

/*
Dieses Feld soll entfernt werden
*/

        $teamElement->createTextField([
            'name' => 'team_fax',
            'fieldLabel' => 'Fax',
            'allowBlank' => true
        ]);

        $this->subscribeEvent('Enlight_Controller_Action_PostDispatchSecure_Backend_Emotion','onPostDispatchBackendEmotion');
        $this->subscribeEvent('Theme_Compiler_Collect_Plugin_Less','onCollectLessFiles');

        return true;
    }

Bin für jeden Tipp dankbar =)

Model erweitern

$
0
0

Hallo Comunity,

da die Plugins von Shopware nun quell offen sind, möchte ich mich gleich mal ran machen das Plugin "Custom Products" anzupassen.

Dabei kommt mir eine generelle Frage:

Ist es möglich ein ModelEntity wie z. B. SwagCustomProducts/Models/SwagCustomProducts/Option von aussen zu erweitern?

Ich möchte eine weitere Spalte hinzufügen. Eine eigene Tabelle bzw. eigenes Model Entity dafür anzulegen ist in meinen Augen ein bischen übertrieben.

Danke für jede Info!

Generelle Frage zur SW5 Programmierung

$
0
0

Hallo,
ich befasse mich grade mit der SW5 API und der Plugin Architektur.
Dabei habe ich mir eine kleine Aufgabe gesetzt:

Bestellungen ( mit von mir ausgewählten Spalten ) jeden Tag als CSV exportieren und per Mail versenden. Dabei sollen nur Bestellungen des jeweiligen Tages ohne abgebrochene BEstellungen exportiert werden. Das ganze wird dann per Cron ausgeführt.

Da ich hierfür kein Frontend Ausgabe im Backend benötige, frage ich mich, ob ich hierfür umbedingt ein Plugin schreiben sollte oder doch lieber ein CLI Command.

Kann mir jemand eine Rat erteilen


Controller gibt nichts aus

$
0
0
class Shopware_Controllers_Frontend_CheckoutRequests extends Shopware_Controllers_Frontend_Checkout
{

    /**
     * /checkout/shippingPayment/
     */
    public function shippingPaymentAction()
    {
        $rawBody = $this->Request()->getRawBody();
        $params = json_decode($rawBody, true); // jsonbody decodieren als array}

        HIER NIX $params :-(


        return;
    }
}

Bin ich heute mit dem falschen Bein aufgestanden oder warum bekomme ich rein garnichts zurück im Checkout bei ShippingPayment?

Smarty currency helper auch in Controller nutzbar?

$
0
0

Hallo Shopwaregemeinde,

im Template können wir mittels {$preis|currency,... ja ganz einfach die Währung für den entsprechenden Subshop formatiert ausgeben lassen inkl. Wärungssymbol. Geht dies auch in php aus einem Controller heraus!? Gibt es hier die möglichkeit mit den String den currency liefert irgendwie zu holen damit ich mit diesem unter php weiterarbeiten kann? Bin beim durchforsten des Codes bis Enlight_Components_Currency gekommen. Doch nun komme ich nicht weiter.

Hat jemand einen Tipp für mich?

Unable to load template .js Fehler bei Backend Plugin Entwicklung Shopware Version >5.2

$
0
0

Hallo zusammen,

ich habe ein Backend-Plugin, welches soweit funktioniert. Beim Versuch es zu erweitern (neue Komponenten assoziieren), bekomme ich immer den Fehler:

Unable to load template snippet 'backend/bvod/components/view/listing.js' in engine/Library/Smarty/sysplugins/smarty_internal_templatebase.php on line 127

An dem Ort, wo das Modul versucht wird eingebunden zu werden, wird auch auf andere verwiesen, zB. "bvod.store.vod.js".

 

Der Haupteinstiegspunkt im Backendteil ist /bvod, darunter gibt es die Verzeichnisse: controller, model, store, view. Unter view die Verzeichnisse: components, list, main.

Die Verweiskette ist im Prinzip so: ./app.js-> /view/list/window.js -> /view/list/vod.js -> /store/vod.js, view/components/list/vod.js

Die Datei aus dem /store/ wird gefunden, die aus /components nicht.

 

Hier ein paar Code-Ausschnitte

Die app.js :

//{namespace name="backend/bvod/"}
//{block name="backend/Bvod/application"}
Ext.define('Shopware.apps.Bvod', {
    name:'Shopware.apps.Bvod',
    extend:'Enlight.app.SubApplication',

    bulkLoad:true,

    loadPath:'{url controller="Bvod" action=load}',

    controllers:['Main'],

    defaultController : 'Main',
    views:
    [
        'main.Window',
        'list.Window',
        'components.Listing'
    ],

    models: [ 'Vod' ],
    stores: [ 'Vod' ],

    launch: function() {
        var me = this,
            mainController = me.getController('Main');

        return mainController.mainWindow;
    }
});
//{/block}

Im list.Window.js wird auf eine weitere Datei verwiesen.

Dort steht dann:

...

    initComponent: function () {
        var me = this;
        me.content = Ext.create('Ext.container.Container', {
            items: [
                me.createAssignment()
            ]
        });

        me.items = [me.content];

        me.callParent(arguments);
    },

    createAssignment: function () {
        var me = this;

        me.assignedStore = Ext.create('Shopware.apps.Bvod.store.Vod', {
            pageSize: 5,
            filters: [{
                property: 'assigned',
                value: true
            }]
        });
        me.assignedListing = Ext.create('Shopware.apps.Bvod.components.view.Listing', {
            store: me.assignedStore,
            name: 'assigned-listing',
            padding: 30,
            width: 1007
        });
      ...

        return me.assignedListing;
    },
...

 

Die Datei "bvod.components.view.listing.js" scheint nicht gefunden werden zu können obwohl sie da ist.

listing.js:

//{block name="backend/Bvod/view/components/listing"}

Ext.define('Shopware.apps.Bvod.view.components.Listing', {
    extend: 'Ext.container.Container',

    initComponent: function() {
        var me = this;
        me.callParent(arguments);
    },

});

//{/block}

 

Hat jemand eine Idee, warum das /components/listing.js template nicht geladen wird ?

 

 

SW 5.2 - Freitextfelder als Filter?

$
0
0

Hallo,

ich nutze die neue Freitextfelder-Verwaltung in SW 5.2.4. Das klappt auch wunderbar - so habe ich z.B. ein Dropdown-Feld mit 5 Möglichkeiten erstellt. 

Ist es nun auch möglich, dass dieses Freitextfeld als Filter im Frontend angezeigt wird? Oder muss ich - wenn ich es filterbar machen möchte - immer über die Eigenschaften konfigurieren?

Was kann ich tun? Habe ein Problem bei der Berechnung der Mehrwertsteuer im Backend.

$
0
0

Hallo zusammen,
wenn ein Kunde bei uns im Shop (Netto Shop - B2B) bestellt, wird im Backend im Bereich: Bestellung/Kunde X/Positionen beim Preis die Mehrwertsteuer mehrfach berechnet (2x oder 4x). Dieses Phänomen tritt erst nach einer Zeit auf, also nicht direkt. Es kann nach 2 Stunden oder nach 2 Tagen noch dazu kommen (irgendein Loop der falsch getriggert wird?).

Der Shop läuft in der Version 5.2.6. Wir benutzen zusätzlich noch das Plugin PAYONE Payment Version: 3.4.0_5908

Beispiel: Artikel im Shop kostet:

  • Netto: 315,00€
  • Brutto wäre: 374,85€ 
  • fehlerhafter Positionspreis: 446,07€   

Woran kann es liegen, was kann ich da tun?

Erstellung eines formulars auf der detailsseite als zusätzlicher reiter

$
0
0

Hallo,
ich habe da mal wieder ein frage, gibt es ein art blanko-formular, den ich in einen zusätzlichen reiter auf der detailseite einfügen kann?
hintergrund, ich möchte dort ein formular erstellen, damit kunden testgeräte anfordern können.
ich habe mir das comment-formular zur brust genommen, finde es aber schwer dort zurande zu kommen.

vielen dank schonmal:-)
mfg
dutchy

Attributsystem

$
0
0

Hallo,

bin dabei für s_user_attributes über den crud service ein neues Attribut zu registrieren.

In der Doku super erklärt. Leider krieg ich das nicht für s_user_attributes zum laufen.

public function install(InstallContext $context)
{
    $service = $this->container->get('shopware_attribute.crud_service');

    /*
     * Funktioniert
     * my_clumn in s_articles_attributes angelegt.
     * Im Backend ist das Feld in der Artikeldetailseite sichtbar.
     */
    $service->update('s_articles_attributes', 'my_column', 'multi_selection', [
        'label' => 'My label',
        'supportText' => 'Value under the field',
        'helpText' => 'Value which is displayed inside a help icon tooltip',
        'translatable' => false,
        'displayInBackend' => true,
        'entity' => 'Shopware\Models\Article\Article',
        'position' => 100,
        'custom' => true
    ]);

    /*
     * Funktioniert nicht?
     * my_column wurde in s_user_attributes erstellt.
     * Erscheint nicht im backend under Kunden > Kunden > Kundendetailseite
     */
    $service->update('s_user_attributes', 'my_column', 'text', [
        'label' => 'My label',
        'supportText' => 'Value under the field',
        'helpText' => 'Value which is displayed inside a help icon tooltip',
        'translatable' => false,
        'displayInBackend' => true,
        'position' => 100,
        'custom' => true
    ]);
}

Bei der Fehlersuche hat mich dieser Kommentar verunsichert:

https://forum.shopware.com/discussion/comment/171088/#Comment_171833

Kann es sein, dass das neue Attributsystem noch nicht bei user funktioniert?

Will nur sicher gehen bevor ich mir nen Wolf suche...


API REST - Kundenimport Lieferadresse Rechnungsadresse

$
0
0

Hallo,
mal wieder ne frage zu API REST.

ich versuche über die schnittstelle einen bestehenden kunden upzudaten. nur stell ich fest, dass wenn ich eine lieferadresse angeben, verwendet er diese gleich als rechnungadresse.
ausserdem will er leider die countryID nicht übernehmen:-(
so sieht das array aus was er versucht zu importieren: 

Array
(
    [groupKey] => EK
    [hashPassword] => e22a63fb76874c99488435f26b117e37
    [active] => 1
    [encoderName] => md5
    [email] => email@email.de
    [newsletter] => 1
    [billing] => Array
        (
            [countryId] => 1
            [company] => Firma
            [vatId] => 361523215367
            [salutation] => Herr
            [firstName] => vorname1
            [lastName] => nachname1
            [street] => strasse2222
            [streetNumber] => 1222
            [zipCode] => 22222
            [city] => stadt
            [phone] => 0402651765
            [fax] => Array
                (
                )
        )
    [shipping] => Array
        (
            [countryId] => 10
            [company] => hahaha
            [vatId] => 361523215367
            [salutation] => Herr
            [firstName] => vorname2
            [lastName] => nachname2
            [street] => wegaa
            [streetNumber] => 1111
            [zipCode] => 11111
            [city] => ort
        )
)

vielen dank schonmal. ich hoff, ich geh euch noch nicht auf die nerven mit all meinen fragen;-)

mfg
dutchy 

Exception beim Import von Kategorien -> Maximum function nesting level reached

$
0
0

Hi zusammen,

Ich habe einen CLI Importer geschrieben, der Kategorien aus einem XML ausliest und anleg bzw. aktualisiert. Das funktioniert gut, solange ich nicht explizit eine ID für die Kategorie vorgebe. Ist eine Kategorie ID angegeben, legt Shopware die ersten 5 Kategorien problemlos an um danach ich eine Exception zu laufen:

Maximum function nesting level of '256' reached, aborting! in /engine/Shopware/Components/Model/CategoryDenormalization.php on line 77

Selbst wenn ich das nesting level auf 1024 erhöhe, kommt es zum selben Fehler - dauert halt nur länger.

Hier die Methode, die ich zum Importieren einsetze:

/**
 * @param $xml
 * Import the product categories from SPM
 */
public function importCategoriesSpm($xml)
{

    // Get the ressource
    $categoryResource = \Shopware\Components\Api\Manager::getResource('category');

    // Iterate over all post nodes in XML
    foreach ($xml->category as $category):

        // Find out the attributes
        $attributes = $category->attributes();
        $categoryId = $attributes['id'];

        // @TODO: Skipping this item if the category ID = 3 (shopware default)
        if ($categoryId==3) continue;

        // Map the parent ID
        $parentId = 3;
        if($attributes['parent_id'] != '0'):
            $parentId = $attributes['parent_id'];
        endif;

        $categoryData = array(
            'parentId' => 3,
            'name' => $category->name,
            'cmsHeadline' => $category->name,
            'cmsText' => $category->subtitle,
            'metaDescription' => $category->subtitle,
            'active' => true,
            'showFilterGroup' => true
        );

        try {
            $category = $categoryResource->update($categoryId, $categoryData);
            $this->log('success', 'Category "'.$category->getName().'" successfully updated.');
        } catch (\Shopware\Components\Api\Exception\NotFoundException $e) {
            $categoryData['id'] = (int) $categoryId;
            $category = $categoryResource->create($categoryData);
            $this->log('success', 'Category "'.$category->getName().'" successfully imported.');
        }

    endforeach;

}

Sobald ich die Category ID nicht setze, läuft der Importer wunderbar. Allerdings würde ich gerne die ID selbst bestimmen um mir das einführen eine Referenz-ID zu ersparen.

Danke für Eure Inputs vorweg,
LG

SW5 und Cache bei Plugin unterbinden?

$
0
0

2. Versuch um eine Lösung zu finden:

Für ein TagCloud-Plugin soll das jeweilige Plugin (bzw. bei Enlight_Controller_Action_PostDispatch_Frontend_Index) vom HTTPCache ausgeschlossen werden. Bisherige Versuche enden mit einem 503-Error im Shop. Bei einem SW 5.1. konnte ich dies ohne Probleme mit einem disableControllerCache() realisieren. Bei SW 5.2.6 kommt es zur besagten Fehlermedlung. Welche Lösung, welchen Weg, gibt es bei 5.2 ????

shopware 5.2 und swagAttr

$
0
0

wie ist der update weg für shopware ag plugin "Zusätzliche Artikel Attributsfelder"?
http://community.shopware.com/Plugin-Zusaetzliche-Artikel-Attribute_detail_1046.html

seit shopware 5.2 werden diese attribute bei uns nicht mehr in backend artikel maske angezeigt, obwohl in datenbank tablle s_attribute_configuration das feld display_in_backend auf 1 gesezt ist. und ich kann die von der neuen freitext-verwaltung nicht editieren (sind in der liste, aber der editiermaske ist ausgegraut)

Fehler / Sprachshops - Elastic Search

$
0
0

Guten Morgen,

ich bekomme beim Wechsel in einen Sprachshop folgenden Fehler:

search_parse_exception: No mapping found for [calculatedPrices.b2cDE_1.calculatedPrice] in order to sort on in vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php on line 657

Der Shop wurde komplett an ES mit allen Sprachen indexiert. Die Kunden Gruppe EK hat Preise. Die Kundengruppe b2cDE hat im Moment keine eigenen Preise und nutzt diese von EK.

Hat jemand eine Idee?

gruß Ottscho

 

Viewing all 2871 articles
Browse latest View live


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