Backend Sprachwechsel, benutzerdef. Felder, Platzhalter

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
DiMiZu
Beiträge: 68
Registriert: Sa 8. Okt 2005, 12:49
Kontaktdaten:

Backend Sprachwechsel, benutzerdef. Felder, Platzhalter

Beitrag von DiMiZu » Fr 16. Okt 2015, 11:23

Backend Sprachwechsel, benutzerdefinierte Felder, Platzhalter ähnlich Wordpress Shortcodes

Wordpress Features nachbauen?

Für ein Projekt bin ich am Überlegen ob Contenido oder Wordpress die idealer Wahl ist. Ich möchte hier auf keinen Fall eine Diskussion über Für und Wider des einen oder anderen CMS lostreten (ich selbst neige für mein spezifisches Projekt eher zu Contendio), ich möchte hier eine technische Diskussion führen wie einige tolle Wordpress Features in Contenido „nachgebaut“ werden könnten. Den Vergleich zur Wordpress ziehe ich nur, weil sicherlich einige Wordpress kennen und damit besser verstehen, was ich ausdrücken möchte.

Also bitte keine Diskussionen Contendio ist besser weil abc oder Wordpress ist kein CMS sondern ein BLogsystem oder…
Bitte eine Diskussion wie man betreffende Features eventuell in Contenido umsetzten könnte. Ideen zu Lösungsansätzen aber auch fertige Lösungen, beides wäre interessant.

1.) Backend-Sprachwechsel:
Der Wechsel von einem Artikel in einer Sprache in den entsprechenden Artikel einer anderen Sprache ist für den Redakteure recht umständlich. Wordpress gepaart mit dem Plugin Polylang ist da extrem vorbildhaft. Es ist für den Redakteur möglich durch einen einzigen Klick vom z.B. deutschen Artikel in den entsprechenden englischen Artikel zu wechseln. Damit kann man sogar einen anderssprachigen Artikel anlegen aber eine Querverlinkung bei bereits bestehenden synchronisierten Artikeln würde mir schon genügen.

Hätte jemand Ideen oder Lösung wie man sowas in Contenido 4.9 nachrüsten könnte?

2.) Datenbank - Erweiterte Artikeleigenschaften oder benutzerdefinierte Felder:
In Wordpress ist es von Haus aus möglich über benutzerdefinierte Felder key/value Paare anzulegen. Somit ist es recht einfach möglich einen Post oder eine Page (in Contendio Artikel) mit Zusatzinfos auszustatten.

In Contendio gibt es die Content Allocation mittlerweile Tagging genannt. Damit ist es zwar auch möglich einen Artikel mit Zusatzinfos auszustatten aber leider nur key/JA-NEIN und nicht key/value. Ich würde mir Artikeleigenschaften in Form von key/value wie bei Wordpress wünschen. Eine zusätzliche Datenbank möchte ich nicht verwenden.

Ich habe mir für dieses Problem in der Vergangenheit mit dieser Klasse beholfen: http://forum.contenido.org/viewtopic.php?f=31&t=9644 Aus meiner Sicht eine super Idee, schade dass das Konzept nicht weiter verfolgt wurde.

Aus heutiger Sicht würde ich dafür wie folgt vorgehen: für key/JA-NEIN Felder die Content Allocation nutzen und für key/value Paare im Template für jedes key/value Paar eine Modul das auf den Content Typ CMS_TEXT aufbaut nutzen.

Also Template bzw. Vorlage könnte so aussehen:

Code: Alles auswählen

Überschrift
HTML
TEXT1 (für erstes key/value Paar)
TEXT2 (für erstes key/value Paar)
TEXT3 (für erstes key/value Paar)
Würdet Ihr das als sinnvoll erachten? Hat jemand bessere Lösungen? Schlussendlich soll es damit möglich sein, individuelle Suchfunktionen zu erstellen bzw. Artikellisten zu genieren mit denen man z.B. eine Ausgabe aller Artikel, welche das Tag (aus Content Allocation) ABC gesetzt haben und zugleich im key XY den Wert 123 enthalten.

(Schön wären dann auch noch eigen Content Typen für Select und Option Felder. Aber das muss mal nicht sein.)

