3-spaltiges Layot mit festen Blöcken (Containern)

Gesperrt
loccer
Beiträge: 5
Registriert: Sa 13. Feb 2010, 15:09
Kontaktdaten:

3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von loccer »

Hallo zusammen,

ich bin Neuling hier und habe eine Frage zum Layout.

Habe ein 3-spaltiges Layout mit Navigation (Links) Contentbereich (Mitte) und Adressbox, Info- und Newsbox (Rechts).
Das funktioniert auch einwandfrei - meine Frage ist nun folgende:

Wie kann ich es realisieren, das der Inhalt der rechten drei Boxen (die ich als Text-Container definiert habe) unabhängig von den Artikeln (Startseite etc.) und deren Inhalt für alle Artikel fest ist (also immer dargestellt wird), auch wenn ich in der Navigation die Kategorien oder Artikel im Frontend wechsele.

Der Inhalt der rechten Boxen soll aber hin und wieder auch verändert werden, unabhängig von den anderen Inhalten.
Bisher habe ich den Inhalt der Boxen in den Artikeln mit eingebunden, ist aber sehr umständlich wenn in den Boxen der Inhalt geändert wird das in alle Artikel zu übertragen.

Habe bisher keine Lösung im Forum gefunden vielleicht könnt ihr einem Contenido-Neuling etwas unterstützen.

Vielen Dank

loccer
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: 3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von Dodger77 »

So, erstmal willkommen im Contenido-Forum!

Ich habe das mal verschoben, da du ja eine Frage hast und keinen Tipp bzw. Trick.

Zum Thema: man könnte das z.B. sehr gut mit den in Contenido mitgelieferten Klassen Article bzw. ArticleCollection lösen, mit denen man ein entsprechendes Modul baut, z.B.:

Code: Alles auswählen

<?php
cInclude('classes', 'class.article.php');

$oArticleCollection = new ArticleCollection(array (
    "idcat" => 123, //hier die ID der Kategorie eingeben, in der die Artikel mit den Inhalten liegen
    "start" => false, //Startartikel nicht einschließen
    "client" => $client, //Mandanten-ID
    "lang" => $lang, //Sprach-ID
    "order" => "artsort", //sortieren nach dem Sortierschlüssel
    "direction" => "asc" //Sortierreihenfolge aufsteigend
));
 
while ($oArticle = $oArticleCollection->nextArticle()) {
    $sHeadline = $oArticle->getContent('htmlhead', 1); //CMS_HTMLHEAD[1]
    $sText = $oArticle->getContent('html', 1); //CMS_HTML[1]

    echo '<div class="block">
            <h3>' . $sHeadline . '</h3>
            <div class="text">' . $sText . '</div>
            </div>';
}
?>
Die Kategorie mit den Inhalten würde ich dann in einem extra Baum ablegen, der nicht in einer Navigation auftaucht. Darin müssen entsprechende Artikel angelegt werden (3 oder auch mehr), die nicht Startartikel sind und die entsprechenden CMS-Typen (hier im Beispiel CMS_HTMLHEAD[1] und CMS_HTML[1]) enthalten.

Das Modul dann noch in den Templates anlegen und fertig! In der Kategorie können dann die Artikel mit Sortierschlüsseln versehen werden, um die Reiehenfolge zu ändern. Außerdem kann man ohne Probleme auch später weitere Artikel anlegen, die dann zusätzlich Blöcke darstellen oder die alten können so zentral angepasst werden.


Gruß

Ingo
loccer
Beiträge: 5
Registriert: Sa 13. Feb 2010, 15:09
Kontaktdaten:

Re: 3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von loccer »

Hi Ingo,

erstmal vielen Dank für den Tipp, werde Dein Modul mit der ArticleCollection in den nächsten Tagen testen.
Bin z.Zt. im Karneval sehr eingespannt.

Melde mich dann nochmal und werde berichten, ob es gefunzt hat.

Vielen Dank.

Gruß
Silvio
loccer
Beiträge: 5
Registriert: Sa 13. Feb 2010, 15:09
Kontaktdaten:

Re: 3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von loccer »

Hi Ingo,

bin eben mal dazu gekommen Deinen Vorschlag zu testen, es klappt super. Vielen Dank nochmals für den Tipp.
Die Adressbox wird in allen Artikeln angezeigt. :D

Ein kleines Problemchen habe ich leider noch.

Ich habe die drei Artikel in einem extra Baum angelegt. Sobald ich aber einen Artikel (z.B. den Inhalt der Adressbox) editieren möchte erscheint folgende Fehlermeldung:

Parse error: syntax error, unexpected '<' in /......./contenido/includes/include.con_editcontent.php(638) : eval()'d code on line 238

Habe dem Artikel Adressbox ein separates Template zugewiesen in dem nur der Text der Adressbox editierbar ist. (aber auch schon mit den Standard-Template versucht).

Woran könnte das liegen.

Vielen Dank und Grüße

