Variable für Shop URL im Backend

Hallo zusammen,

 

ich betreibe eine Seite mit 4 Shops und würde gerne einen Hersteller Slider machen den ich bei allen einsetzen kann, da es identische URL Strukturen sind. Aktuell kann man leider nur absolute Pfade hinterlegen…relative Pfade lassen sich nicht speichern.

Ich suche daher eine Variable für die Shop URL: {$urlvariable} /de/kategorie/

 

Leider finde ich irgendwie nichts was ich da verwenden kann.

Jemand ne Idee?

VG Frank

{$url = {url controller=category} }

eventuell? Vielleicht auch controller=Kategorie, müsstest du mal ausprobieren…

Alternativ kannst du auch über Smarty direkt auf die Adresse zugreiffen, das war meine ich sowas:

{$smarty.server.HTTP_HOST}

oder

{$Shop->getHost()}

 

Ich möchte das im URL Feld bei Hersteller im Backend eingeben. Nicht in einem Template. Kann das so leider nicht speichern :frowning:

 

 

Ich habe beim Hersteller jetzt ein Freitextfeld für eine Custom URL hinzugefügt. Nur irgendwie bekomme ich die nicht ins Temaplte. Ausgegeben wird sie. Das sehe ich mittels

{$supplier|@print\_r}

 

Wie müsste denn die Variable für den Wert von manufactor_custom_url lauten?

{$supplier.attributes.core.storage.manufactor_custom_url} mag er nicht. Vielleicht weil “Protected”?

Original ist {$supplier.link}

 

Array
(
    [id] => 19
    [name] => Motorräder - Aprilia - DE
    [description] => 
    [metaTitle] => 
    [metaDescription] => 
    [metaKeywords] => 
    [link] => shopware.php?controller=listing&action=manufacturer&sSupplier=19
    [image] => xxx
    [attributes] => Array
        (
            [core] => Shopware\Bundle\StoreFrontBundle\Struct\Attribute Object
                (
                    [storage:protected] => Array
                        (
                            [id] => 1
                            [supplierID] => 19
                            [manufactor_custom_url] => de/speichenraeder/aprilia
                        )

                )

        )

    [website] => https://www.faba-wheels.com/de/motorraeder-aprilia-de/
)

 

Habe es gelöst: {$supplier.attributes.core->get(‘manufactor_custom_url’)}

Ich habe das gleiche Problem in der Datei: …/widgets/emotion/components/component_category_teaser.tpl

Ich würde gerne das Kategorie-Freitextfeld “attribute1” in den Einkaufswelten ausgeben:

in der Variable $Data ist es drin: {$Data.category|@print_r}

Shopware\Bundle\StoreFrontBundle\Struct\Category Object
(
    [id:protected] => 13
    [parentId:protected] => 200
    [position:protected] => 1
    [path:protected] => Array
        (
            [0] => 3
            [1] => 200
        )

    [name:protected] => Ordnung
    [metaTitle:protected] => 
    [metaKeywords:protected] => 
    [metaDescription:protected] => 
    [cmsHeadline:protected] => 
    [cmsText:protected] => 
    [template:protected] => 
    [blog:protected] => 
    [displayFacets:protected] => 1
    [displayInNavigation:protected] => 1
    [externalLink:protected] => 
    [externalTarget:protected] => 
    [media:protected] => 
    [blockedCustomerGroupIds:protected] => Array
        (
        )

    [productBoxLayout:protected] => 
    [productStream:protected] => 
    [hideSortings:protected] => 
    [attributes:protected] => Array
        (
            [core] => Shopware\Bundle\StoreFrontBundle\Struct\Attribute Object
                (
                    [storage:protected] => Array
                        (
                            [id] => 1
                            [categoryID] => 13
                            [attribute1] => Sortimentskästen, Koffer, System-/Lagerboxen
                            [attribute2] => 
                            [attribute3] => 
                            [attribute4] => 
                            [attribute5] => 
                            [attribute6] => 
                        )

                )

        )

)
1

Das “Sortimentskästen, Koffer, System-/Lagerboxen”.

 

{$Data.category->get(‘attribute1’)}

{$Data.category->get(‘core’)|@print_r}

{$Data.category->get(‘attributes’)|@print_r}

etc.

funktioniert nicht.

 

Wie funktioniert ->get bei protected genau?

Hat jemand eine Idee?

Danke.

 

:-) 

{$Data.category.attributes.core->get(‘attribute1’)}

Hallo @atari82‍ ,

ja, das ist etwas kompliziert. Zunächst mal die Lösung:

{* möglich, führt jedoch zu Fehlern, wenn es das Attribut nicht gibt *}
{$Data.category->getAttribute('core')->get('attribute1')}

{* Besser: *}
{if $Data.category->hasAttribute('core') && $Data.category->getAttribute('core')->exists('attribute1')}
    {$Data.category->getAttribute('core')->get('attribute1')}
{/if}

Und falls es dich interessiet, hier die Erklärung, wie man darauf kommt Wink:

  1. Du siehst ganz oben bei deinem {$Data.category|print_r}, dass es sich um ein Objekt der Klasse Shopware\Bundle\StoreFrontBundle\Struct\Category handelt.
  2. Dort findest du keine Methode namens „getAttribute“, diese wird vererbt. class Category extends Extendable
  3. In der Extenable-Klasse finden wir die nötigen Methoden („hasAttribute“ und „getAttribute“).
  4. Die getAttribute gibt uns ein Objekt vom Typ Attribut zurück.
  5. In diesem Objekt haben wir dann die Methoden „exists“ und „get“ zur Verfügung. Mit "get(‚nameDesAttributs‘) erhalten wir endlich den Wert.

Viele Grüße

1 Like

Chapeau!! Sehr schön erklärt … und funktioniert perfekt!