3.) Shortcodes – Platzhalter
In Wordpress ist es für den Redakteur möglich mitten im Editor einen sogenannten Shortcode, nennen wir ihn Platzhalter, einzufügen, sodass genau an dieser Stelle die Ausgabe eines Plugins (in Contenido Modul) stattfindet. Somit ist es für den Redakteur recht einfach, dynamisch HTML, Galerien, Artikellisten zu mischen. ich will damit sagen für den Redakteur ist es einfach die Position z.B. einer Galerie in seinem eingegeben Text zu bestimmen.

Wenn ich in Contenido dem Redakteur sowas ermöglichen will:

Code: Alles auswählen

Überschrift
HTML
Galerie
HTML
Artikelliste
HTML
dann muss ich genauso ein Template (mittlerweile Vorlage) anlegen. Der Redakteur hat keine Möglichkeit daraus sowas zu machen:

Code: Alles auswählen

Überschrift
HTML
Artikelliste
HTML
Galerie
HTML
wenn ich als Webmaster nicht auch dafür ein eigenes Template zu Verfügung stelle.

Teilweise habe ich mir mit diesem Modul beholfen http://forum.contenido.org/viewtopic.php?f=89&t=34753 um eine gewisse Dynamic für den Redakteur zu bieten. Ein sehr tolles Modul aber nicht die Lösung fürs Problem. Außerdem missfällt es mir, dass man irgendwann unzählige HTML Content Typen in einem Template hat. Hätte jemand Lösungsansätze wie man so was machen könnte:

Template:

Code: Alles auswählen

Überschrift
HTML Vom Redakteur werden neben seinem normalen Text auch Platzhalter eingefügt. z.B. Lorem ipsum {MODUL ABC} sit dolor amet {MODUL XY}
Modul ABC
Modul XY
Usw.
Die Module sollten an der Stelle wo sie im Layout auftauchen die Ausgabe unterdrücken. Die Ausgabe sollte genau dort erfolgen wo im Modul HTML der Redakteur die Platzhalter {MODUL ABC} und {MODUL XY} eingefügt hat. Wer Wordpress kennt: Prinzip Shortcodes (Link will ich keinen setzten, da wir hier im Contendio Forum sind ;-).

Ich würde mich über technische Ideen, Lösungsansätze aber auch fertige Lösungen freuen.
Wie gesagt, bitte keine Grundsatzdiskussion über die Sinnhaftigkeit oder Vor- und Nachteile, dafür würde ich auf das hier verweisen: http://forum.contenido.org/viewtopic.php?f=78&t=35135, sondern Lösungsansätze für 1, 2 3.

Sollte ich mich etwas umständlich ausgedrückt haben und dadurch die Verständlichkeit nicht gegeben sein, einfach nachfragen :)

Faar
Beiträge: 1918
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Backend Sprachwechsel, benutzerdef. Felder, Platzhalter

Beitrag von Faar » Fr 16. Okt 2015, 12:58

Ich habe zwar verstanden was du möchtest, weil ich beides mache, Wordpress und Contenido,
aber ohne Werturteil abzugeben: Wordpress und Contenido sind zwei total und völlig verschiedene Systeme.
Wordpress ist ein Blog mit einer chronologischen Blog Engine (die Große Schleife) und Contenido ist ein abstrakt strukturiertes System.
Die herangehensweise der Datenbereitstellung und Ausgabe ist völlig unterschiedlich.
Darum wird man nie aus Contenido ein Wordpress machen können und aus Wordpress nie ein sturkturiertes CMS.
Und darum sehe ich die Probleme bei Deiner Anfrage.

1. Bei Wordpress sind die Daten bereits da, mit der Großen Schleife ausgelesen (geht bei chronologischer Abspeicherung sehr gut). Die "Sprachplugins" gehen manchmal soweit, dass sie im gleichen Textfeld die Inhalte nur mit Trennzeichen trennen, das heißt, ich habe einen Artikel mit allen Sprachen bereits da, angezeigt wird nur die aktuelle Sprache. Das ist eine Krücke, aber für Wordpress reicht es auch.
Bei Contenido geht das nicht so, dort wird nach Mandanten und Sprachen unterschieden. Dort hast du sinnvollerweise keine Inhalte andere Mandanten und anderer Sprachen. Sonst ginge das mit der Rechteverwaltung schon nicht.
Bei Contenido kannst du einem Redakteur genau eine Sprache in einem Mandanten zuweisen und dann kann er genau nur das bearbeiten, was ihm ein Admin oder Chefredakteur synchronsiert hat.
Wordpress und Contenido sind hier völlig verschiedene Welten in der Architektur.
Es ist gar nicht gewollt, dass ein Redakteur einfach umswitchen kann und bei Wordpress gibt es schon gar keinen Ansatz in der Architektur dafür.
Aber vielleicht hat 4fb noch was im Körbchen.

