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

Controller preDispatch mit redirect

$
0
0

Hallo

Via Ajax rufe ich meinen Controller auf, der im preDispatch abfragt, ob der User eingeloggt ist.

 

        $this->admin = Shopware()->Modules()->Admin();
        Shopware()->Session()->sID = ($this->Request()->get("id"))? (int)$this->Request()->get("id"):Shopware()->Session()->get("sID");

        if (!$this->admin->sCheckUser()) {
          return $this->redirect(
              array(
                  'controller'      => 'account',
                  'action'          => 'index',
                  'sTarget'         => 'upload',
                  'sTargetAction'   => 'index'
                  )
          );
        }

Wenn allerdings die Session abgelaufen ist und die Anfrage gestartet wird, findet die Umleitung des Ajax Requests statt. Was mache ich, das aus dem Ajax Request bei abgelaufener Session, der User auf der Seite umgeleitet wird ?


PDF Anpassung in der tpl

$
0
0

Guten Abend,

ich habe in meiner PDF Erstellung anpassungen vorgenommen bzgl. Vorkasse Kunden. Sobald ein Kunde Vorkasse wählt, erhält er eine Rechnung mit einem zusätzlichen Text bzgl. Kontodaten (in rot). Klappte damals beim testen auch gut. Bei den letzten Bestellungen musste ich feststellen das dieses nicht mehr funktioniert.

Ich habe in die index.tpl im Order /meinDesign/documents/ folgende Anpassungen gemacht:

z.B. im Bereich: {block name="document_index_head_right"}

{if $Order._payment.description == "Vorkasse"}
     <p>{s name="DocumentIndexVorkasseHead"}{/s}</p>
{/if}

{if $Order._payment.description == "PayPal"}
     <p>{s name="DocumentIndexPayPalHead"}{/s}</p>
{/if}

Die $Order._payment.description wird im Fußbereich auch abgefragt und entsprechend die Zahlungsart angegeben. Sollte also gehen.

Hat einer ne Idee warum das nicht mehr geht ? Ich kann es ja auch nicht life testen, da sonst die Kunden neue Rechnungen erhalten. Ich hab das einmal anhand zwei alter Rechnungen ausprobiert und prompt haben die Kunden nachts neue rechnungen erhalten.

Grüße Daniel

HTTP-Cache und Bootstrap

$
0
0

Hallo liebe Shopware Gemeinde,

 

ich bräuchte Hilfe.

Aktuell ist es so:

Ich habe eine Bootstrap, in der eine Form aufgerufen wird, wo nichts weiter gemacht wird, als die Header Hintergrundfarbe zu ändern, was auch super klappt.

 

Jetzt zu einem großen Problem:

Habe ich den HTTP-Cache aktiviert (Produktionsmodus), wird die Hintergrundfarbe im Frontend nicht geändert - egal wie oft ich die Bootstrap speicher.

Leere ich den HTTP-Proxy Cache, dann wird die Änderung im Frontend angezeigt.

Ich hätte aber gerne das meine Bootstrap vom HTTP-Cache ausgeschlossen wird!

Es gibt zwar einige Lösungsansätze, doch die funktionieren nicht, bzw. sind nicht das was ich möchte. Wie z.B.:

$this->cacheManager->clearHttpCache();

oder

in der getInfo

'esi' => true,

eintragen.

 

Es wäre wirklich super, wenn mir dabei jemand helfen könnte.

Vielen Dank im vorraus.

Probleme mit Javascript und dem Binding

$
0
0

Hallo Community,

ich habe das Problem das ich es nicht hinbekomme sauber eine JS datei einzubinden. Zwar bekomme ich mein JS geladen, wenn ich es im Block 

{block name="frontend_index_header_javascript_jquery_lib" append}
     <script type="text/javascript" src="{link file='frontend/_public/src/js/custom.js'}"></script>
{/block}

lade. Allerdings verliere ich jedesmal das Binding auf mein Element, wen ich auf der Detailseite eine andere Größe meines Artikels aussuche. Was mach ich falsch? Wie binde ich mein JS-Datei richtig an?

