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
3-spaltiges Layot mit festen Blöcken (Containern)
-
- Beiträge: 3626
- Registriert: Di 12. Okt 2004, 20:00
- Wohnort: Voerde (Niederrhein)
- Kontaktdaten:
Re: 3-spaltiges Layot mit festen Blöcken (Containern)
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.:
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
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>';
}
?>
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
Re: 3-spaltiges Layot mit festen Blöcken (Containern)
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
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
Re: 3-spaltiges Layot mit festen Blöcken (Containern)
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.
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
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.

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
Re: 3-spaltiges Layot mit festen Blöcken (Containern)
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:
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
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 . "";
}
?>
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
Re: 3-spaltiges Layot mit festen Blöcken (Containern)
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:
Gruß Silvio
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 . "
";
}
}
?>