2. Dafür sollte es mehrere Wege geben, denn der Artikel bei Contenido wird von Haus aus aus Modulen zusammengestellt.
Man könnte sogar die Felder in den Artikel-Eigenschaften dafür verwenden (z.B. Summary/Zusammenfassung), wenn man Separatoren benützt, sind viele Begriffe alleine in diesem Feld möglich.
Irgendein Modul oder Plugin muss das dann natürlich auslesen.

3. Bei Wordpress kann man die Ausgabe mittels Funktion oder Plugin filtern und diese Platzhalter durch eigene Funktionen ersetzen.
Bei Contenido sind dafür tatsächlich die Templates (Vorlagen) gedacht. Der Redaktuer müsste dann die Rechte für die komplette Template-Bearbeitung besitzen.
Es gibt aber auch die Möglichkeit (zumindest bei 4.8 ging das noch), dass man für den TinyMCE eigene HTML-Templates bereitstellt, die im Menü des Editors dann auswählbar sind.
Ebenso soll man auch komplexere Dinge mit diesem Editor einfügen können, wobei das nicht so wie mit dem Modulen funktionieren wird.
Man müsste sich wohl auf Javascript Programme beschränken.

Sagen wir mal so: Wenn man eine nette jQuery-Funktion haben will, braucht man nur das jQuery in die Seite einbinden und das HTML dazu könnte über diese Editor-Templates eingefügt werden.
Abstrakt gedacht wäre es mit einer Galerie dann so, dass ein Galerie-Modul im Template bereitgestellt wird, das prüft, ob es einen bestimmten HTML-Code in der Seite gibt.
Falls ja, wird an dieser Stelle dynamisch die Galerie ausgegeben.
Einfache Galerien (reines Lightbox) haben alle Bilder bereits auf der Seite und holen das nicht aus der Datenbank. So funktionieren auch viele Single-Pages (One-Pager).
Der Redakteur müsste dann lediglich den Rahmen bestimmen und die Bilder dort hinein setzen. Der Rest macht das Script-Programm.
Aber das wird hakelig. :?

Die Crux an der Sache ist, bei Contenido wird der Modulcode mit in den PHP Seitencode eingebaut.
Da dynamisch bei der Seitenausgabe etwas hinzu zu fügen, geht dann eigentlich nur noch mittels Javascript.
In wie weit die Chains auf die Ausgabe Zugriff haben, weiß ich nicht, da müsste Oldperl sich mal melden :)
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

DiMiZu
Beiträge: 68
Registriert: Sa 8. Okt 2005, 12:49
Kontaktdaten:

Re: Backend Sprachwechsel, benutzerdef. Felder, Platzhalter

Beitrag von DiMiZu » Fr 16. Okt 2015, 14:28

Hallo Faar,
danke für deine Antwort.

Ja du hast ganz Recht, Wordpress und Contenido sind grundverschieden. Ich kenne auch beide und war mir auch bei der Anfrage bewusst, dass der Vergleich nicht gut ist. Nur hatte ich die Befürchtung, dass man mich sonst nicht richtig versteht ;-) Meine Wünsche nach Nachbau einiger Wordpressfeatures rühren nicht daher, dass ich Wordpress nachbauen möchte, sondern einfach darin, dass ich von Redakteuren entsprechende Anfragen bekomme. Nicht weil diese Redakteure Wordpress kennen und es weil sie es wie in Wordpress haben möchten, nein diese Redakteure wünschen nur die angeführten 3 Features. Den Vergleich mit Wordpress habe nur ich gezogen um meine Ausführungen besser verständlich machen zu können. Da ist mir Wordpress durch den Kopf geschossen, da geht das und das kennt fast jeder :-)