- Domainname aus Title / Suchergebnissen entfernen

$
0
0

Guten Abend zusammen. Wir erstellen aktuell einen neuen Shop mit Shopware. 

Wir würden gerne die Domain aus dem Title der Seite bzw. den Suchergbenissen entfernen.

Aktuell werden die Seiten so gelistet:

Datenschutz - Gym-point.de

www.gym-point.de/datenschutz

Ziele - Gym-point.de

www.gym-point.de/ziele/

Wir möchten also "- Domain" aus den Ergebnissen entfernen. Im Title Tag / Quelltext wird dies auch nicht angezeigt. Kann uns jemand sagen wie wir dies entfernen können?

Vielen Dank im Voraus.

Anpassen/Erweiterung Suchergebnisse

$
0
0

Ich versuche gerade, die Suchergebnisse um einige Parameter zu erweitern. Bis Version 4.3 konnte man dies recht elegant über das Event "Shopware_Controllers_Frontend_Search_ModifySearchResult" aus dem search-Controller in der Funktion defaultSearchAction erledigen. Leider gibt es in der aktuellen Version 5.2 hier kein solches Event mehr, sodass man eigentlich nur noch die Funktion hooken kann. Nicht sehr elegant, und man muss fast den ganzen Controller nachbauen, was ja auch nicht gerade sinnvoll ist. Das Problem ist, dass ich Informationen aus den Suchergebnissen brauche, die ich im Template anzeigen möchte, aber die aktuelle Funktion diese Infos nicht dem View zur Verfügung stellt.

Man kann sich zwar hier über die Session-Variablen und einen "Shopware_Controllers_Frontend_Search::defaultSearchAction::after" auf die Funktion behelfen, elegant ist aber anders. Hat hierzu jemand noch eine bessere Idee?

Fehler nach Formularübermittlung

$
0
0

Hallo zusammen,

ich beobachte seit kurzem einen Fehler bei der Übermittlung von Formularen. Es erscheint die Fehlerseite "Upps usw.". Ich habe es heute wieder im Newsletterformular gesehen und in Firebug konnte ich sehen, dass die Anfrage für "Newsletter" mit einem Fehlercode 400 quittiert wird.

Geht man dann zurück, lädt die Seite neu und übermittelt das Formular neu ist alles OK und zwar für eine ganze Weile. Ich habe den Verdacht, dass der Fehler immer dann auftritt, nachdem der HTTP Cache aufgewärmt worden ist.

Es tritt bei allen meinen drei Browsern auf: Chrome, Firefox und Safari.

Diesen Fehler habe ich übrigens auch schon im Responsive-Theme beobachten können.

Habt Ihr irgendeine Idee, wie ich der Ursache auf die Schliche kommen könnte?

Danke bereits und schönes WE

[Backend] Kategorie: eigene Checkbox speichern

$
0
0

Guten Tag liebe Shopware Community,

ich bin noch relativ frisch in der Shopware Programmierung und ich habe da eine Frage. Halo

Sachverhalt:
Ich habe im Backend unter Artikel > Kategorien via Ext JS eine Checkbox hinzugefügt. Diese Checkbox wird auch angezeigt:
Shopware Kategorie Checkbox

Problem:
Wenn ich ein Haken setze und auf speichern klicke und das ganze neu aufrufe, wurde die Checkbox "Test" nicht gespeichert.
Meine Frage: Wie bekomme ich es hin, dass die Checkbox für die jeweilige Kategorie im Backend gespeichert sowie auch ausgelesen wird?

Ich freue mich auf eure Antworten. Thumb-Up

Grüße
Scripter4.0


Nicht verändertes TabMenu bei Mobilansicht auf Detailseite

$
0
0

Hallo,

 

ich versuche gerade das Tabmenu in der Mobilansicht genauso wie bei der Desktopansicht anzeigen zu lassen.

Also so:

 

