Aktuelles / BlogAktuelles / Blog

Neueste Meldungen, Hintergrundinfos, HOW-TOs

...und vieles mehr nur hier im Blog

Weitere Informationen zu Contentpapst Weitere Informationen zum CP::Shop

Neueste Beiträge


Entwickler-Blog: Tipps & Tricks

<< zum vorherigen Eintragzum nächsten Eintrag >>

Neue Möglichkeiten für die "Individuellen Felder" in Contentpapst/CP::Shop (Di, 16.06.2009)

Die sogenannten "Individuellen Felder" erlauben es in Contentpapst und CP::Shop, die standardmäßigen Formulare zum Hinzufügen und Bearbeiten von Inhalten in vielen Bereichen des Systems unkompliziert um eigene Eingabefelder zu erweitern. Dieses Feature kann u.a. dazu genutzt werden, um bei den Bestellungen im Online-Shop zusätzliche Informationen zu hinterlegen oder aber um die Shop-Artikel in einem Buch-Shop um Angaben wie die ISBN-Nummer oder den Autor zu ergänzen. In der Version 2009.2 wurde dieses Feature weiter ausgebaut.

Die "Individuellen Felder" werden in dieser Version in den folgenden Bereichen unterstützt:

  • Artikel, News, Galerie und Links: Jeweils für die Einträge und Kategorien
  • Navigation
  • Newslettermitglieder (Abonnenten)
  • CP::Shop: Artikel, Bestellungen, Hersteller, Kategorien, Kunden, Kundengruppen, Partner, Versandarten, Zahlungsarten
  • Benutzer
  • Benutzergruppen

Auch weiterhin werden diese Felder wie im Beitrag Individuelle Felder im CP::Shop anlegen beschrieben über das standardmäßig bei beiden Systemen mitgelieferte Modul "Sicherung/Datenbank" in der jeweiligen Datenbanktabelle hinzugefügt. Dabei genügt es, wenn das neue Feld den Präfix "custom_" erhält, damit es als individuelles Feld erkannt und in den Formularen angezeigt werden kann. Der Rest des Feldnamens in der Datenbank wird dann als Beschriftung in den Formularen genutzt.

Aus "custom_autor" wird daher "Autor". Das Zeichen "_" in den Feldnamen wird als Leerzeichen interpretiert, "-" wird dagegen unverändert übernommen (z.B. bei "custom_isbn-nummer", wird zu "Isbn-Nummer").

Erweiterte Möglichkeiten für die Darstellung der Felder

In der neuen Version gibt es nun folgende Möglichkeiten zur Anpassung der Darstellung dieser individuellen Felder:

  • Wird ein Feld vom Typ "text" angelegt, dann wird in den Formularen ein mehrzeiliges Eingabefeld angezeigt. Die Länge des dort eingegebenen Textes ist dabei nicht begrenzt.
  • Wird ein Feld vom Typ "int" angelegt, dann wird ein verkürztes 1-zeiliges Eingabefeld angezeigt, welches jedoch nur Zahlen verarbeitet. Die Länge der Eingabe ist wie in der Datenbanktabelle angegeben begrenzt.
  • In allen anderen Fällen und insbesondere beim standardmäßig genutzten Feldtypen "varchar" wird wie bisher ein normales 1-zeiliges Eingabefeld genutzt. Die Länge der Eingabe ist wie in der Datenbanktabelle angegeben begrenzt.

Wem diese 3 Möglichkeiten für die Darstellung der individuellen Felder nicht genügen, für den stellt die Version 2009.2 eine Schnittstelle bereit, über die komplett eigene Darstellungen für individuelle Felder mittels PHP realisiert werden können, ohne dass dafür die standardmäßigen Dateien von Contentpapst / CP::Shop modifiziert werden müssten.

Schnittstelle für eine weitergehende Anpassung der individuellen Felder

Um diese Schnittstelle nutzen zu können, müssen PHP-Kenntnisse vorhanden sein. Wir werden den Einsatz dieser Funktionen am Beispiel eines Buch-Shops demonstrieren, bei dem ein Feld für die Speicherung des Erscheinungsdatums der Shop-Artikel hinzugefügt werden soll:

1) Zunächst muss für die Shop-Artikel ein neues individuelles Feld angelegt werden. Die Daten der Shop-Artikel werden in der Datenbanktabelle "*_shop_items" hinterlegt. Wechseln Sie daher im Administrationsbereich auf die Seite "Module > Sicherung/Datenbank" und klicken Sie neben der Datenbanktabelle "*_shop_items" auf den Link "Struktur".

2) Dort fügen Sie am Ende der Tabelle ein neues Feld vom Typ "varchar" mit der Länge "255" und dem Feldnamen "custom_release_date" hinzu:

