inkognitoinkognito MemberComments: 14 Received thanks: 0 Member since: August 2011 edited June 2015
Ich würde gerne eine Seite erstellen auf der alle Hersteller mit iHren Links (Website, Artikel) aufgelistet sind.

Gibt es eine Möglichkeit diese Liste direkt abzufragen?

Comments

  • Oliver SkroblinOliver Skroblin ModeratorComments: 241 Received thanks: 75 Member since: August 2011
    Hallo inkognito,

    du könntest das ganze über ein Plugin realisieren.

    Zuerst solltest du dir einen eigenen Controller erstellen z.B.:
    $event = $this->createEvent('Enlight_Controller_Dispatcher_ControllerPath_Frontend_SupplierListing', 'onGetControllerPath_Frontend_SupplierListing');
    
    In diesem Controller kannst du dann über die Tabelle s_articles_supplier alle Hersteller mit dessen Logo und Homepage Link auslesen.

    Die Zuordnung zwischen Hersteller und Artikel geschieht über die Tabelle s_articles.supplierID = s_articles_supplier.id.

    Danach brauchst du nur noch ein eigenes Tempalte laden und die Daten anzeigen lassen.

    Gruß Oliver Denter
  • inkognitoinkognito MemberComments: 14 Received thanks: 0 Member since: August 2011
    Vielen Dank,
    jetzt weiss ich wenigstens wie die Daten verknüpft sind und woher Sie kommen.

    Aber ich komme wohl nicht umhin mich in die Klassenbibliothek einzuarbeiten.
    Gibt es da ein Tutorial?
    Die Klassendokumentation ist ja nicht so ergiebig wenn man die Grundzusammenhänge verstehen will.
  • flo.kalangoflo.kalango MemberComments: 107 Received thanks: 11 Member since: September 2012
    Mich interessiert das auch brennend; allerdings für Shopware 4.1!

    Ich habe versucht, solch ein Plugin zu schreiben, es will aber nicht funktionieren.
    Hier meine Bootstrap.php:
    <?php
    /**
       *Bootstrap Class of the Plugin "Manufacterer Listing"
    */
    class Shopware_Plugins_Frontend_VDManufactererListing_Bootstrap extends Shopware_Components_Plugin_Bootstrap
    {
        public function getCapabilities()
        {
          return array(
            'install' => true,
            'update' => true,
            'enable' => true
           );
        }
      
        public function getLabel()
        {
          return 'Hersteller Listing';
        }
      
        public function getVersion()
        {
          return '0.0.1';
        }
      
        public function getInfo()
        {
          return array(
            'version' => $this->getVersion(),
            'label' => $this->getLabel(),
            'supplier' => 'FW',
            'description' => 'Eine Liste der gespeicherten Hersteller im Template ausgeben',
            'support' => 'FW,a@b.de',
            'link' => 'http://www.myshopware.de/'
        );
        }
      
        public function install()
        {
            $this->subscribeEvent($event);
           
          return true;
        }
        
       protected function subscribeEvents()
        {
            $event = $this->createEvent(
                'Enlight_Controller_Dispatcher_ControllerPath_Frontend_SupplierListing',
                'onGetControllerPath_Frontend_SupplierListing'
          );
           
        }
        
         
       public function onGetControllerPath_Frontend_SupplierListing()
       {
          $supplierID = $this->Request()->getParam('supplierID');
           
          $select ='
             SELECT
                s_articles_supplier.img,
                s_articles_supplier.description
             FROM s_articles_supplier
             ';
           
          $items = Shopware()->Db()->fetchRow($select, $supplierID);
              
          $this->View()->assign(array(
             'success' => true,
             'data' => $items,
             'count' => count($items)
             ));
           
          $view->extendsTemplate(dirname(__FILE__).'/index.tpl');
          $view->extendsBlock("frontend_index_supplierlisting",'<p>{$items}</p>');
           
       }
           
    }
    

    In meiner index.tpl sieht's so aus:
    {block name="frontend_index_supplierlisting"}
       <h1>Herstellerliste</h1>
            <p>{$items}</p>   
    {/block}
    

    1. Leider wird im Template nur die Überschrift ausgegeben, der Inhalt innerhalb des <p> Tags bleibt leer.
    2. Stimmt meine Zuweisung "$view->extendsBlock("frontend_index_supplierlisting",'<p>{$items}</p>');" so?
    3. Kann mein Plugin so überhaupt funktionieren? Mein Eindruck ist, das meine bootstrap.php nicht aufgerufen wird, wenn der User auf meine Inhaltsseite "Hersteller" klickt, die auf das Template verweist.

    Bin ein Einsteiger und über Hilfe sehr dankbar!

    Grüße,
    Flo
  • waldicomwaldicom MemberComments: 1026 Received thanks: 210 Member since: September 2011
    Solche Plugins gibt es schon im Store, z.B. hier: http://store.shopware.de/template-desig ... iner-seite

    Dein Plugin kann so nicht funktionieren, uns zwar aus mehreren Gründen.
    Einige davon sind:
    - fetchAll gibt ein Array zurück, das muss im Template durchiteriert werden
    - die Logik gehört in den Controller (heißt bei Dir SupplierListing)
    - die Hersteller würden dann angezeigt werden, wenn der Controller aufgerufen wird (etwa http://deinshop.de/SupplierListing)
    - ...
  • memomemo MemberComments: 32 Received thanks: 5 Member since: March 2013
    Muss man dafür denn wirklich ein Plugin schreiben/kaufen? Im Listing werden die Hersteller ja auch über den Array $sSuppliers zu Verfügung gestellt. Ausgegeben werden die Hersteller damit z.B. in frontend/listing/filter_supplier.tpl
    Wenn ich den Inhalt dieses Templates in ein eigenes custom-Template einfüge, klappt das natürlich nicht, da der Array $sSuppliers nicht vorhanden ist. Kann man den aber nicht irgendwie ansprechen oder laden?

    Danke und Gruss
    memo
Sign In or Register to comment.