Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: Contao Modul ähnlich Artikel

  1. #1
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Frage Contao Modul ähnlich Artikel

    Hallo liebe Community,

    gerne würde ich ein Modul erstellen, welches Personen verwaltet.
    Die Personen können in den Einstellungen gewisse Daten zugewiesen bekommen (Name, Tel., Adresse usw.). Das funktioniert auch wunderbar.

    Jetzt soll jede Person auch noch die Möglichkeit haben Inhaltselemente zu erhalten, welche auf einer Detailseite der Person ausgegeben werden. Im Endeffekt verhält sich das ein wenig wie Artikelteaser und Artikel.

    Dazu habe ich im DCA das im Bereich Config stehen:

    PHP-Code:
    // Config
        
    'config' => array
        (
            
    'dataContainer'               => 'Table',
            
    'ctable'                      => array('tl_content'),
            
    'switchToEdit'                => true,
            
    'enableVersioning'            => true,
            
    'sql' => array 
            (
                
    'keys' => array 
                (
                    
    'id' => 'primary'
                
    )
            ),
        ), 
    Auch wird im DCA ein Feld für den Alias erzeugt, welcher später die entsprechende URL-Erweiterung darstellen soll:

    PHP-Code:
            'alias' => array
            (
                
    'sql'                     => "varchar(128) NULL",
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_personen_person']['alias'],
                
    'explanation'             => &$GLOBALS['TL_LANG']['tl_personen_person']['alias'],
                
    'exclude'                 => false,
                
    'inputType'               => 'text',
                
    'eval'                    => array('rgxp'=>'alnum''doNotCopy'=>true'spaceToUnderscore'=>true'maxlength'=>128'tl_class'=>'w50'),
                
    'save_callback' => array
                (
                    array(
    'tl_personen_person''generateAlias')
                )
            ), 
    Soweit alles gut und alles klar und funktionsfähig.

    So jetzt aber die Ausgabe und Datenaufbereitung für die Templates.

    Das Standardtemplate
    PHP-Code:
    protected $strTemplate 'personenkreis_liste'
    gibt mir die Personen alle als Liste aus. Funktioniert soweit:

    Für das Standardtemplate gehe ich her und lade im Modul meine Daten für das Template
    PHP-Code:
    $this->personenkreis = \Personen\PersonenkreisModel::findByPk($this->personen_personenkreis);
    $this->Template->personenkreis $this->personenkreis
    Ich hätte gerne noch ein Detailtemplate
    PHP-Code:
    protected $strDetailTemplate 'personenkreis_detail'
    welches dann für die Detailausgabe zuständig ist.

    Fragen:
    - Wie mache ich das für das Detailtemplate welches ja dann alle möglichen Inhaltselementtypen (Text, Überschrift, Galerie, Downloads ...) haben kann?
    - Wie wird der Detaillink generiert aus dem Alias?
    - Wie sieht das Template zur Darstellung aller möglichen Inhaltselementtypen aus?

    Vielleicht ist mein Ansatz auch vollkommen falsch.
    Ich habe mir dazu natürlich das Modul ModuleArticle.php aus dem Core angeschaut. Aber vielleicht kann das jemand bitte näher erläutern was ich jetzt noch machen müsste?


    Viele Grüße

  2. #2
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Zitat Zitat von ttcdummy Beitrag anzeigen
    Fragen:
    - Wie mache ich das für das Detailtemplate welches ja dann alle möglichen Inhaltselementtypen (Text, Überschrift, Galerie, Downloads ...) haben kann?
    Dafür dürfte dir auch das Artikelmodul weiterhelfen.

    Zitat Zitat von ttcdummy Beitrag anzeigen
    - Wie wird der Detaillink generiert aus dem Alias?
    Das kommt darauf an, wie du die Links handhaben möchtest. Da du ja ohnehin das Detailmodul schreiben musst, bist du da recht frei.

    Zitat Zitat von ttcdummy Beitrag anzeigen
    - Wie sieht das Template zur Darstellung aller möglichen Inhaltselementtypen aus?
    Jedes Inhaltselement hat sein eigenes Template. Du kompilierst jedes Inhaltselement einzeln, sammelst das daraus generierte HTML aller Inhaltselemente und gibst das ganze einfach aus. Im Wesentlichen würde das Detailtemplate dann nur wie folgt aussehen, wenn du vorgehst wie im obigen Link:

    PHP-Code:
    [...]
    <?= $this->elements ?>
    [...]
    Grüße
    Benzin

  3. #3
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Hallo und danke erst einmal für den Beitrag!

    Also ich komme nicht wirklich weiter und wende mich daher noch einmal an euch.

    Ich habe nun zwei Module.
    ModulePersonenkreisListe.php (soll alle Personen zusammenstellen und an das Template übergeben)
    ModulePersonenkreisDetail.php (soll die Details der Person zusammenstellen und an das Template übergeben)

    In der Datenbank hat jede Person einen Alias. Diesen würde ich gerne als Detaillink-URL verwenden. Wie wird die Detailsseite dem System klar und wie kann ich sie aufrufen?

    Nun zu meiner Frage:
    Wie erstelle ich diesen Link automatisch anhand des Alias?
    Wie würde ich die Detailseiten generell aufrufen, wenn ich den Link ohne Ihn jetzt großartig anzupassen? Irgendwo muss die Seite ja jetzt schon existieren?

    Vielleicht habe ich aber auch schon vorher etwas übersehen.

    Grüße

  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.788

    Standard

    Hilft dieser Beitrag weiter? Ansonsten hast Du ja noch die Möglichkeit Deine Parameter selbst anzuhängen wenn Du keine SEO-freundlichere Variante benötigst.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Zitat Zitat von ttcdummy Beitrag anzeigen
    Wie erstelle ich diesen Link automatisch anhand des Alias?
    Wie würde ich die Detailseiten generell aufrufen, wenn ich den Link ohne Ihn jetzt großartig anzupassen? Irgendwo muss die Seite ja jetzt schon existieren?
    Z.B., indem du dein Modul "ModulePersonenkreisDetail" auf einer Seite "person" einbindest. Im Modul kannst du dann z.B. einen Get-Parameter "alias" auswerten oder mit dem "auto_item" arbeiten. Deine URL würde dann entweder /person?alias=vorname-nachname lauten, oder person/vorname-nachname.

    Den Alias kannst du in deinem Detail-Modul auslesen über:
    PHP-Code:
    $alias Input::get('alias');
    // oder je nachdem 
    $alias Input::get('auto_item'); 
    Die URL generierst du dann in etwa so:
    PHP-Code:
    <?= Controller::generateFrontendUrl($objPageWithDetailsModule->row(), '/' $objPerson->alias?>

    LG benzin

    Edit: Im Übrigen gibt es auch noch diese wundervolle Erweiterung, die allerdings diese Detailfunktionalität von Haus aus nicht mitbringt. Wir hatten da aber mal etwas entwickelt, was wir auch mal Pull Request an mindbird stellen könnten

  6. #6
    Contao-Nutzer
    Registriert seit
    13.06.2013.
    Beiträge
    99

    Standard

    Hi, schau dir mal die Erweiterung "F-Module" an.
    Die Erweiterung adaptiert und erweitertet die Funktionen von "News" womit du so ziemlich alles machen kannst.
    Nutze diese Erweiterung seit einiger Zeit, und bin mehr als zufrieden.

  7. #7
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Nicolas Beitrag anzeigen
    Hi, schau dir mal die Erweiterung "F-Module" an.
    Ja schön und gut, ich will es aber doch verstehen und nicht eine Erweiterung nutzen die von sich sagt: "Mit dem F Modul kann jeder ohne Programmierkenntnisse Backend Module für Contao erstellen."

    Also zurück zu den sehr guten Hinweisen von benzin.

    Die URL bekomme ich jetzt zusammen gesetzt.
    Das funktioniert auch wenn ich z. B. &alias=vorname-nachname verwende.

    Jetzt interessiert es mich aber doch sehr wie ich das Auto-Item nutzen kann.
    - im Backend in den Einstellungen ist es aktiviert.
    - ich verwende jetzt:
    PHP-Code:
    $intId = \Contao\Input::get('auto_item'); 
    Leider bekomme ich nur eine leere Seite wenn ich das so mache. Immerhin keinen 404er ;-)

    Was mache ich noch falsch?

    Grüße

  8. #8
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Ich habe eine Ahnung warum nicht ;-)

    Kann ich aus dem:
    PHP-Code:
    $intId = \Contao\Input::get('auto_item'); 
    irgendwie wieder die ID dessen ableiten?
    Geändert von ttcdummy (08.11.2016 um 10:53 Uhr)

  9. #9
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Hast du das auto_item auch registriert, wie z.B. in der Kalender- oder News-Erweiterung?

  10. #10
    Contao-Nutzer Avatar von ttcdummy
    Registriert seit
    02.03.2014.
    Beiträge
    213
    User beschenken
    Wunschliste

    Standard

    Wahrscheinlich nicht. Wie würde das gehen?
    Ich habe das auto_item noch nie genutzt. :-/

  11. #11
    Contao-Nutzer Avatar von benzin
    Registriert seit
    06.02.2016.
    Ort
    Essen/Düsseldorf, NRW
    Beiträge
    84
    Partner-ID
    11060

    Standard

    Zitat Zitat von ttcdummy Beitrag anzeigen
    Wahrscheinlich nicht. Wie würde das gehen?
    Ich habe das auto_item noch nie genutzt. :-/
    Macht ja nix, deswegen schrieb ich ja, dass das Event- und das News-Modul es nutzen

    Siehe system/modules/core/config/config.php, suche nach TL_AUTO_ITEM
    Und dann z.B. das Modul NewsReader.

    Grüße
    benzin

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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