Daten mit ID mittels Controller im Template ausgeben lassen

Hallo,

wir bauen momentan einen Shop wo wir z.B Authorinformationen in Blog Emotion Templates oder Bilder anhand von IDs (aus Freitextfeldern) brauchen. Uns ist klar das wir dazu auch ein Plugin schreiben könnten jedoch finden wir es etwas witzlos für solch banale Sachen extra Plugins zu schreiben. Daher unsere Frage, übersehen wir etwas offensichtliches oder bleibt uns diesbezüglich nichts Anderes übrig?

Kann man das vielleicht irgendwie über Smarty Helpers lösen? Also quasi wie den url helper nur das man die ID in den Request packt und eine Response bekommt mit z.B den Authorinformationen.

Vielen Dank und viele Grüße!

Du kannst im Blog doch mit den neuen Freitextfeld Konfigurator diese frei definieren.

Verstehe ich es richtig, dass du bspw. unter jedem Blog Beitrag einen bestimmten Author bzw. dessen Infos angeben möchtest?

Ja, das weiß ich, das ist ja auch meine Herangehensweise z.B bei einer Kategorie ein weiteres Bild mitzugeben. Nur bekomme ich lediglich im Template die ID der Datei als Variable und nicht einen Pfad zum Bild.

Genau, diese Informationen sind z.B auf der Blog Detailseite abrufbar und im Blogobjekt, genauso auch auf der Übersicht doch leider nicht in den Einkaufswelten. Dort ist nur die ID des Author hinterlegt, nicht aber die Informationen.

 

edit:

Ich habe mir für Medien in Freitextfeldern jetzt ein Plugin gebaut, falls da wer Interesse dran hat (unten der Code der dann nur eingefügt werden muss, Info etc. habe ich dort jetzt mal bewusst rausgelassen). In den Einstellungen muss da dann der Name des Freitextfeldes angegeben werden und die ID wird in den Meda Pfad umgewandelt

public function install()
    {
        $form = $this->Form();
        $form->setElement('textarea', 'attributes', array(
            'label' => 'Attributnamen',
            'description' => 'Hier die Freitextfeld Namen mit Komme separiert eintragen'
        ));

        $this->subscribeEvent(
           'Enlight_Controller_Action_PostDispatch_Frontend_Listing',
           'onPostDispatchIndex'
        );

        $this->subscribeEvent(
           'Enlight_Controller_Action_PostDispatch_Frontend_Index',
           'onPostDispatchIndex'
        );

        $this->subscribeEvent(
           'Enlight_Controller_Action_PostDispatch_Frontend_Detail',
           'onPostDispatchIndex'
        );

        return true;
    }

    public function uninstall()
    {
       return true;
    }

    public function onPostDispatchIndex(Enlight_Event_EventArgs $arguments) {
        $view = $arguments->getSubject()->View();
        $view->assign('customAttributeInformations', $this->getInformation($view));
    }

    protected function getInformation($view)
    {
        $attributes = $this->Config()->get('attributes', array());

        if (empty($attributes)) {
            return "NO_FIELDS_CONFIGURED";
        } else {
            $attributes = explode(',', $attributes);
            $informations = "";

            foreach ($attributes as $attribute) {
                $attributeValue = $view->sCategoryContent['attribute'][$attribute];
                if ($attributeValue) {
                    $informations[$attribute] = Shopware()->Db()->fetchOne("SELECT path FROM s_media WHERE id = $attributeValue");
                }
            }
            return $informations;
        }
    }

 

Was hast du da sonst noch in dem Plugin könntest du es komplett posten?

 

Das ist eigentlich schon alles.
Ich sag mal so, das andere sind ja eigentlich nur Standard Plugin Sachen. Wenn die berücksichtigt sind würde ich sagen ist das ready to go. Installieren, Plugin Konfiguration einfügen und dann sollte das schon im Frontend landen.

Bitte beachten, dass das jetzt auch schon einige Zeit her ist das das benutzt wurde. Kann mich aber nicht daran erinnern da bis heute irgenwas angepasst zu haben. Einfach mal testen ob alles geht.