anstatt so:

 

Ich habe bereits eine Javascript Datei in meinem theme mit folgendem Inhalt angelegt:

StateManager
	.removePlugin('.tab-menu--product .tab--container', 'swOffcanvasButton', {
            titleSelector: '.tab--title',
            previewSelector: '.tab--preview',
            contentSelector: '.tab--content'
        }, ['xs'])
	.addPlugin('.tab-menu--product', 'swTabMenu', ['xs'])

Die JS Datei ist auch bereits im Theme.php eingebunden.

 

Leider funktioniert höchstwahrscheinlich mein code nicht richtig. Da ich keine Ahnung von Javascript habe und nur per try and error bis hier hergekommen bin, würde ich mich sehr freuen wenn mir jemand bei meinem Problem helfen könnte.

 

Grüße 

David

EAN Code im Frontend anzeigen

$
0
0

Hallo!

Die Shopware 5 stellt im Artikel ja das Feld EAN zur Verfügung - wie kriege ich den denn danach im Frontend angezeigt? Bisher habe ich da noch keine Möglichkeit gefunden und ich wollte nicht den Umweg über ein Freitextfeld wählen, wenn ich die Daten schon aus der Warenwirtschaft mit dem richtigen Feld gematcht bekomme. Jemand eine Idee?

Vielen Dank!

Kategorie Update Fehler über API wenn Einkaufswelt vorhanden ist

$
0
0

Hallo Zusammen,

ich bekomme bei einem Test-Shop eine Fehlermeldung wenn ich über die API die Kategoriedaten ändern möchte.
Es trifft Kategorien, die eine Einkaufswelt haben.

Die Meldung:

Expected value of type "Doctrine\Common\Collections\Collection|array" for association field "Shopware\Models\Category\Category#$emotions", got "array" instead.

Das Array was ich übergebe, ist das was ich von der API gemeldet bekomme, wo ich eigentlich nur Beschreibungen, Attr, etc. abändere. Es werden keine keys hinzugefügt.

(
            [id] => 3
            [parentId] => 1
            [streamId] =>
            [name] => Deutsch
            [position] => 0
            [metaTitle] =>
            [metaKeywords] =>
            [metaDescription] =>
            [cmsHeadline] =>
            [cmsText] =>
            [active] => 1
            [template] =>
            [productBoxLayout] =>
            [blog] => 0
            [path] =>
            [external] =>
            [hideFilter] => 0
            [hideTop] => 0
            [changed] => 2014-11-06T19:24:16+0100
            [added] => 2014-11-06T19:24:16+0100
            [mediaId] =>
            [attribute] => Array
                (
                    [id] => 19
                    [categoryId] => 3
                    [attribute1] =>
                    [attribute2] =>
                    [attribute3] =>
                    [attribute4] =>
                    [attribute5] =>
                    [attribute6] =>
                    [coeGoogleProductCategory] =>
                    [coeGoogleProductTyp] =>
                    [sixSeoUrl] =>
                )

            [emotions] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [parentId] =>
                            [active] => 1
                            [name] => Startseite
                            [userId] => 52
                            [position] => 1
                            [device] => 0,1,2,3,4
                            [fullscreen] => 0
                            [validFrom] => 2016-04-18T00:00:00+0200
                            [isLandingPage] => 0
                            [seoTitle] =>
                            [seoKeywords] =>
                            [seoDescription] =>
                            [validTo] =>
                            [createDate] => 2014-07-01T22:02:52+0200
                            [modified] => 2016-11-07T09:19:40+0100
                            [rows] => 23
                            [cols] => 4
                            [cellSpacing] => 10
                            [cellHeight] => 185
                            [articleHeight] => 2
                            [showListing] =>
                            [templateId] => 1
                            [mode] => resize
                        )

                )

            [media] =>
            [customerGroups] => Array
                (
                )

            [0] => Array
                (
                    [id] => 3
                    [parentId] => 1
                    [streamId] =>
                    [name] => Deutsch
                    [position] =>
                    [metaTitle] =>
                    [metaKeywords] =>
                    [metaDescription] =>
                    [cmsHeadline] =>
                    [cmsText] =>
                    [active] => 1
                    [template] =>
                    [productBoxLayout] =>
                    [blog] => 1
                    [path] =>
                    [external] =>
                    [hideFilter] =>
                    [hideTop] =>
                    [changed] => 2014-11-06T19:24:16+0100
                    [added] => 2014-11-06T19:24:16+0100
                    [mediaId] =>
                    [attribute] => Array
                        (
                            [id] => 19
                            [categoryId] => 3
                            [attribute1] =>
                            [attribute2] =>
                            [attribute3] =>
                            [attribute4] =>
                            [attribute5] =>
                            [attribute6] =>
                            [coeGoogleProductCategory] =>
                            [coeGoogleProductTyp] =>
                            [sixSeoUrl] =>
                        )

                    [emotions] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 1
                                    [parentId] =>
                                    [active] => 1
                                    [name] => Startseite
                                    [userId] => 52
                                    [position] => 1
                                    [device] => 0,1,2,3,4
                                    [fullscreen] => 0
                                    [validFrom] => 2016-04-18T00:00:00+0200
                                    [isLandingPage] => 0
                                    [seoTitle] =>
                                    [seoKeywords] =>
                                    [seoDescription] =>
                                    [validTo] =>
                                    [createDate] => 2014-07-01T22:02:52+0200
                                    [modified] => 2016-11-07T09:19:40+0100
                                    [rows] => 23
                                    [cols] => 4
                                    [cellSpacing] => 10
                                    [cellHeight] => 185
                                    [articleHeight] => 2
                                    [showListing] =>
                                    [templateId] => 1
                                    [mode] => resize
                                )

                        )

                    [media] =>
                    [customerGroups] => Array
                        (
                        )

                )

            [childrenCount] => 11
            [articleCount] => 4042
        )

