MCHEMCHE MitgliedKommentare: 11 Danke erhalten: 0 Mitglied seit: Juni 2016 bearbeitet 23. Juli

Hallo, ich habe gerade ein Problem und stehe etwas auf dem Schlauch. Ich möchte in meinem Theme eine URL über ein Variabel ausgeben die in der Theme.php im Backend konfiguruert ist.

Die Konfiguration an sich funktioniert, das Problem liegt an der Gernerierung des Links. So habe ich die Variable verbaut, damit die URL dort als Link-Ziel genutzt wird.

Erstmal wurde der Shop gar nicht mehr geladen. Als ich den Inhalt dann von https://www.facebook einfach mal auf irgeneinen Text (xxx) geändert habe wurde der Shop wieder angezeigt und ich habe gesehen das für den Link folgende URL genieriert wird: 

https://www.SHOPURL.de/xxx

Der Inhalt der Variable wird also einfach nur als relativer Link an die Shop-URL angehängt. Wie bekomme ich es hin, dass die URL der Variable dort als Absoluter Link genutzt wird? Ich hoffe es kann mir jemand auf die Sprünge helfen. Danke im Vorraus.

Gruß,
Manuel

Antworten

  • PStadtfeldPStadtfeld MitgliedKommentare: 265 Danke erhalten: 59 Mitglied seit: August 2017

    Verstehe das Problem nicht so ganz, du hast also eine Variable in welcher eine URL-Adresse gespeichert ist und diese soll nun...irgendwo in einer tpl eingesetzt werden und dann extern verlinken?

    Sofern http/s vor der Adresse steht interpretieren Browser die URLs immer als absolute Adresse, steht nur "href=/[seitenname]/[scriptname_optional]" dann ist das ein relativer Pfad innerhalb der aktuellen Seite.

    Für interne Verlinkungen bietet shopware diverse Funktionen an, Verlinkungen on-the-fly zu generieren, du gibst nur controller und aktion an und der Rest wird dir erstellt.
    Für externe Verlinkungen reicht es die vollständige Adresse beim a-tag anzugeben.

  • MCHEMCHE MitgliedKommentare: 11 Danke erhalten: 0 bearbeitet 25. Juli Mitglied seit: Juni 2016

    Ja, mein Plan war ja auch die Variable einfach im dem a-tag ausgeben zu lassen. 

    Nochmal zur Erklärung: Ich habe über die Theme.php eine Textfeld angelegt in dem die URL eingetragen werden kann. Dieses Feld hat den Wert "SocialLink".

    In der Template Datei habe ich dann folgenden Code für den Link eingefügt:

    <a class="social--link" href="{$theme.SocialLink}" target="_blank">Facebook</a>

    Wenn ich nun im Backend in das Feld beispielsweise https://www.facebook com eingebe wird nicht der Link https://www.facebook im a-tag ausgegben sonder https.//www.MEINEURL.de/https://www.facebook

    Der Link wird also an meine Shop URL angehängt. Das führt dann erstmal dazu, dass der Shop wegen eines Fehlers gar nicht angeziegt wird. Konnte ich dann nachstellen, als ich im Backend statt https://www.facebook einfach mal xxx in das Feld eingegeben habe und dann geshehen habe, dass der generierte Link ttps.//www.MEINEURL.de/xxx lautet.

    Mein Problem ist also, dass der Link nicht 1:1 im href des a-tags ausgegeben wird sondern als relativer Pfad an meine Shop URL angehängt wird.

  • BestShopPossibleBestShopPossible MitgliedKommentare: 619 Danke erhalten: 99 Mitglied seit: November 2017

    In dem Fall einfach mittels php-Funktion die Shop-URL abschneiden. {$smarty|phpFunktion:Parameter1}. Es müsste eine Variable mit dem Shop-Host geben, die sollte man dann nutzen.

  • Daniel.BDaniel.B MitgliedKommentare: 44 Danke erhalten: 9 bearbeitet 7. August Mitglied seit: April 2013

    Da du sicher kein Less Kompatibilitätsflag in deiner Theme.php gesetzt hast, musst du die url in " "  setzen. Die Url "www.google.de" so in dein Textfeld eintragen. Die bessere Lösung ist aber wie gesagt das gleich richtig zu Programieren. 

     

     

  • MCHEMCHE MitgliedKommentare: 11 Danke erhalten: 0 Mitglied seit: Juni 2016

    Danke für die Antwort. Das mit den Anführungszeichen werde ich mal testen, ist aber wirklich nicht die optimale Lösung.

    Kannst du mir mal ein paar Stichwörter geben in welche Richtung das in Sachen Programmierung gehen muss, bzw. wie das realsiert werden kann. Auf dem Gebiet bin ich leider nciht so fit...

  • Daniel.BDaniel.B MitgliedKommentare: 44 Danke erhalten: 9 Mitglied seit: April 2013
     $socialMediaFacebookField = $this->createTextField(
            'SocialMediaFacebookLink',
            'Facebook Link',
            '',
    			['attributes' => ['lessCompatible' => false]]
          );

    Also auf die Schnelle ich würde es so machen. und in deinem Template dann am besten mit einer if abfrage dann so aufrufen

     

     {if $theme.SocialMediaFacebookLink}   <a href={$theme.SocialMediaFacebookLink} target='_blank'> Facebook  </a>   {/if}

     

  • MCHEMCHE MitgliedKommentare: 11 Danke erhalten: 0 Mitglied seit: Juni 2016

    Das hat funktioniert. Es lag tatsächlich nur an dem "lessCompatible' => false". Das hatte ich an anderer Stelle auch schon genutzt aber hatte ich in dem Fall gar nicht auf dem Schirm....

    Vielen Dank für diene Hilfe!

Anmelden oder Registrieren, um zu kommentieren.