Silvio
loccer
Beiträge: 5
Registriert: Sa 13. Feb 2010, 15:09
Kontaktdaten:

Re: 3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von loccer »

Hi Ingo,

ich bin es nochmal, vielleicht hast Du ja noch einen Tipp für mich.
Habe die drei Artikel Adressbox, Info- und Newsbox im separaten Baum angelegt und sie jeweils in ein Modul (mit Deinem Beispielcode) eingebunden... das klappt super.
Habe auch jedem der drei Artikel ein spezielles Template zugeordnet um nur den Inhalt des betreffenden Artikels anzuzeigen und ggf. editieren zu können.

Wie kann ich es noch realisieren, dass ich die 3 Artikel unabhängig von allen anderen Artikeln editieren kann. Mir fehlt hier der Editor.

Hier mein Code:

Code: Alles auswählen

<?php
cInclude('classes', 'class.article.php');
//cInclude('classes', 'class.template.php');
/*
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}
$tpl->reset();
$tpl->set('s', 'text', "CMS_HTML[2]");
$tpl->generate('templates/text_html.html');
*/
// Artikellisten Optionen einstellen 

// Idcat ist ein MUSS feld, array("idcat"=>n); 

$articleListOptions = array(
  "idcat" => 87,          // Idcat (Muss angegeben werden) 

  "lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache

  "client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant

  "start" => false,        // kein Startartikel 

  "order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 

  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 

// Artikellisten Objekt erzeugen 

$articleList = new ArticleCollection($articleListOptions); 

// Artikelliste mit HTML1 ausgeben 

while ($article = $articleList->nextArticle()) 
{ 
    $html1 = $article->getContent('html', 2); 

    echo $html1 . ""; 
} 
?>
Wenn ich die Klasse Template mit einbinde sehe ich den Inhalt doppelt untereinander, kann diesen ändern, aber auch in allen anderen Artikeln wird mir der Editor angezeigt.
Es soll eigentlich nur der der spezielle Artikel (z.B. der der Adressbox) unabhängig von allen anderen geändert werden können.

Vielen Dank im voraus und viele Grüße

Silvio
loccer
Beiträge: 5
Registriert: Sa 13. Feb 2010, 15:09
Kontaktdaten:

Re: 3-spaltiges Layot mit festen Blöcken (Containern)

Beitrag von loccer »

Hi zusammen,

hab es nach viel Grübelei nun hinbekommen. Für die, die es interessiert:
Hier ein Beispiel für eine separate Adressbox auf der linken Seite, dessen Inhalt man unabhängig von allen anderen Artikeln ändern kann:

Modul Ausgabe:

Code: Alles auswählen

<?php
cInclude('classes', 'class.article.php');
cInclude('classes', 'class.template.php');
cInclude('classes', 'class.cat.php');
cInclude('classes', 'class.art.php');

// Auslesen der gewählten Kategorie
$myCat = new Cat();
$myCatName = $myCat -> getCatName($idcat, $lang);

// Auslesen des ausgewählten Artikels
$myArt = new Art();
$myArtName = $myArt -> getArtName($idart, $lang);

//Wenn Kategoriename und Artikelname gleich sind
if (($myCatName == "Info-Adressbox") && ($myArtName == "Info-Adressbox")) //(Muss angegeben werden!!!) 
{
// dann Editor anzeigen zum Ändern des Inhalts
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}
$tpl->reset();
$tpl->set('s', 'text', "CMS_HTML[2]"); //CMS_HTML (Muss angegeben werden!!!) 
$tpl->generate('templates/text_html.html');
} 

// sonst nur Inhalt des Artikels (ohne Editor) anzeigen
else
{
// Artikellisten Optionen einstellen 

// Idcat ist ein MUSS feld, array("idcat"=>n); 

$articleListOptions = array(
  "idcat" => 87,          // Idcat (Muss angegeben werden!!!) 

  "lang"  => $lang,       // Sprach id (optional), standard ist die aktive Sprache

  "client"=> $client,     // Mandant id (optional), standard ist der aktive Mandant

  "start" => false,        // kein Startartikel 

  "order" => "created",   // Feldname nach dem sortier wird, siehe tabelle 'con_art_lang' 

  "direction" => "asc"); // Ab- oder Aufsteigende sortierung ('asc', oder 'desc') 



// Artikellisten Objekt erzeugen 

$articleList = new ArticleCollection($articleListOptions); 

// Artikelliste mit Head1, Head2 und HTML1 ausgeben 

    while ($article = $articleList->nextArticle()) 
    { 
//    $head1 = $article->getContent('htmlhead', 1); 
//    $head2 = $article->getContent('htmlhead', 2); 
    $html1 = $article->getContent('html', 2); //CMS_HTML (Muss angegeben werden!!!) 

    
/*
    echo $head1 . "
"; 

    echo $head2 . "
"; 
*/
    echo $html1 . "
    "; 
    }

} 
?>
Gruß Silvio
Gesperrt