Hat jemand einen Tipp, womit dies zusammen hängt, bzw. wie man es beheben kann?

Beste Grüße

hauptartikel mit varianten

$
0
0

Hallo,
ich hätte mal wieder ein frage und zwar habe ich einen artikel angelegt mit mehreren varianten.
jetzt soll es so sein, dass nur die varianten kaufbar sein sollen. 
dafür habe ich den "hauptartikel" bei den varianten auf inaktiv gestellt.

der artikel selber wird dann aber nicht mehr aufgelistet und ist nur noch über die suche auffindbar.
hat jemand einen tipp?
vielen dank:-)

mfg
dutchy

REST API Varianten löschen

$
0
0

Hallo,

ich habe folgendes Problem beim Synchronisieren der Artikle mit der API:

Wenn ich bei einem Variantenartikel eine Variante löschen möchte, gebe ich Sie beim aktualisieren des Artikels einfach nicht mehr mit, dann wird sie gelöscht. Das passt soweit.

Wenn der Artikel aber gar keine Varianten mehr haben soll, gebe ich jetzt 'variants'=>null mit, die Varianten bleiben dann aber bestehen.

Wie kann ich über die Artikel API alle Varianten löschen?

Beste Grüße!

Plugin Kompatibilität Account Einstellunge vs. assertMinimumVersion

$
0
0

Hallo, 

folgendes Szenario: 

  • Man erstellt ein Plugin, welches für Shopware Version 5.1.6 funktioniert. Ab 5.2 hat sich allerdings einiges geändert. Nun erstellt man ein Update des Plugins, welches für alle Versionen ab 5.2. kompatibel ist. Die Einstellung zur Kompatibilität hinterlegt man im Account, indem man die entsprechenden Haken setzt.

Beispiel: 

  • Plugin Version 1.0.0 => Kompatibel mit Shopware 5.0.0 - 5.1.6
  • Plugin Version 1.0.1 => Komptaibel mit Shopware 5.2.0 - 5.X.X

Frage: 

