Ergebnis 1 bis 13 von 13

Thema: Virtuelle Seitenstruktur für Module

  1. #1
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard Virtuelle Seitenstruktur für Module

    Ich bin gerade dabei ein Modul zu entwickeln, mit dem Projekte eines Kunden angezeigt werden sollen.
    Ansich also ein normales Modul.

    Jetzt ist aber der Wunsch, von überall innerhalb von Contao (auch innerhalb des Tiny) auf ein Spezielles Projekt zu verlinken.
    Da es ein Modul ist, gibt es aber keine wirklichen Contao Seiten, auf die verlinkt werden kann.

    Ich hab jetzt schon eine ganze weile darüber nachgedacht, und bin mir eigentlich fast sicher, das es möglich wäre eine Erweiterung zu entwickeln, die es anderen Erweiterungen ermöglicht, mit einem neuen Seiten-Typ (z.B. Modul-Seite) eben genau dieses nachzustellen.
    Im Grunde, hätten wir dann in tl_page einen Eintrag, der einen Alias hat, welcher aus dem Modul kommt. Der Inhalt der Seite, ist der selbe wie der des Parent (in welchem das eigentliche Frontend Modul sitzt).

    Kann man meine Idee verstehen? Wäre so etwas machbar?
    Ich kann mir eigentlich gut vorstellen, das es ein gern gesehenes Feature wäre....

    Grüße - Chris

  2. #2
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Hallo c.romeni,

    wie sieht denn die Modulstruktur aus? Wie rufst du die einzelnen Projekte auf? Ich nehme an, du hast ein Modul auf einer Seite platziert, was die einzelnen Projekte über GET-Parameter aufruft?

    lg zinky

  3. #3
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Genau...

    Gibt dafür wohl 2 Ansätze..

    1. Ansatz: Ein Modul als Liste/Leser
    Hat den Vorteil das es von der Ordnerstruktur her übersichtlicher ist
    Dazu zuerst die Projekt Übersicht (projekte.html) anlagen.
    Dann dort ein Modul platzieren, das sowohl Liste als auch Leser ist.

    2. Ansatz: Ein Modul als Liste, ein Modul als Leser
    Hierbei müssen 2 Seiten erstellt werden. projekte.html und projektdetails.html
    Auf dem einen Befindet sich die Liste, auf dem anderen der Leser.

    Ich finde Ansatz 1. eigentlich besser. Weil es eben die Seitenstruktur übersichtlicher macht (SEO-Sicht).

    Somit wären alle Projekte virtuelle Unterseiten von projekte.html

  4. #4
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Ok, es gäbe auch den Zwischenweg mit zwei Modulen auf einer Seite. So habe ich das mal für eine Publikationsverwaltung gelöst. Ein Listenmodul gibt die Liste aus, wenn keine Publikation per auto_item übergeben wurde; ein Detailmodul gibt nichts aus ohne auto_item, andernfalls die Detailinfos für die gewählte Publikation.

    Die Seite, die die Module beinhaltet, hat den Alias "publikationen", der Aufruf einer einzelnen Publikation erfolgt demnach über /publikationen/titel-der-publikation.html. Darauf kannst du natürlich auch problemlos aus ganz Contao heraus verlinken.

    Wenn du eingrenzen kannst, von welchen Stellen ausgehend auf die Projekte verlinkt werden sollen, kann man mit Sicherheit auch auf eine komfortablere Variante mit Selectmenü kommen.

    lg zinky

  5. #5
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Zitat Zitat von zinky Beitrag anzeigen
    Die Seite, die die Module beinhaltet, hat den Alias "publikationen", der Aufruf einer einzelnen Publikation erfolgt demnach über /publikationen/titel-der-publikation.html. Darauf kannst du natürlich auch problemlos aus ganz Contao heraus verlinken.

    Wenn du eingrenzen kannst, von welchen Stellen ausgehend auf die Projekte verlinkt werden sollen, kann man mit Sicherheit auch auf eine komfortablere Variante mit Selectmenü kommen.

    lg zinky
    Das ist richtig, ich kann darauf verlinken, indem ich den Pfad kopiere, und manuell einfüge.
    Ich hätte aber gerne die Möglichkeit das ganze im Tiny oder überall sonst aus dem Seitenwähler heraus zu machen:

    Screen-Shot-2014-12-15-at-10.53.27-2.png

    Und damit das funktioniert, müssen in tl_page Seiten angelegt werden. Aber eben keine "normalen" Contao Seiten, sondern ein neuer Seiten-Typ.

    Und die Frage ist für mich einfach: Wäre so etwas möglich?

    Dann brauche ich auch kein extra Modul, in dem ich dann ein select mit den Projekten habe um darauf zu verlinken.

  6. #6
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Dann schau mal, ob du hiermit weiter kommst:

    https://community.contao.org/de/show...z-B-Error-418)

  7. #7
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Ja, das könnte helfen.. Ich schau mir das mal an...

  8. #8
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Ich bin jetzt soweit, das ich ein Modul beim ausgeben der Seite über Contao direkt in eine section einfügen möchte.
    Hier mein Beispiel mit einem Hook:

    PHP-Code:
    class PageModulesPage extends \PageRegular{
      public function 
    onGeneratePage($objPage)     {
        
    $objPage->Template->main '<div class="mod_article first last block" id="projekte">{{insert_module::7}}</div>';
      }

    Das Funktioniert so jetzt leider nicht... Wenn ich die createTemplate Funktion aber kopiere, und nur diese Zeile ändere:

    PHP-Code:
    $this->Template->main '<div class="mod_article first last block" id="projekte">{{insert_module::7}}</div>'
    Dann funktioniert das.

    Jemand eine Idee wie ich das bewerkstelligen kann? Bräuchte es dafür nicht eigentlich einen neuen Hook?
    Oder gibt es die Möglichkeit zu sagen:
    Bitte nehm die Seite mit der ID x und generiere Sie mir hier drin noch einmal...?

  9. #9
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Du kannst im PHP-Script so keine Inserttags verwenden. Ich würde das Modul über new \FrontendModule laden.

  10. #10
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Zitat Zitat von zinky Beitrag anzeigen
    Du kannst im PHP-Script so keine Inserttags verwenden. Ich würde das Modul über new \FrontendModule laden.
    Doch, das funktioniert wunderbar..
    Nur muss ich eben die komplette Funktion hinzufügen und überschreiben:

    PHP-Code:
    protected function createTemplate($objPage$objLayout
    Und das will ich eigentlich nicht.

    Gibt es keine Möglichkeit zu sagen:
    Hol dir den Seiteninhalt von der Seite mit der ID 6 aus der Datenbank, und gebe es auf der Seite mit der ID43 aus.

  11. #11
    Contao-Nutzer
    Registriert seit
    07.12.2009.
    Beiträge
    151

    Standard

    Zitat Zitat von c.romeni Beitrag anzeigen
    Doch, das funktioniert wunderbar..
    Sorry, hast natürlich recht. Hatte replaceInsertTags() gerade an einer anderen Stelle verortet.

    Versuch mal hier:
    PHP-Code:
    class PageModulesPage extends \PageRegular{
      public function 
    onGeneratePage($objPage)     {
        
    $objPage->Template->main '<div class="mod_article first last block" id="projekte">{{insert_module::7}}</div>';
      }

    $objPage als Referenz zu übergeben? Momentan wird ja nichts zurück gegeben und $objPage nur innerhalb der Funktion geändert.
    Geändert von zinky (16.12.2014 um 09:42 Uhr) Grund: typo

  12. #12
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Zitat Zitat von zinky Beitrag anzeigen
    Sorry, hast natürlich recht. Hatte replaceInsertTags() gerade an einer anderen Stelle verortet.

    Versuch mal hier:
    PHP-Code:
    class PageModulesPage extends \PageRegular{
      public function 
    onGeneratePage($objPage)     {
        
    $objPage->Template->main '<div class="mod_article first last block" id="projekte">{{insert_module::7}}</div>';
      }

    $objPage als Referenz zu übergeben? Momentan wird ja nichts zurück gegeben und $objPage nur innerhalb der Funktion geändert.
    Leider selbst wenn ich \PageModel $objPage, \LayoutModel $objLayout, \PageRegular $objPageRegular übergebe, bekomme ich nur

    : Creating default object from empty value in system/modules/modulesPage/pages/PageModulesPage.php on line 31:
    $objPage->Template->main = '<div class="mod_article first last block" id="projekte">{{insert_module::7}}</div>';

    Und dazu kommt:
    Der "generatePage"-Hook wird vor der Erstellung des Seitenlayouts ausgeführt. Er übergibt das Seitenobjekt, das Layoutobjekt und eine Eigenreferenz als Argument und erwartet keinen Rückgabewert. Hinzugefügt in Version 2.8.RC1.

  13. #13
    Gesperrt
    Registriert seit
    20.10.2011.
    Beiträge
    163

    Standard

    Hat jemand noch eine Idee was ich machen könnte?
    Ich möchte im Grunde eine leere Seite anhand des Parent-Layouts erstellen, die in der Hauptspalte nur ein spezielles Modul hat.

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
  •