Ergebnis 1 bis 11 von 11

Thema: Artikel dynamisch über ein Modul ausgeben (multidomain)

  1. #1
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard Artikel dynamisch über ein Modul ausgeben (multidomain)

    Hallo zusammen

    Ich habe eine Conto-Installation, in der mehrere Internetseiten verwaltet werden (multidomain), die alle folgendes Grundlayout haben:
    https://codyhouse.co/gem/sliding-panels-template/

    Pro Startpunkt habe ich jeweils eine Seite mit 3 Artikeln definiert (ich verwende nur 3 panels).
    Die Artikel (panels) binde ich über inserttags in ein Modul und von dort ins Seitenlayout ein.

    Für meinen Fall wäre nun eleganter, wenn ich dynamisch beispielsweise den ersten Artikel zur aufgerufenen Seite in das Modul einbinden könnte. So könnte ich immer dasselbe Modul und Layout für alle Seiten verwenden. Hat jemand eine Idee, wie das funktionieren könnte?
    Hoffe mein Anliegen ist verständlich

    Danke für euere Anregungen!

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

    Standard

    Deinen Aufbau verstehe ich noch nicht so ganz.

    Aber für die Panel Struktur selbst könntest du dir ja ein Template schreiben, wo du dir per \ArticleModel alle Artikel der aktuellen Page holst und dementsprechend ausgeben lässt.

  3. #3
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Genau das wäre der gewünschte Ansatz. Nur weiß ich leider nicht wie das geht. Hat jemand so etwas schon mal benötigt und ein entsprechendes Codebeispiel?

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

    Standard

    Eigentlich reicht es doch, wenn du die 3 Artikel als Teaser anzeigen lässt und dann einfach ein eigenes mod_article_teaser Template machst, wo du die Ausgabe so wie du brauchst programmierst (inkl. dem Detailinhalt).

  5. #5
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Wäre auch ein Ansatz und sicherlich der elegantere Weg. Werde ich testen. Danke für den Hinweis.

  6. #6
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Habe beim mod_article_teaser die tempate-variablen anzeigen lassen. Da sehe ich aber keine Möglichkeit direkt den gesamten Ariktel auszugeben

  7. #7
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Zum besseren Verständnis:

    Momentan habe ich zwei html_module, die ich dann ins Seitenlayout einbinde:

    HTML-Code:
    <ul class="cd-projects-previews">
    			<li>
    				<a href="#0">
    					<div class="cd-project-title">
    						<h2>{{article_title::7}}</h2>
    						{{article_teaser::7}}
    					</div>
    				</a>
    			</li>
    
    			<li>
    				<a href="#0">
    					<div class="cd-project-title">
    						<h2>{{article_title::6}}</h2>
    						{{article_teaser::6}}
    					</div>
    				</a>
    			</li>
    			
    			<li>
    				<a href="#0">
    					<div class="cd-project-title">
    						<h2>{{article_title::8}}</h2>
    						{{article_teaser::8}}
    					</div>
    				</a>
    			</li>
    			
    			
    		</ul> <!-- .cd-projects-previews -->
    HTML-Code:
    <ul class="cd-projects">
    			<li>
    				<div class="preview-image">
    					<div class="cd-project-title">
    						<h2>{{article_title::7}}</h2>
    						{{article_teaser::7}}
    					</div> 
    				</div>
    
    				<div class="cd-project-info">
    					{{insert_article::7}}
    				</div> <!-- .cd-project-info -->
    			</li>
    
    			<li>
    				<div class="preview-image">
    					<div class="cd-project-title">
    						<h2>{{article_title::6}}</h2>
    						{{article_teaser::6}}
    					</div> 
    				</div>
    
    				<div class="cd-project-info lsa-haupttext">
    					{{insert_article::6}}
    				</div> <!-- .cd-project-info -->
    			</li>
    
    			<li>
    				<div class="preview-image">
    					<div class="cd-project-title">
    						<h2>{{article_title::8}}</h2>
    						{{article_teaser::8}}
    					</div> 
    				</div>
    
    				<div class="cd-project-info">
    					{{insert_article::8}}
    				</div> <!-- .cd-project-info -->
    			</li>
    
    			
    		</ul> <!-- .cd-projects -->

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

    Standard

    Warum eigentlich ins Seitenlayout? Du brauchst das ja immer nur jeweils auf einer Seite, oder nicht?

    Den Inhalt eines Artikels bekommst du mit

    PHP-Code:
    \Controller::getArticle(
    Hm, da aber der Detailinhalt von den Previews getrennt sein muss, ist es wohl doch nicht so einfach mit dem mod_article_teaser Template möglich. Du bräuchtest wohl einen viertel Artikel am Anfang, wo du ein eigenes Template einfügst, wo du die restlichen 3 Artikeln ausgibst (für die Preview Panels).

  9. #9
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Warum eigentlich ins Seitenlayout? Du brauchst das ja immer nur jeweils auf einer Seite, oder nicht?
    Ja, es wird nur für jeweils eine Seite benötigt. Aufgrund meiner bescheidenen Kenntnisse versuche ich aber möglichst ohne Anpassung von fe_page auszukommen.

    Zitat Zitat von Spooky Beitrag anzeigen
    Hm, da aber der Detailinhalt von den Previews getrennt sein muss, ist es wohl doch nicht so einfach mit dem mod_article_teaser Template möglich. Du bräuchtest wohl einen viertel Artikel am Anfang, wo du ein eigenes Template einfügst, wo du die restlichen 3 Artikeln ausgibst (für die Preview Panels).
    Genau das ist mein Problem. Habe auch schon versucht das template mod_article_list zu verwenden, aber da habe ich auch keinen Zugriff auf die Inhalte des Teasers. Die Detailinhalte kann ich wie üblich über den Artikel ausgeben lassen. Aber ich brauche ein zusätzliches template, wo ich die Inhalte des Teaser für die Preview-Panels ausgeben kann.
    Ansonsten lass ich es so wie es ist und ich gebe pro Seite die IDs der Artikel bei den Inserttags händisch ein. Nicht sehr elegant, aber es funktioniert zumidnest.

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

    Standard

    Zitat Zitat von Luminanz Beitrag anzeigen
    Ja, es wird nur für jeweils eine Seite benötigt. Aufgrund meiner bescheidenen Kenntnisse versuche ich aber möglichst ohne Anpassung von fe_page auszukommen.
    Ja, aber das hat ja an sich nichts mit der fe_page zu tun.

    Ich würde es so machen:

    Du legst dir ein neues Template namens mod_panel_teasers.html5 an, darin zB folgenden Code:

    PHP-Code:
    <?php 

    global $objPage
    $objArticles = \ArticleModel::findByPid($objPage->id);

    ?>

    <div class="cd-projects-container">

      <ul class="cd-projects-previews">
        <?php foreach ($objArticles as $objArticle): ?>
          <li>
            <a href="#0">
              <div class="cd-project-title">
                <h2><?= $objArticle->title ?></h2>
                <?= $objArticle->teaser ?>
              </div>
            </a>
          </li>
        <?php endforeach; ?>
      </ul>

      <ul class="cd-projects">
        <?php foreach ($objArticles as $objArticle): ?>
          <li>
            <div class="preview-image">
              <div class="cd-project-title">
                <h2><?= $objArticle->title ?></h2>
                <?= $objArticle->teaser ?>
              </div> 
            </div>
       
            <div class="cd-project-info">
              <?= \Controller::getArticle($objArticle->id?>
            </div>
          </li>
        <?php endforeach ?>
      </ul>

    </div>
    Du erzeugst nun ein neues Modul vom Typ HTML, gibst beim HTML-Code zB nur <!-- panels --> ein und wählst bei den Template Einstellungen das Template aus.

    Im Seitenlayout löschst du das "Artikel" Modul aus der Hauptspalte und fügst dieses Modul hinzu.

  11. #11
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Hallo Spooky

    Damit funktioniert es einwandfrei
    Alleine hätte ich das niemals hingekriegt, bin echt beeindruckt.

    Vielen herzlichen Dank für die Hilfe!!

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
  •