Bekommt ein Kunde, welcher Version 1.0.0 hat und auf Shopware 5.2.0 updated korrekterweise auch die Plugin Version 1.0.1 zum Update angezeigt? Oder gibt es hierbei irgendwelche Probleme? Wenn dies wider Erwarten nicht so funktionieren sollte, müsste man mit folgendem Code arbeiten?

if ($this->assertMinimumVersion('5')) { // new code} else { // old code}

 

 

Vielen Dank für euer Feedback!

 

 

 

Backend - Zusätzlicher Tab in Artikeldetails

$
0
0

Guten Abend,

ich versuche mich gerade daran, im Backend innerhalb der Artikeldetails einen neuen Tab einzufügen.

Da das ganze manuell nicht funktionierte, habe ich das "SwagExtendCustomer" Plugin aus dem Developer Guide als Grundlage verwendet. Alles entsprechend angepasst und ohne Fehler installiert/aktiviert. Leider jedoch ohne Erfolg. Ich bekomme einfach keinen zusätzlichen Tab in die Artikeldetails.

Anbei die ganzen geänderten Dateien:

Bootstrap.php

class Shopware_Plugins_Backend_SwagExtendArticle_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
    public function getVersion()
    {
        return '1.0.0';
    }

    public function getLabel()
    {
        return 'Extend article module';
    }

    public function install()
    {
        $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Backend_Article',
            'onArticlePostDispatch'
        );

        return true;
    }

    public function onArticlePostDispatch(Enlight_Event_EventArgs $args)
    {
        /** @var \Enlight_Controller_Action $controller */
        $controller = $args->getSubject();
        $view = $controller->View();
        $request = $controller->Request();

        $view->addTemplateDir(__DIR__ . '/Views');

        if ($request->getActionName() == 'index') {
            $view->extendsTemplate('backend/swag_extend_article/app.js');
        }

        if ($request->getActionName() == 'load') {
            $view->extendsTemplate('backend/swag_extend_article/view/detail/window.js');
        }
    }

}

app.js

//{block name="backend/article/application"}
// {$smarty.block.parent}
// {include file="backend/swag_extend_article/view/detail/tab.js"}
//{/block}

tab.js

// This tab will be shown in the customer module
Ext.define('Shopware.apps.SwagExtendArticle.view.detail.Tab', {
    extend: 'Ext.container.Container',
    padding: 10,
    title: 'Tab',

    initComponent: function() {
        var me = this;

        me.items  =  [{
            xtype: 'label',
            html: '<h1>Hello world</h1>'
        }];

        me.callParent(arguments);
    }

});

window.js

//{block name="backend/article/view/detail/window"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.SwagExtendArticle.view.detail.Window', {
   override: 'Shopware.apps.Article.view.detail.Window',

   getTabs: function() {
      var me = this,
          result = me.callParent();

      result.push(Ext.create('Shopware.apps.SwagExtendArticle.view.detail.Tab'));

      return result;
   }

});
//{/block}

Struktur

image

Ich komme nicht weiter und weiß aktuell nicht, was noch falsch sein könnte oder geändert werden muss. Ich arbeite mit der aktuellsten Shopware Version 5.2.12.

Hat jemand eine Idee, wie ich das ganze zum Laufen bekomme?


Cronjob in Plugin nach 5.2 System erstellen?

$
0
0

Vor dem 5.2 Plugin System wurde in Bootstrap.php die Klasse Shopware_Components_Plugin_Bootstrap extended, wodurch es möglich war, in der install-Methode z.B. folgendes auszuführen, um einen Cronjob zu erstellen:

$this->createCronJob("Product Export", "ProductExport", 86400);

Nach dem 5.2 Plugin System wird aber nicht mehr Shopware_Components_Plugin_Bootstrap sondern \Shopware\Components\Plugin extended. Hier steht $this->createCronJob(...) leider nicht mehr zur Verfügung.

Wie soll man nach dem 5.2 Plugin System einen Cronjob bei der Installation eines Plugins anlegen?
Muss ich wirklich selbst ein INSERT in den s_crontab table durchführen?

