Shop-Modul: Neue Felder?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Shop-Modul: Neue Felder?

      Hallo zusammen!

      wir versuchen uns zurzeit an Dolphin und JomSocial und wollen prüfen, welches für unsere Zwecke am besten geeignet ist...

      Nun mal ein Frage zum Dolphin-Shop-Modul (was ja zum Standard gehört und was ich sehr praktisch finde... ;)

      Wie können neue Felder sinnvoll eingebunden werden? Also einerseits so, dass sie eine entsprechende Übersetzung haben und andererseits, dass auch nach den Inhalten gesucht werden kann.

      Z.B. möchte ich ein Feld "Programmiersprache" einbinden. Dazu sollen natürlich auch Programmiersprachen hinterlegt werden, die ja dann auch irgendwo eingestellt werden müssen...

      Gibt es eine "FBI-Standardvorgehensweise" für die Erweiterung?!

      Danke!
    • Hi ewx,

      ich hoffe, ich habs richtig verstanden.

      Also im Shop kannst du standardmäßig ein Produkt einer Kategorie zuweisen. Diese Kategorien kannst du vorher unter Einstellungen->Kategorien für den Shop einstellen.

      Zusätzlich kannst du natürlich auch x-beliebige Felder mit ein wenig Aufwand zusätzlich erstellen, z.B. Bereich, Unterbereich, Typ etc...

      Nach einer Anpassung kannst du natürlich auch nach diesen Feldern suchen.

      Aber wie gesagt, zur Filterung gibt es standardmäßig erstmal nur die Kategorien, die du selbst verwalten kannst.

      Grüße
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --
    • Original von creativeMind
      Hi ewx,

      ich hoffe, ich habs richtig verstanden.

      Das hoffe ich auch... ;)

      Original von creativeMindAlso im Shop kannst du standardmäßig ein Produkt einer Kategorie zuweisen. Diese Kategorien kannst du vorher unter Einstellungen->Kategorien für den Shop einstellen.

      Das habe ich gefunden.

      Original von creativeMindZusätzlich kannst du natürlich auch x-beliebige Felder mit ein wenig Aufwand zusätzlich erstellen, z.B. Bereich, Unterbereich, Typ etc...

      jajajaja!! Wie?!?! :freuen:
      Das würde ich gerne wissen.

      Original von creativeMindNach einer Anpassung kannst du natürlich auch nach diesen Feldern suchen.

      Aber wie gesagt, zur Filterung gibt es standardmäßig erstmal nur die Kategorien, die du selbst verwalten kannst.

      Grüße
    • Also generell hast du insgesamt drei Sichten.

      1) Frontend (Formular)

      2) Backend (Datenbank)

      3) Controller (Evtl. Funktionen, die noch integriert werden müssen. Business Logik)

      Nun zur Vorgehensweise:

      Hier bilde ich ab, wie man bei der Produkteingabe ein neues Feld namens Programmiersprache erstellt und in das Formular einfügt:

      Schritt 1)
      Sichere den kompletten Ordner /modules/boonex/store/

      Schritt 2)
      Logg dich ins AdminPanel ein und geh unter Einstellungen->Listenverwaltung.

      Schritt 3)
      Dort erstellst du einen neuen Listeneintrag namens Programmiersprachen.

      Schritt 4)
      Da gibst du jetzt neue Werte ein.

      Value Key
      01 C++
      02 C#
      03 JAVA
      04 PHP
      05 Ruby On Rails
      etc....

      Hinweis:
      Die Values müssen Unique sein! Die Zahlen dürfen also nicht gleich sein!!


      Schritt 5)
      Abspeichern. Jetzt hast du einen neuen GLOBALEN Listeneintrag, den du ÜBERALL in deinem System verwenden kannst! ;)


      Schritt 6)
      Öffne die Datei /modules/boonex/store/classes/BxStoreFormAdd.php


      Schritt 7)
      Geh zur Zeile 58. Dort findest du folgenden Code:
      [php]$oCategories->getTagObjectConfig ();[/php]


      Schritt 8)

      Nach diesem Code, fügst du folgenden Code ein:
      [php]$getListProgrammiersprachen = array(); $getListProgrammiersprachen = $GLOBALS['aPreValues']['Programmiersprachen']; foreach($getListProgrammiersprachen as $value => $key) { (int)$value; (int)$key; $setListProgrammiersprachen[$value] = _t($key['LKey']); }[/php]


      Schritt 9)

      Nun gehst du zur Zeile 221. Dort findest du diesen Code:
      [php]'categories' => $oCategories->getGroupChooser ('bx_store', (int)$iProfileId, true),[/php]

      Nach diesem Code fügst du folgenden Code ein:
      [php]'programmiersprache' => array( 'type' => 'select', 'name' => 'programmiersprache', 'caption' => _t('Programmiersprache'), 'values' => $setListProgrammiersprachen, 'required' => false, 'db' => array ( 'pass' => 'Preg', 'params' => array('/([a-zA-Z]{2})/'), ), 'display' => true, ),[/php]


      Schritt 10)
      Die Datei abspeichern und hochladen.

      Schritt 11)
      Öffne deine Datenbank bzw. dein phpMyAdmin und führe diesen Command aus:

      Quellcode

      1. ALTER TABLE `bx_store_products` ADD `programmiersprache` VARCHAR( 5 ) COMMENT 'Wert der Programmiersprache als Zahl' AFTER `categories`


      Schritt 12)
      Öffne die Datei /modules/boonex/store/BxStoreTemplate.php und geh zur Zeile 154.

      Dort findest du folgenden Code:
      [php]foreach ($oForm->aInputs as $k => $a) {[/php]

      Direkt unter diesem Code fügst du folgenden Code ein:
      [php]switch($a['caption']) { case 'Programmiersprache': $aDataEntry[$k] = _t($GLOBALS['aPreValues']['Programmiersprachen'][$aDataEntry[$k]]['LKey']); break; }[/php]

      Abspeichern, hochladen und Spass haben.

      Was haben wir nun gemacht?

      1) Wir können einem Produkt eine zusätzliche Kategorie vergeben.
      2) Wenn wir noch mehr Werte in der neuen Kategorie haben, brauchen wir nur die Liste erweitern, und der Shop weiß Bescheid! ;)
      3) Wenn man das Produkt aufruft, dann sieht man in den Infos auch die neue Kategorie mit dem ausgewähltem Wert.

      Jetzt kann man das natürlich auch weiter anpassen, dass man nach der neuen Kategorie auch suchen kann, aber das würde hier den Rahmen sprengen. Vielleicht mach ich ja ein Step 2, wenn Interesse besteht.

      Natürlich kann man das ganze als Modul entwickeln, dann hast du mit dem Code nichts mehr zu tun!

      Ich hoffe, das hilft! Feedback ist immer gerne willkommen, denn ich denke, der eine oder andere hier wird es auch benutzen!

      Grüße
      creativeMind
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von creativeMind ()

    • Hi! Danke für deine schnelle Hilfe!!
      Sieht erstmal recht logisch und übersichtlich aus.
      Allerdings habe ich kein Menü "Listenverwaltung"... :cry:
      ah. Moment... "Predefined values" heisst das hier...
      okay, dann muss ich hier die "Language keys" eintragen.
      Den Rest muss ich in einer ruhigen Minute mal versuchen.
      Super! :kuss:

      Eine Frage noch zu "'programmiersprache' => array( 'type' => 'select', "
      was gibt es denn noch für "types"?

      Eine Suche ist vielleicht noch nicht einmal nötig.
      Schön wäre es, wenn man dann die Shop-Übersicht als Liste aufbauen und diese neuen Felder filtern könnte.
      Aber der Einbau reicht erstmal.
      Danke! Wenn das so weiter geht, dann mache ich mir gar nicht die Mühe, JomSocial noch zu installieren... :punk:
    • Hi,

      Ja das sind die Predefined Values!

      Es gibt folgende Typen:

      - text
      - email
      - number
      - password
      - select
      - radio
      - checkselect

      Man kann problemlos auch weitere Typen definieren. Auch komplexe zusammenhängende Typen über den Controller.

      Grüße
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von creativeMind ()

    • Auch das mit dem Filtern über die neuen Felder ist möglich!

      Du müsstest jedoch den kompletten View ändern und ein Teil des Controllers, damit der Controller überhaupt Bescheid weiß, dass es das Feld "Programmiersprache" gibt.

      Grüße
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von creativeMind ()

    • Hallo hoerbi,

      selbstverständlich geht es auch ohne Code-Änderung!

      realmasterd haut auch diesbezüglich recht!

      Dann müsste man halt ein Modul entwickeln, es ganz normal installieren, und selbst bei einem Update dürftest du keine Probleme haben, es sei denn, die Datenbankstruktur wurde komplett verändert, was bis zur Version 8 höchstwahrscheinlich nicht der Fall sein wird.
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von creativeMind ()

    • Nein,

      optimalerweise würde ich ein externes Modul bauen. Über ein INTERFACE dock ich das Shop Modul an.

      Dabei kann ich beliebige Sachen abfragen und synchonisieren.

      - Was hat sich geändert, seit der letzten Version
      - Hat sich was an der DB Struktur verändert
      etc...

      Das schöne an diesem Vorgehen ist, dass du dein ganz normales Shop Modul installierst, und wenn du das erweiterte Modul im selben Ordner hochlädst, brauchst du nichts mehr im Code machen, sondern könntest über ein FieldBuilder die gewünschten Felder erstellen.

      Die Module erkennen sich gegenseitig und du brauchst im Admin-Bereich nur die Felder einstellen.
      Boonex Dolphin Expert, Software-Entwickler, Web-Entwickler, Designer, iOS Entwickler für iPhone/iPad -- Schulungen, Installationen, Konfigurationen, Sicherheitstests für Dolphin Community Inhaber --

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von creativeMind ()