Zu 1.
Ich kann deinen Ausführungen „kannst du einem Redakteur genau eine Sprache in einem Mandanten, „“Es ist gar nicht gewollt, dass ein Redakteur einfach umswitchen kann“ total folgen und ich finde sie auch sinnvoll. Trotzdem habe ich solche Anfragen von Redakteuren die in unseren Breiten immer mindestens 2 Sprachen behandeln müssen (Zweisprachigkeit). Es wäre in Contenido einfach toll (ohne in die Architektur eingreifen zu müssen), dass man mit einem einfachen Klick in die Kategorie der anderen Sprache springen könnte ohne mühselig zuerst Sprache zu wechseln, Frameset lädt neu, sich links durch das Frameset klicken zu müssen bis man in der Kategorie des betreffenden Artikels ist. Bei uns kommt es einfach oft vor dass in einem Artikel eine Kleinigkeit geändert werden muss und das in allen Sprachen.

In Wordpress direkt geht das natürlich auch nicht, da Wordpress schlicht und einfach nicht mehrsprachig angelegt ist. Aber das tolle Plugin „Polylang“ geht so vor, dass für jede zusätzliche Sprache ein neuer Artikel angelegt wird (also nichts im gleichen Textfeld, wie manche andere Plugins) und die Artikel verlinkt werden. Damit kann man echt komfortabel im „DE Artikel“ einen Satz ändern und dann direkt aus diesem Artikel heraus in den entsprechenden Artikel in die andere Sprache rüber klicken. Architektur und gewollt hin oder her, CMS schlechter oder besser, ist einfach eine tolle Möglichkeit für Redakteure die dauernd mehrsprachig die Inhalte pflegen müssen.

In Contenido wäre es toll wenn beim Wechsel der Sprache im Backend ….

STOPP, ICH GLAUBE ES NICHT, DASS ICH DAS ÜBERSEHEN HABE!

Während des Schreibens teste ich gerade eine lokale Contenido 4.9.8 Installation. Das geht doch! Ich bin im DE Artikel, wechsle rechts oben über das Dropdown die Sprache und bin im entsprechenden EN Artikel. Mein Gott, seit wann gibt es diese Möglichkeit, die ich bis heute übersehen habe!

Für mich ist somit das Problem gelöst! Danke dir. Durch deine Antwort habe ich zufälligerweise in der neuen Testinstallation hin und her geschaltet!

Zu 2.
Ja die Felder in den Artikeleigenschaften habe ich auch schon mal missbraucht. Ist auch eine Möglichkeit. Ist halt nicht ganz so schön x Felder in ein Feld zu codieren und für den Redakteur in der Handhabung eine Katastrophe.

Dann bleibe ich lieber bei meiner Variante pro key/value Paar ein Modul anzulegen. Damit kann man nämlich recht gut dem Redakteur im Backend eine Beschreibung mitgeben, wie er das Feld zu benutzen hat.

Wollte mich nur mal umhören ob es dafür bereits ausgereifte Lösungen im Umlauf gibt…

Zu 3.
Hmmm klingt irgendwie etwas kompliziert und etwas zu unflexibel, da ich x-beliebige Modulfunktionalität drin haben möchte. Die Möglichkeit über den Tinymce HTML-Vorlagen kenne ich, da ich ihn auch anderweitig nutze. Diese Idee wird nur für spezifische Module, vielleicht eine Bildergalerie funktionieren. Bei komplexen Artikellisten wird es schwierig werden.

Ich hätte mir sowas gedacht:
Das Template/Vorlage enthält ein Modul für den HTML Content, in dem der Redakteure Platzhalter einsetzt. Das Template/Vorlage enthält aber auch untereinander alle Module die genutzt werden sollen. Diese geben aber nichts aus, sondern speichern die Ausgabe in einer Variablen ab. Z.B. speichert Modul XY die Ausgabe in VariableXY.

Das Modul für den HTML Content schaut ob im Inhalt des Content Typs CMS_HTML ein PlatzhalterXY vorhanden ist, wenn ja ersetzt es ihn mit Inhalt VariableXY.

Das Ganze wird aber nicht funktionieren, wegen des Caching System von Contenido. Da müsste man irgendwie, dazwischen funken können.

Antworten