createEmotionComponent() im neuen Plugin-System

$
0
0

hi, ich wollte mir gerade ein kleines Plugin für ein eigenes Einkaufswelten-Element schreiben. Das wollte ich dann auch gleich im neuen Plugin-System machen.

Leider musste ich ziemlich schnell feststellen, dass es die Methode createEmotionComponent() nicht gibt bzw. nciht zur Verfügung steht.

Welche alternative kann ich nutzen?

Grundsätzlich: Ist das neue Plugin-System überhaupt schon zur verwendung zu empfehlen? ich habe das gefühl hier fehlt noch jede Menge und im gegensatz zum alten System ist viele sehr umständlich.

Warum wird ein Wert in s_order_attributes immer wieder mit einem alten überschrieben?

$
0
0

Ich habe ein Plugin erstellt, welches im table s_order_attributes einen Wert (zusätzliche Spalte my_modified_date) bei gewissen Änderungen updaten soll - eine modified timestamp sozusagen.

Nun es ist aber leider so, dass kurz nachdem ich die aktuelle Zeit über ein UPDATE statement setze, aufgrund irgendeines anderen Vorgangs wieder ein alter Wert hineingeschrieben wird. D.h. nach ein paar Millisekunden sieht der Datensatz wieder aus wie früher, und man bemerkt eigentlich gar nicht, dass mein Plugin kurz die aktuellere Zeit gesetzt hatte.

Im general Log von MySQL finde ich dazu solche Einträge:

SELECT alias.* FROM s_order_attributes alias WHERE alias.orderid = '123' LIMIT 1 OFFSET 0
UPDATE s_order_attributes alias SET alias.my_modified_date = '2016-12-15 15:09:25' WHERE alias.orderid = '123'

Meine Vermutung war, dass dies mit dem DataPersister zusammenhängt, aber ich kann es leider nicht nachvollziehen.

Kann jemand etwas mit den Log-Einträgen oben anfangen?

Kann ich irgendwelche zusätzlichen Informationen liefern, um jemanden in die Lage zu versetzen, mir hier weiterzuhelfen?

Warum bzw. wodurch wird hier wieder eine alte Zeit in den Datensatz geschrieben?

Besten Dank im Voraus!

 

Sprach SUBSHOP Auswahl im Hauptshop anzeigen.

$
0
0

Hi, 

wir haben im unseren Shop Sprach Subshops eingerichtet um die jeweiligen Länder direkt anzusprechen. Nun die Frage, wie können wir die Subshop als Dropdown mit Flage im Hauptshop anzeigen, bzw die Länder Auswahl im jedem Land anzeigen?

Rest-API bringt Fehlermeldung bei Artikel anlegen sobald ein Bild mitgeliefert wird (5.2.3)

$
0
0

Hallo allerseits !!

Wenn ich über die REST-API einen Artikel ohne Bild anlege funktioniert das einwandfrei.

Wenn ich ein Image mitgeben möchte bekomme ich folgende Fehlermeldung.

 

Auszug aus dem C#-Source

 

public class SW_Articles_Image2

{

        public int id { get; set; }

        public string link { get; set; }

        public string description { get; set; }

        public string path { get; set; }

        public int main { get; set; }

        public int position { get; set; }

        public int width { get; set; }

        public int height { get; set; }

        public string relations { get; set; }

        public string extension { get; set; }

        public int mediaId { get; set; }

}

 

article.images = new List<SW_Articles_Image2> { };

image = new SW_Articles_Image2();

image.description = "Neues Bild";

image.link = "/server/bilder/30829.jpg";

article.images.Add(image);

 

\\Shopware\\Models\\Article\\Image by id 0 not found

 

Eigentlich sollte der POST selbst dem Bild eine ID vergeben und die Daten in s_articles_img speichern.

Was mache ich falsch ?

 

 

Viewing all 2871 articles
Browse latest View live


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