Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 46

Thema: Information zum autor??

  1. #1
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard Information zum autor??

    Hi,

    ich möchte gerne, dass im frontend in meinen nachrichten ein bild des jeweiligen autors und ein kurztext von ihm steht, wie kann ich das bewerkstelligen?

    LG & danke

  2. #2
    Contao-Nutzer Avatar von drefsa
    Registriert seit
    25.06.2009.
    Ort
    0°0'0''
    Beiträge
    186

    Standard

    Vorschlag: leg Dir einen Artikel mit den Informationen auf einer nicht veröffentlichten Seite an und arbeite in der NAchricht mit dem insert-tag {{insert_article::*}}. Mit einem eigenen HTML-Modul Modul ginge das auch ...
    Grüße
    drefsa

  3. #3
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Aber ich habe ja auch unterschiedliche autoren, wie soll der autor denn dann sein bild und text auswählen?

  4. #4
    Contao-Nutzer Avatar von drefsa
    Registriert seit
    25.06.2009.
    Ort
    0°0'0''
    Beiträge
    186

    Standard

    Unterschiedliche News-kanäle (und Templates?) und der Autor weiß welchen Artikel er einbinden soll. Die Newslist erfasst alle Kanäle ....
    Grüße
    drefsa

  5. #5
    Contao-Nutzer
    Registriert seit
    30.12.2010.
    Ort
    Paderborn
    Beiträge
    129

    Standard

    Ich wieß nicht ob das die selbe Idee wie von drefsa ist.

    1. Für jeden Autor ein eigenes News-Archiv anlegen mit einer eigenen News-Detailseite
    2. Auf der Detailseite die Infos zum Autor als Text-Inhaltselemte anlegen und halt ein News-Details-Modul
    3. In dem Modul Newsliste alle Archive einbinden.

  6. #6
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Naja es sind so ca 6 autoren, jeder schreibt seine eingene news in die unterschiedlichen newsarchieve.
    Eigentlich soll der autor, der nur recht wenig rechte besitzt seinen namen auswählen und das cms fügt automatisch den rest dazu.

  7. #7
    Contao-Nutzer
    Registriert seit
    30.12.2010.
    Ort
    Paderborn
    Beiträge
    129

    Standard

    Aber das CMS muss die Informationen ja eh irgendwo haben. Und mit meiner Variante wählt der Autor nur sein News-Archiv aus (per Rechteeinstellungen kann man ihn Ja auch darauf beschränken) und im News realer stehen dann seine Infos.

    Gesendet von meinem Xperia Z mit Tapatalk

  8. #8
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Ja klar, nur das problem ist, dass nicht jeder autor in nur ein newsarchiev schreibt sondern auch in mehrere.

  9. #9
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Du könntest eine Mini-Erweiterung schreiben (lassen) die der Benutzerverwaltung ein Feld für die Kurzbeschreibung und ein Bild-Auswahl Feld hinzufügt und in der DB speichert.
    Durch eine Template Anpassung oder eventuell den Gebrauch eines Hooks kannst du die neuen Felder dann ausgeben lassen.

    Gruß
    Nikolas

  10. #10
    Contao-Nutzer
    Registriert seit
    30.12.2010.
    Ort
    Paderborn
    Beiträge
    129

    Standard

    Zitat Zitat von fr3d83 Beitrag anzeigen
    Ja klar, nur das problem ist, dass nicht jeder autor in nur ein newsarchiev schreibt sondern auch in mehrere.
    Okay, das hatte ich nicht gesehen. Da ich nicht so ein Modul wie Rundinhio gesagt hat schreiben könnte würde ich dann wie folgt vorgehen:
    NewsarchivA unterteilen in
    - NewsarchivA_Autor1
    - NewsarchivA_Autor2
    - NewsarchivA_Autor3
    - NewsarchivA_Autor4
    - NewsarchivA_Autor5
    - NewsarchivA_Autor6
    In die Newsliste alle Archive einbinden
    Genauso mit den anderen Archiven verfahren und dann alle Archive von Autor1 auf die Detailseite von Autor1 usw. weiterleiten und da dann die INhaltselemente wie oben beschrieben einfügen.
    Per Rechteverwaltung dann die Archive passend für die Autoren freischalten. Das hat auch noch den Vorteil, dass ein Autor nicht an die News eines anderen Autors kann.

  11. #11
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Wie schnell brauchst du das denn? Und welche Contao Version setzt du ein?

    Gruß
    Nikolas

  12. #12
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Also momentan ist es nicht so dringend. Ich habe contao 2.11.

  13. #13
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Am kommenden Wochenende könnte ich mal kurz was machen wenn's dir bis dahin reicht.

    Gesendet von meinem PadFone 2 mit Tapatalk 2

  14. #14
    Contao-Fan
    Registriert seit
    13.12.2012.
    Beiträge
    621

    Standard

    Also das wäre echt der hammer.

  15. #15
    Contao-Nutzer
    Registriert seit
    18.07.2013.
    Beiträge
    2

    Standard

    Hallo Nikolas,

    bist du schon dazu gekommen, die Mini-Erweiterung zu schreiben? Denn genau diese Funktionen brauche ich auch, ebenfalls für Contao 2.11.

    Viele Grüße
    Sonja

  16. #16
    Contao-Fan Avatar von Nikolas
    Registriert seit
    22.08.2009.
    Ort
    Lehe
    Beiträge
    493
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Duni Beitrag anzeigen
    Hallo Nikolas,

    bist du schon dazu gekommen, die Mini-Erweiterung zu schreiben? Denn genau diese Funktionen brauche ich auch, ebenfalls für Contao 2.11.

    Viele Grüße
    Sonja
    Leider musste ich einige Dinge vorschieben aber im Laufe der nächsten Woche werde ich das definitiv schaffen.
    Tut mir leid für die Wartezeit.

    Gruß
    Nikolas

  17. #17
    Contao-Nutzer
    Registriert seit
    18.07.2013.
    Beiträge
    2

    Standard

    Zitat Zitat von Rundinhio Beitrag anzeigen
    Leider musste ich einige Dinge vorschieben aber im Laufe der nächsten Woche werde ich das definitiv schaffen.
    Tut mir leid für die Wartezeit.

    Gruß
    Nikolas
    Hallo Nikolas,

    ohne hier ungeduldig wirken zu wollen, aber... Gibt es hier schon etwas?

    Viele Grüße
    Sonja

  18. #18
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    https://contao.org/de/extension-list...000019.de.html

    Mit der Avatar-Erweiterung sollte es keine Probleme geben, sowohl für FE oder BE User.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  19. #19
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.300

    Standard

    Da habe ich auch nach einer passenden Lösung gesucht....leider bisher nur Workarounds. Vor allem würde ich gerne diese Autoreninfos in der seitlichen Spalte anzeigen. Das geht aber anscheinend nicht.

    Folgende Lösung via Template:
    Inhaltselemente mit den Autoreninfos in einer versteckten Struktur (z.B. "Zusatzinhalte") anlegen

    Template news_full.html5
    PHP-Code:
    <?php if ($this->author == "von Max Muster"): ?>
       {{insert_content::28}}
    <?php elseif ($this->author == "von Manu Muster"): ?>
       {{insert_content::29}}
    <?php else: ?>
       <?php echo $this->author?>
    <?php 
    endif; ?>
    Ist leider etwas hardcoded...aber bei einer überschaubaren Anzahl an Redakteuren (In meinem Beispiel 2) ist diese Abfrage OK.

    vg
    Geändert von Kahmoon (21.08.2015 um 13:06 Uhr)

  20. #20
    Contao-Nutzer Avatar von maipe
    Registriert seit
    10.07.2012.
    Ort
    München
    Beiträge
    201

    Standard

    Also diese Lösung (MacGyver?) funktioniert - doch für ein CMS in der Qualität von Contao doch eher fraglich. Da baue ich im Template also eine Datenbank ein. (?????) Dass da nicht schon lang was im Core passiert ist, wundert mich sehr. Die Anfragen sind ja schon seit Jahren da.

  21. #21
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also das eine Datenbank Abfrage gemacht werden muss wäre mir neu ;-)

    Ich habe das bei meinem Projekt wie folgt gelöst:

    PHP-Code:
    <?php echo $this->replaceInsertTags('{{custom::'.str_replace(" ","_",$this->author).'}}'); ?>
    Dazu müsst ihr noch die Erweiterung inserttags installieren und könnt komfortabel im Backend die Inserts pflegen.

  22. #22
    Contao-Nutzer Avatar von fooddesign
    Registriert seit
    01.04.2011.
    Ort
    Zürich, Schweiz
    Beiträge
    84

    Standard

    Zitat Zitat von Ainschy Beitrag anzeigen
    Also das eine Datenbank Abfrage gemacht werden muss wäre mir neu ;-)

    Ich habe das bei meinem Projekt wie folgt gelöst:

    PHP-Code:
    <?php echo $this->replaceInsertTags('{{custom::'.str_replace(" ","_",$this->author).'}}'); ?>
    Dazu müsst ihr noch die Erweiterung inserttags installieren und könnt komfortabel im Backend die Inserts pflegen.
    Wau das ist ja ein geiler Scriptschnipsel, besten Dank Anischy. Auch für die seitlichen Spalten kein Problem. Ich habe einfach ein news_nachrichtenleser_author erstellt der nur den Code von Ainschy enthält, dann ein neues Nachrichten Leser Modul mit dem erstellten Template, und das Modul dann in die Sidebar einbauen. Falls Kommentare aktiviert sind einfach mit .back, .ce_comments {display: none;} ausblenden.

  23. #23
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Bei mir gibt dieses Code snippet leider nichts aus.

    Wenn ich hingegeben {{custom::meinplatzhalter}} einfüge, wird der zuvor angelegte Platzhalter angezeigt.

    Aber ich stehe vor einem generellen Verständnisproblem:
    Man hat mehrere Autoren, wie muss man das ganze aufbauen um jedem Autor einen eigenen Text zuzuweisen?

    Dieser Text soll automatisch ausgegeben werden, je nachdem welcher Autor beim Nachrichtenbeitrag gewählt wird.
    Dass ich dieses snippet dann in das Template newsreader einfügen muss ist mir klar. Aber das ganze Prozedere "davor" verstehe ich nicht.
    Funktioniert diese Lösung überhaupt für meinen Anwendungsfall?

  24. #24
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von gm-team Beitrag anzeigen
    Bei mir gibt dieses Code snippet leider nichts aus.

    Wenn ich hingegeben {{custom::meinplatzhalter}} einfüge, wird der zuvor angelegte Platzhalter angezeigt.
    Dein "meinplatzhalter" muss der Name des Authors sein, "_Vorname_Nachname". Das Code-Schnipsel wandelt die Leerzeichen im Namen in Unterstriche um, damit dieser als Custom-Inserttag aufgerufen werden kann.
    Geändert von Ainschy (19.05.2017 um 11:44 Uhr)

  25. #25
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Vielen Dank für deine Hilfe.

    Ich habe folgendes im newsreader Template hinzugefügt:

    Code:
    <?php echo $this->replaceInsertTags('{{custom::'.str_replace(" ","_",$this->author).'}}'); ?>
    Und folgenden Platzhalter angelegt: Bezeichnung: _Max_Muster
    Dieser Platzhalter enthält spezifischen Content. Wird nicht limitiert, wird angewendet im FE und nicht zwischengespeichert.

    Weiters habe ich einen Benutzer "Max Muster" erstellt. Dieser Benutzer wird in einem Nachrichtenbeitrag als Autor ausgewählt.

    Das Ergebnis ist dass an der stelle mit dem code snippet nichts ausgegeben wird.

    Ich rätsle gerade an was es hier noch scheitert Hab jetzt auch noch testweise den Platzhalter umbenannt auf den Benutzernamen des Autors, hat ebenfalls nichts gebracht.
    Einen Hook oder so muss ich ja nicht mehr registrieren, das nimmt mir die Erweiterung ja ab, oder?

  26. #26
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard Fehlersuche

    An deiner Stelle würde ich nun verschiedenes testen.

    Wird der Author korrekt ausgegeben

    Code:
    <?php echo $this->author; ?>
    Wird der Custom Inserttag korrekt ausgegeben?

    Code:
    {{custom::_Vorname_Nachname}}
    Daten die an das Template übergeben werden können mittels

    Code:
    <?php echo $this->showTemplateVars(); ?>
    im Frontend ausgegeben werden.

    Ich hoffe du kommst deiner Fehleranalyse ein gutes Stück weiter.

  27. #27
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Danke, habe nun folgendes getestet:

    Code:
    <?php echo $this->author; ?>
    gibt aus: "von Max Muster" (also korrekt)

    Code:
    {{custom::_Max_Muster}}
    gibt aus: "Spezifischen Content den ich im Platzhalter definiert habe" (also auch korrekt)

    Code:
    <?php echo $this->showTemplateVars(); ?>
    Gibt sehr langen Code aus. In Zusammenhang mit "author" u.a. folgendes:

    Code:
    [author] => von Max Muster
    Code:
    [news_metaFields] => a:2:{i:0;s:4:"date";i:1;s:6:"author";}
    Code:
    [author] => 1
    Code:
    [author] => Array
                                            (
                                                [table] => tl_user
                                                [field] => id
                                                [type] => hasOne
                                                [load] => eager
                                            )
    Code:
    [author] => Contao\UserModel Object
                                            (
                                                [arrData:protected] => Array
                                                    (
                                                        [id] => 1
                                                        [tstamp] => 1494489262
                                                        [username] => maxmuster
                                                        [name] => Max Muster
    und viele weitere Zeilen...
    Da die ersten beiden Ausgaben ja so stimmen, frage ich mich an was es hier scheitert.
    Denn wenn beide stimmen müsste es doch eigentlich funktionieren

    Hab jetzt auch noch alle Caches usw geleert und geprüft ob die DB aktuell ist.
    Den Platzhalter hab ich zum testen auch mal als Max_Muster (also ohne dem ersten underscore - wozu wird der eig. benötigt?) benannt, ebenfalls keine Ausgabe.

    Edit:
    Habe mir den Kopf zerbrochen über die Logik des snippets, verstehe es jedoch noch nicht ganz.
    Code:
    <?php echo $this->replaceInsertTags('{{custom::'.str_replace(" ","_",$this->author).'}}'); ?>
    $this->replaceInsertTags stellt sicher dass man sein eigenes Inserttag verwenden kann.
    custom::'.str_replace(" ","_",$this->author verwandelt die Leerzeichen in underscores und greift auf den Namen des Autors zurück.

    Doch welche Logik ist dafür zuständig dass dem Autor das passende custom Inserttag mit dem gleichen Namen, nur eben mit underscores, zuweist?
    Passiert das hier bereits? Tut mir leid, habs mit PHP nicht so.
    Geändert von gm-team (20.05.2017 um 16:41 Uhr)

  28. #28
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Den Custom Insert Tag musst du ja selbst anlegen.

  29. #29
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von gm-team Beitrag anzeigen

    Code:
    <?php echo $this->author; ?>
    gibt aus: "von Max Muster" (also korrekt)

    Code:
    [author] => von Max Muster
    Dann ändere dein Custom Inserttag in "von_Max_Muster" ggf. musst du bei Mehrsprachigkeit weitere Inserttags anlegen.

    $this->replaceInserttag ersetzt den Inserttag in den entsprechenden Content. Damit wird sichergestellt, das der Inserttag im Template aufgelöst wird.

  30. #30
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Den Custom Insert Tag musst du ja selbst anlegen.
    Ja das habe ich schon verstanden Wie ich geschrieben hatte wird der mittels {{custom::_Max_Muster}} auch korrekt ausgegeben.

    Dann ändere dein Custom Inserttag in "von_Max_Muster" ggf. musst du bei Mehrsprachigkeit weitere Inserttags anlegen.
    DANKE hier lag der Hund begraben. D.h. von der Logik her bedeutet es:

    [author] => von Max Muster ersetze "von Max Muster" mit dem gleichnamigen custom Inserttag und wandle Leerzeichen in underscores um.

  31. #31
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von gm-team Beitrag anzeigen
    ... wie muss man das ganze aufbauen um jedem Autor einen eigenen Text zuzuweisen?
    Autoren sind Datensätze aus tl_user (Benutzer, BE-User). Du musst also in tl_user ein Feld hinzufügen tl_user.myDescription. Neue Felder anlegen findest du über Google, das ist nicht so schwer.

    Jetzt kannst du im BE einem User den Text in das neue Feld eintragen.

    Im Newstemplate kannst du es so holen. Zuerst holst du die ID des Autors (User in tl_user) über ein NewsModel, da die ID leider nicht in $this->arrData mit dabei ist, sondern nur ein über ein Sprachbaustein aufbereiteter Benutzer-Name. Die ID steht in tl_news.author.
    PHP-Code:
    $authorID = \NewsModel::findByPk($this->id)->author
    Jetzt kann man über die ID des Autors ein UserModel erstellen und damit sämtliche Daten (Felder aus tl_user) des Autors (Users) abgreifen.
    PHP-Code:
    $author = \UserModel::findByPk($authorID);

    dump($author->email);
    dump($author->username);
    dump($author->myDescription); 
    Geändert von Andreas (21.05.2017 um 22:26 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  32. #32
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Danke Andreas für deine ausführliche Anleitung. Ich habe es zwar bereits mit der Lösung "Platzhalter" geschafft, jedoch hat es mich dennoch interessiert wie das funktioniert.

    Habe mal nach folgender Anleitung versucht ein Feld zu erstellen: https://docs.contao.org/books/manual...nzufuegen.html
    Leider passiert beim aktualisieren der DB nichts.

    Habe eine Datei user_authordescription/dca/tl_user_authordescription.php ins Module-Verzeichnis abgelegt.
    Hier der Code:
    Code:
    <?php
    
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] = str_replace
    (
        'title',
    	'title,authordescription',
        $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    );
    
    
    $GLOBALS['TL_DCA']['tl_user']['fields']['authordescription'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_user']['authordescription'],
        'exclude'   => true,
        'inputType' => 'text',
        'eval'      => array('mandatory'=>true, 'rgxp'=>'digit', 'maxlength'=>8),
        'sql'       => "varchar(8) NOT NULL default ''"
    );
    
    ?>
    Ganz durchschaut habe ich den Abschnitt bei str_replace noch nicht, jedenfalls gibt es einen Fehler aus wenn ich weniger als 3 Argumente (?) übergebe.
    Hab dann noch die Systemwartung durchgeführt und den Autoload-Creator für das Modul aktiviert.
    Sprachdateien sowie Templates hab ich erstmal weggelassen, sind die zwingend erforderlich?


    Da die Ausgabe von Benutzerinformationen auch ohne dem neuen Feld funktioniert, habe ich auch noch folgenden Code ins newsreader Template eingefügt:
    Code:
    <?php
      $authorID = \NewsModel::findByPk($this->id)->author;
      $author = \UserModel::findByPk($authorID); 
    
      dump($author->email); 
      dump($author->username);
      
      ?>
    Gibt folgendes aus:
    string(12) "email@user01.com"
    string(5) "user01"

    Das funktioniert also soweit, nur dass es nicht nur rein den Inhalt ausgibt.

  33. #33
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    die Datei muss tl_user.php heißen
    Die Sprachdateien würde ich auch anlegen, sonst hast du nur Feldnamen in der Ansicht.
    Geändert von 07alex07 (21.05.2017 um 13:01 Uhr)

  34. #34
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Danke, damit konnte ich nun die DB aktualisieren.

    Man sieht nun auch die neue Spalte in der DB, jedoch noch kein neues Feld im Contao in den Benutzereinstellungen.

  35. #35
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Zitat Zitat von gm-team Beitrag anzeigen
    Danke, damit konnte ich nun die DB aktualisieren.

    Man sieht nun auch die neue Spalte in der DB, jedoch noch kein neues Feld im Contao in den Benutzereinstellungen.
    Das dürfte daran liegen, daß Du mit

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] = str_replace
    (
        
    'title',
        
    'title,authordescription',
        
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    ); 
    sagst: ersetze in $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] die Zeichenkette 'title' durch die Zeichenkette 'title,authordescription' und weise das Ergebnis $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] zu. Da in $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] title nicht vorkommt wird nichts gemacht. Das resultiert darin, daß authordescription nicht in der Palette (Liste der anzuzeigenden Felder) auftaucht und daher Dein Feld nicht angezeigt wird.
    Geändert von fiedsch (21.05.2017 um 17:20 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  36. #36
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Ok danke, das heißt erstens dass ich eine Zeichenkette ersetzen möchte und zweitens dass diese gar nicht existiert.

    Aber ich möchte ja eigentlich nichts ersetzen, sondern hinzufügen. Oder ist das ersetzen mehr als erweitern angedacht?
    Dann wäre das für mich logisch nachvollziehbar.

    So wie ich das verstehe lautet meine Palette im Backend "Name und E-Mail" und beinhaltet die Felder "Benutzername", "Name" und "E-Mail".
    Nach dieser Logik müsste ich diese 3 Felder um ein viertes erweitern. Stimmt das so?

    Außerdem müsste ich wissen wie die Palette und die Felder im System bezeichnet werden. Bei Rechtsklick auf untersuchen sehe ich eine ID="pal_name_legend"
    was ja schonmal theoretisch für Palette stehen könnte Weiters "ctrl_username", "ctrl_name" und "ctrl_email".

    Haken an der Sache ist nur, dass in dem Beispiel aus dem Manual "company" steht, was eine Spalte in der DB darstellt bzw. ein Feld im BE, jedoch keine Palette.
    D.h. ganz richtig kann meine bisherige Annahme also nicht sein.

    ich habe deshalb testhalber mal folgendes versucht - es taucht kein Feld auf:

    Code:
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] = str_replace
    (
        'name',
    	'name,authordescription',
        $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    );

  37. #37
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Zitat Zitat von gm-team Beitrag anzeigen
    Aber ich möchte ja eigentlich nichts ersetzen, sondern hinzufügen.
    Die PHP-Funktion heißt aber str_replace, also ersetzen. Vom Ergebnis her hängst Du aber natürlich an, wenn Du X durch X,Y ersetzt.

    So wie ich das verstehe lautet meine Palette im Backend "Name und E-Mail" und beinhaltet die Felder "Benutzername", "Name" und "E-Mail".
    Fie Palette ist das, was Du in der Datei system/modules/core/dca/tl_user.php unter

    PHP-Code:
    'palettes' => array
            (
    ...

    findest. Also der Bereich ''{name_legend},username,name,email;', aber eben nicht nur dieser. Was Du mittels str_replace() ersetzt hängt davon ab, wo Du Dein neues Feld einfügen möchtest. Das kann man also nicht pauchal sagen.


    Außerdem müsste ich wissen wie die Palette und die Felder im System bezeichnet werden.
    Dazu ist es m.E. am einfachsten, im Code nachzulesen. (Datei s.o.)

    Haken an der Sache ist nur, dass in dem Beispiel aus dem Manual "company" steht, was eine Spalte in der DB darstellt bzw. ein Feld im BE, jedoch keine Palette.
    D.h. ganz richtig kann meine bisherige Annahme also nicht sein.
    Deine Vorstellung von Palette ist wahrscheinlich nicht korrekt. Die Palette beschreibt das gesamte Backen-Formular. Ich nehme an, Du beziehst Dich auf einen Bereich davon.

    ich habe deshalb testhalber mal folgendes versucht - es taucht kein Feld auf:

    Code:
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] = str_replace
    (
        'name',
    	'name,authordescription',
        $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    );
    Das sollte eigentlich funktionieren. Du hast auch den Cache gelöscht? (System -> Systemwartung -> Internen Cache leeren).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  38. #38
    Contao-Fan
    Registriert seit
    01.11.2013.
    Beiträge
    652

    Standard

    Deine Vorstellung von Palette ist wahrscheinlich nicht korrekt. Die Palette beschreibt das gesamte Backen-Formular. Ich nehme an, Du beziehst Dich auf einen Bereich davon.
    Ja das hatte ich. Nun ist es mir klar, die Palette enthält einen oder mehrere Bereiche, getrennt durch Semikolon, welche jeweils ein oder mehrere Felder, getrennt durch Komma, enthalten.

    Die Systemwartung hatte ich durchgeführt, leider taucht noch nichts auf, weder beim bearbeiten eines bestehenden Benutzers noch beim neuanlegen.
    tl_user.php sieht nun so aus:

    Code:
    <?php
    
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default'] = str_replace
    (
        'name',
    	'name,authordescription',
        $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    );
    
    
    $GLOBALS['TL_DCA']['tl_user']['fields']['authordescription'] = array
    (
        'label'     => &$GLOBALS['TL_LANG']['tl_user']['authordescription'],
        'exclude'   => true,
        'inputType' => 'text',
        'eval'      => array('mandatory'=>true, 'rgxp'=>'digit', 'maxlength'=>8),
        'sql'       => "varchar(8) NOT NULL default ''"
    );
    
    ?>
    Die DB lässt sich natürlich nicht mehr aktualisieren, da der neue Eintrag ja schon drin ist. Kann es damit zusammenhängen?

  39. #39
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Ich nehme an (=ungetestet), daß Du spezifischer sein muss mit Deiner String-Ersetzung.

    In der tl_user.php von Contao steht

    PHP-Code:
    'default'                     => '{name_legend},username,name,email;{backend_legend:hide},language,uploader,showHelp,thumbnails,useRTE,useCE;{theme_legend:hide},backendTheme;{password_legend:hide},pwChange,password;{admin_legend},admin;{groups_legend},groups,inherit;{account_legend},disable,start,stop'
    d.h. "ersetze name durch name,userdescription macht daraus

    PHP-Code:
    'default'                     => '{name,userdescription_legend},username,userdescription,name,userdescription,email;{backend_legend:hide},language,uploader,showHelp,thumbnails,useRTE,useCE;{theme_legend:hide},backendTheme;{password_legend:hide},pwChange,password;{admin_legend},admin;{groups_legend},groups,inherit;{account_legend},disable,start,stop'
    (alle Vorkommen von name werden ersetzt). Das ist aber nicht das, was Du haben willst.

    PHP-Code:
    str_replace
    (
        
    ',name,',
        
    ',name,authordescription,',
        
    $GLOBALS['TL_DCA']['tl_user']['palettes']['default']
    ); 
    sollte passen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  40. #40
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    HTML Neues Feld in tl_user hinzufügen.

    Sorry, aber der Thread hier ist viel zu lang, für so eine einfache Aufgabe ein Feld hinzuzufügen. (Und PHP-Code hier im Forum bitte immer in den PHP-Wrapper setzen.)

    system/modules/z_my_fields/dca/tl_user.php:
    PHP-Code:
    <?php

    // Palettes
    $GLOBALS['TL_DCA']['tl_user']['palettes']['admin'] = str_replace(
      
    ',name,',
      
    ',name,authorDescription,',
      
    $GLOBALS['TL_DCA']['tl_user']['palettes']['admin']
    );

    // Fields
    $GLOBALS['TL_DCA']['tl_user']['fields']['authorDescription'] = array
    (
      
    'label'       => array('authorDescription Kurz''authorDescription Lang'),
      
    'exclude'     => true,
      
    'search'      => true,
      
    'inputType'   => 'textarea',
      
    'eval'        => array('mandatory'=>false'rte'=>'tinyMCE''helpwizard'=>true'tl_class'=>'clr'),
      
    'explanation' => 'insertTags',
      
    'sql'         => "mediumtext NULL"
    );
    Ich habe mal das Feld text von tl_content als Vorlage genommen. Hilfstexte erstmal hardcodiert.

    Grad in tl_user gibt es zufällig nicht nur die default-Palette.
    https://github.com/contao/core/blob/....php#L120-L130

    Ich weiß nicht, wofür die alle da sind.
    Die admin ist für BE-Benutzerverwaltung-Benutzer-Bearbeiten
    Die login ist für den Benutzerlink oben in der Kopfzeile.

    Wenn du es auf alle, oder mehrere aufsetzen willst, kannst du das so machen.
    PHP-Code:
    // Palettes
    /** all palettes */
    foreach($GLOBALS['TL_DCA']['tl_user']['palettes'] as $key => $value)
    {
      if(
    $key == '__selector__')
      {
        continue;
      }
      
    $GLOBALS['TL_DCA']['tl_user']['palettes'][$key] = str_replace(
        
    ',name,',
        
    ',name,authorDescription,',
        
    $GLOBALS['TL_DCA']['tl_user']['palettes'][$key]
      );

    Tipps:

    Wenn du nicht weißt wie der/die Palette-String/s ausehen. Kannst du nachsehen über eine Kopie von Template be_main.
    PHP-Code:
    <?php dump($GLOBALS['TL_DCA']['tl_user']['palettes']); ?>
    Schaue auch in die Dateien, welche im Core in den dca/ Ordnern liegen.

    Lese dich in die Referenzen ein https://docs.contao.org/books/api/dca/reference.html.

    Einen schnellen aber updatesicheren Vorabtest kannst du über die system/config/dcaconfig.php machen. Code einfach da rein. Anstatt system/modules/z_my_fields/dca/tl_user.php

    Die Hilfeseite war die richtige. Hier ist die aktuellste Version https://docs.contao.org/books/cookbo...om-fields.html.

    ctrl_username usw. war richtig (field username).
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •