Hallo @all
Erst mal ein großes Dickes Lob HerrB für diese Artikelliste (ich will abba kein Kind
)
Ich habe mich am Wochenende mal daran gemacht das Modul mit Templates umzusetzen. Weiterhin habe ich die Ausgabe davon abhängig gemacht, ob XHTML beim Mandanten eingeschaltet ist oder nicht.
Ich habe für die Validierung alle & in den Links durch & ersetzt.
Für den Page-Selector habe ich nur das 3. Beispiel bearbeitet.
Habe es in einer Seite mit HTML 4.01 Transitional getestet, ohne Errors. Vielleicht kann es ja mal jemand in eine XHTML Seite einbauen zum testen.
So, hier nun die Änderungen und Templates:
Zeile 191, & ersetzt
Code: Alles auswählen
$aData[$i]["Link"] = $sess->url("front_content.php?idcat=".$db2->f("idcat")."&idart=".$db2->f("id"));;
Code ersetzen ab Kommentar 'Output data'
Code: Alles auswählen
# Output data
# Every output manipulation should be done here...
#
# Base information:
# $aSettings["Elements"]: Number of expected, additional elements from each article
# $aSettings["ArticlePerPage"]: Number of articles per page (0: show all)
# $aSettings["k".$i]["ElementType"]: Per Element: Type of Element: Text, Image or ExtractedImage
# $aSettings["k".$i]["ElementWidth"]: Per Element: Text length or image width (-> recycling ...)
# $aSettings["k".$i]["ElementHeight"]: Per Element: Image width
#
# Per article:
# $aValue["Headline"]: Content of article element specified as containing the headline information
# $aValue["Link"]: Relative link to get to the listed article
# $aValue["LastModified"]: Last modified date of the article
# $aValue["Created"]: Created date of the article
# $aValue["Published"]: Published date of the article
# $aValue["Category"]: Category name
#
# Per article additional element:
# $aValue["i".$i]["Value"]: Text (only for text elements, otherwise "")
# $aValue["i".$i]["WebPath"]: HTTP... path to image
# $aValue["i".$i]["ServerPath"]: /server/... path to image
# $aValue["i".$i]["Width"]: >Original< image width
# $aValue["i".$i]["Height"]: >Original< image height
/* Init Template
*/
$template_advanced = "teaser_advanced.html";
$template_advanced2 = "teaser_advanced_element.html";
$newsheadline = "Neues auf dieser Seite";
$ii = 0;
if (!is_object($tpl)) {
$tpl = new Template;
}
$tpl->reset();
$tpl->set('s', 'TITLE', $newsheadline);
foreach ($aData as $aValue) {
$headline_advanced = $aValue["Category"].": ".$aValue["Headline"];
if ($aSettings["Elements"] > 0) {
if (!is_object($tpl2)) { #generate template for elements
$tpl2 = new Template;
}
$tpl2->reset();
$img_number = 0;
$text_number = 0;
for ($i = 0; $i < $aSettings["Elements"]; $i++) {
switch (TRUE) {
case ($aSettings["k".$i]["ElementType"] == "Image" || $aSettings["k".$i]["ElementType"] == "ExtractedImage"):
if (!empty($aValue["i".$i]["WebPath"])) { // modify oldperl: if no Webpath, there's no image
$image = $aValue["i".$i]["WebPath"];
$width = $aValue["i".$i]["Width"];
$height = $aValue["i".$i]["Height"];
if ($aSettings["k".$i]["ElementWidth"] > 0 && $aSettings["k".$i]["ElementHeight"] > 0) {
# Check, if resize necessary
if ($aValue["i".$i]["ServerPath"] != "" && file_exists($aValue["i".$i]["ServerPath"]) &&
($aValue["i".$i]["Width"] > $aSettings["k".$i]["ElementWidth"] ||
$aValue["i".$i]["Height"] > $aSettings["k".$i]["ElementHeight"])) {
# Scale image
$image = capiImgScale($aValue["i".$i]["ServerPath"], $aSettings["k".$i]["ElementWidth"], $aSettings["k".$i]["ElementHeight"], false, false, 10, false);
#Get dimensions of the image
list ($width, $height, $type, $attr) = getimagesize($image);
} else {
$image = $aValue["i".$i]["WebPath"];
$width = $aValue["i".$i]["Width"];
$height = $aValue["i".$i]["Height"];
}
}
if ($image != "") {
$element_class = 'img_advanced'.$img_number;
if ($XHTML == true) {
$element_content = '<img src="'.$image.'" width="'.$width.'" height="'.$height.'" alt="" />'; } else {
$element_content = '<img src="'.$image.'" width="'.$width.'" height="'.$height.'" alt="">';
}
$img_number++;
}
} else { // modify oldperl: if no image, we need no template
$no_template = true;
}
break;
default: // Everything else is treated as "Text"
$element_class = 'text_advanced'.$text_number; // set the class-value for div
$element_content = $aValue["i".$i]["Value"]; // set content for div
$text_number++;
}
if(!$no_template) { // modify oldperl: build tpl only if needed
// build elements with template
$tpl2->set('d', 'CLASS_ELEMENT', $element_class);
$tpl2->set('d', 'CONTENT_ELEMENT',$element_content);
$tpl2->next();
} else {
$no_template = false;
}
}
$content_elements = $tpl2->generate('templates/'.$template_advanced2, true); // save tpl with elements for printing with master-tpl
}
if ($XHTML == true) {
$sign_img = '<img src="images/navi_pfeil_rechts.gif" border="0" alt="" />';
} else {
$sign_img = '<img src="images/navi_pfeil_rechts.gif" border="0" alt="">';
}
$show_more = '<a href="'.$aValue["Link"].'">'.mi18n("More...").'</a>';
$sign_more = '<a href="'.$aValue["Link"].'">'.$sign_img.'</a>';
$tpl->set('d', 'HEADLINE', $headline_advanced);
$tpl->set('d', 'CONTENT', $content_elements);
$tpl->set('d', 'MORE', $show_more);
$tpl->set('d', 'SIGN_MORE', $sign_more);
$tpl->next();
}
}
# Page browsing
# Hint: Number of max available records: $lCount
# Number of pages: round($lCount / $aSettings["ArticlePerPage"])
# First page: nextstep=0
# Last page: nextstep=(round($lCount / $aSettings["ArticlePerPage"]) - 1) * $aSettings["ArticlePerPage"];
# (I have to admit that I'm not sure about the last page formula ... ;-) )
if ($aSettings["ArticlePerPage"] > 0) {
# Example: |< 1 ... 3 4 5 ... 8 >|
$iPages = ceil($lCount / $aSettings["ArticlePerPage"]);
$sPageBack = '';
$sPageLinks = '';
$sPageForward = '';
$sPageBack = '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep=0">|<</a>';
for ($i = 1; $i <= $iPages; $i++) {
$lNextStep = ($i - 1) * $aSettings["ArticlePerPage"];
if ($i == 1 || $i == $iPages) {
if ($sPageLinks != '') {
$sPageLinks .= ' ';
}
if ($_REQUEST["nextstep"] == $lNextStep) {
$sPageLinks .= $i; # I'm on the current page, no link
} else {
$sPageLinks .= '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>';
}
} else if ($_REQUEST["nextstep"] == $lNextStep) {
$sPageLinks .= ' '.$i; # I'm on the current page, no link
} else if ($_REQUEST["nextstep"] == ($lNextStep + $aSettings["ArticlePerPage"])) {
# Front
$sPageLinks .= ' <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>';
} else if ($_REQUEST["nextstep"] == ($lNextStep - $aSettings["ArticlePerPage"])) {
# Back
$sPageLinks .= ' <a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.$lNextStep.'">'.$i.'</a>';
} else if ($_REQUEST["nextstep"] == ($lNextStep - (2 * $aSettings["ArticlePerPage"])) ||
$_REQUEST["nextstep"] == ($lNextStep + (2 * $aSettings["ArticlePerPage"]))) {
$sPageLinks .= '...';
}
}
$sPageForward = '<a href="front_content.php?idcat='.$idcat.'&idart='.$idart.'&nextstep='.(ceil($lCount / $aSettings["ArticlePerPage"]) - 1) * $aSettings["ArticlePerPage"].'">>|</a>'."\n";
}
$tpl->set('s', 'BACK', $sPageBack);
$tpl->set('s', 'PAGESELECTOR', $sPageLinks);
$tpl->set('s', 'FORWARD', $sPageForward);
$tpl->generate('templates/'.$template_advanced);
}
# Clearing memory
unset ($aData);
unset ($aSettings);
unset ($i);
unset ($lCount);
unset ($bDebug);
?>
Templates im Mandantenverzeichnis->templates ablegen
Template1: teaser_advanced_element.html
Code: Alles auswählen
<!-- BEGIN:BLOCK -->
<div class="{CLASS_ELEMENT}">{CONTENT_ELEMENT}</div>
<!-- END:BLOCK -->
Template2: teaser_advanced.html
Code: Alles auswählen
<h1 class="teaser_advanced_title">{TITLE}</h1>
<!-- BEGIN:BLOCK -->
<div class="teaser_advanced">
<div class="headline_advanced">{HEADLINE}</div>
{CONTENT}
<div class="more_advanced">{MORE} {SIGN_MORE}</div>
</div>
<!-- END:BLOCK -->
<div class="pageselector">{BACK} {PAGESELECTOR} {FORWARD}</div>
CSS in deine CSS-Datei kopieren
Code: Alles auswählen
/* CSS für Standard-Artikelliste Advanced V1.4
Modul-Author: HerrB
CSS-Anpassung: Oldperl
siehe http://www.contenido.org/forum/viewtopic.php?t=10957
*/
/* DIV-Bereich für die gesamte Artikelliste
*/
.teaser_advanced {
width: 900px;
padding: 10px 10px;
}
/* H1-tag für Titel der Artikelliste
*/
.teaser_advanced_title {
color: #000000;
font-family: Arial, Helvetica, sans-serif;
font-style: normal;
font-weight: normal;
font-variant: normal;
}
/* Überschrift Artikel
*/
.headline_advanced {
font-size: 16px;
font-weight: bold;
margin-bottom: 5px;
}
/* Einstellung der Bilder
fortlaufende Zählung, beginnend mit 0
*/
.img_advanced0 {
margin-right: 10px;
margin-top:2px;
float: left;
}
/* Einstellung für Text
fortlaufende Zählung, beginnend mit 0
*/
.text_advanced0 {
margin: 10px 0px;
margin-right: 10px;
}
/*
*/
.more_advanced {
clear: both;
}
/* DIV für Pageselector
*/
.pageselector {
}
Die Hauptüberschrift ist im Moment noch in der Variablen $newsheadline im Quelltext hinterlegt. Könnte man aber noch im Input einbauen, auch abschaltbar.
Die einzelnen Elemte werde mit dem 1. Template aufgebaut und mit dem 2. Template wird dann alles ausgegeben.
Die Elemente werden mit dem class-Attribut und mit einer fortlaufenden Nummerierung, jeweils für Bilder oder Text, beginnend bei 0 versehen (siehe CSS).
Gruß aus dem nächtlichen Franken
Ortwin