3) Wenn Sie jetzt auf die Seite "Module > CP::Shop > Artikel > Artikel hinzufügen" wechseln, dann sehen Sie bereits das neue Eingabefeld "Release Date":

4) Um dieses Feld nun weiter anzupassen, muss eine neue PHP-Datei

/themes/[VORLAGENSET]/scripts/fields/[TABELLE]_[FELDNAME].php

angelegt werden. "[VORLAGENSET]" ist dabei durch den Namen des bei Ihnen genutzten Vorlagensets zu ersetzen (z.B. "cpshop"), "[TABELLE]" durch den Namen der Datenbanktabelle und "[FELDNAME]" durch den Namen des gerade angelegten Feldes. In diesem Beispiel müsste also die Datei

/themes/cpshop/scripts/fields/shop_items_custom_release_date.php

neu angelegt werden. Dies ist z.B. über das Modul "Dateiverwaltung" oder aber direkt per FTP möglich.

5) Fügen Sie in diese Datei folgenden Inhalt ein:

In dieser Datei gibt es jeweils eine PHP-Klasse mit einem Namen im Format "contentpapst_fields_[TABELLE]_[FELDNAME]" und den folgenden 4 Methoden:

  • options (Grundlegende Einstellungen zu diesem Feld)
  • clean (Säubert den Inhalt des Feldes vor dem Einfügen in die Datenbank)
  • create (Zeigt dieses Feld in den Formularen an)
  • show (Gibt den Inhalt des Feldes nach Bearbeitung aus)

Nachdem Sie diesen Inhalt in der Datei gespeichert haben, rufen Sie zunächst noch einmal das Formular zum Hinzufügen von Shop-Artikeln auf. Die Darstellung des individuellen Feldes hat sich jetzt geändert:

Anstelle des normalen Eingabefeldes werden über die Methode "create" drei Eingabefelder für Tag, Monat und Jahr des Erscheinungsdatums angezeigt, inklusive der neuen Beschriftung. Ist kein Datum vorhanden (da der Artikel gerade erst hinzugefügt wird ist dies der Fall), dann wird das aktuelle Datum vorab eingetragen. Wird das Formular abgeschickt, dann werden die Werte aus den drei Eingabefeldern über die Methode "clean" verarbeitet und zu einem Format zusammengesetzt, welches in der Datenbank im Feld "custom_release_date" hinterlegt werden kann. Damit bleiben die eingegebenen Daten erhalten und können beim Bearbeiten des Shop-Artikels ausgegeben werden.

Die Methode "show" kommt zum Einsatz, wenn das Feld in den Übersichten im Administrationsbereich angezeigt werden soll, wie dies in der Version 2009.2 der Shop-Software CP::Shop erstmals möglich ist (Shop-Software CP::Shop: Individuell angepasste Übersichten, Erweiterter Export uvm.). In der Methode "options" schließlich wird noch festgelegt, wie die Spalte in diesen Übersichten beschriftet sein soll, wie breit die Spalte sein soll und wie die Daten ausgerichtet werden.

Mit dieser kleinen PHP-Klasse gibt es nun also drei neue Eingabefelder für Tag, Monat und Jahr für das Erscheinungsdatum. Diese Daten können beim Hinzufügen der Shop-Artikel erfasst werden, sie bleiben auch bei der Bearbeitung erhalten und können dort modifiziert werden, die Ausgabe der formatierten Daten ist in der Übersicht der Shop-Artikel möglich und natürlich können diese Daten auch in jeder Artikelvorlage über den {cp:tag} "{cp:shop:item:custom_release_date}" ausgegeben werden, so dass das Erscheinungsdatum jedes einzelnen Artikels in dem Buch-Shop angezeigt werden kann. Zusätzlich können diese Daten wie bei allen anderen individuellen Feldern im Ex- und Import genutzt werden.

Und trotz dieser zusätzlich hinzugefügten Funktionalität für das neue individuelle Feld gibt es einen entscheidenden Vorteil: Eine Anpassung der standardmäßigen Dateien ist nicht erforderlich, bei Updates für Contentpapst / CP::Shop funktionieren diese Schnittstellen daher weiterhin.


Blog-Eintrag kommentieren

Um einen Kommentar zu diesem Beitrag zu verfassen, können Sie sich im folgenden Formular entweder manuell mit Benutzername und Email-Adresse identifizieren oder aber Sie loggen sich über ein vorhandenes Profil bei Facebook, Twitter, OpenID etc. ein. Auf Wunsch haben Sie die Möglichkeit, sich automatisch über weitere Kommentare informieren zu lassen.

<< zurück

Weitere Einträge in der Kategorie "Tipps & Tricks"