Seite 2 von 4

Verfasst: Di 29. Nov 2005, 21:32
von HerrB
Och, nicht viel. Man muss nur ein LIMIT einfügen. Dann über einen URL-Parameter den nächsten Anfangswert übergeben. Ein paar entsprechende Links beifügen (Vor/Zurück), die den Parameter enthalten.

Dann muss man den Parameter beim Aufruf des Moduls überprüfen (damit man keinen Murx einschleusen kann), das ins Limit einfügen und schon wäre man fertig.

Es ist doch einiges an Arbeit.

Gruß
HerrB

Verfasst: Mi 30. Nov 2005, 13:50
von peanut
wieviele Stunden bräuchtest du dafür ? Unkosten ? PM ?

Verfasst: Mi 30. Nov 2005, 15:20
von HerrB
Mir fehlt die Zeit, sonst würde ich euch das sofort gerne stricken. Ich habe noch einen Auftrag für kommendes Wochenende, vielleicht fällt das mit ab... :lol:

Na ja und einen HTML-Newsletter wird ja auch gewünscht und keine Bugs mehr usw. usw. usw.... :wink:

Gruß
HerrB

Verfasst: Mi 30. Nov 2005, 15:33
von rezeptionist
lach ich denke wir sollten ein clonemodul erstellen damit man dich clonen kann grins

greets

Verfasst: Mo 2. Jan 2006, 16:01
von peanut
Ja nochmal Herr B.

was würde das denn kosten so eine "lächerliche" Blätterfunktion i.d. Artikel Newsliste ?

Danke

Verfasst: Di 3. Jan 2006, 19:15
von HerrB
Wenn Du mir die Zeit gibst, gibts das umsonst. Es ist echt nur ein Zeitproblem.

Gruß
HerrB

Wir hatten etwas mehr Zeit ...

Verfasst: So 22. Jan 2006, 08:10
von timdubi
Moin!

Da wir im Kundenauftrag exakt eine solche Artikelliste benötigten - hier für die gesamte Community das Ergebnis (Der Kunde war so freundlich es freizugeben)!

Bild

Achja, es sind beide Funktionsmöglichkeiten eingebaut. Ihr könnt blättern und direkt über eine Seitenangabe navigieren. Im Inputmodul kann die Vor/Zurück Navigation deaktiviert werden und auch die Anzahl der Artikel pro Seite angegeben werden.

Modulinput

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :      News
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
* Modified    :     Clemens Koch, OWLweb (added page & browsing support)
* Date	      :     20.01.2006
************************************************/

#Select category
$cms_idcat = "CMS_VALUE[1]";

echo '<table cellpadding="0" cellspacing="0" border="0">';

echo '
		<tr><td class="text_medium" style="padding:5px">Kategorie wählen: </td></tr>
		<tr><td class="text_medium" style="padding:5px">';

echo buildCategorySelect("CMS_VAR[1]", "CMS_VALUE[1]");
echo '&nbsp;<input type="image" src="images/submit.gif">';

echo '</td></tr>';

#Select sort field and sort order
$sortdate = 'checked';
$cms_imgsize = "CMS_VALUE[14]";
$cms_limit_articles = "CMS_VALUE[15]";
$cms_sort_direction = "CMS_VALUE[16]";
$cms_limit_articles_per_page = "CMS_VALUE[20]";
if ("CMS_VALUE[21]" != ""){
	$browse = "checked";
}
if ("CMS_VALUE[17]" != '') {
	$cms_include_start_article = ' checked';
} else {
	$cms_include_start_article = '';
}

if ("CMS_VALUE[3]" == 'sortdate') {
	$sortdate = 'checked';
	$sortnum = '';
}
elseif ("CMS_VALUE[3]" == 'sortnum') {
	$sortdate = '';
	$sortnum = 'checked';
}

echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Sortierung nach Datum").':</td>
          <td style="padding:5px;"><input type="radio" name="CMS_VAR[3]" value="sortdate" '.$sortdate.'></td>
        </tr>
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Sortierung nach Nummer").':</td>
          <td style="padding:5px;"><input type="radio" name="CMS_VAR[3]" value="sortnum" '.$sortnum.'></td>
        </tr>
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Sortierung aufsteigend").':</td>
          <td style="padding:5px;">';
if (strtolower($cms_sort_direction) == 'desc') {
	echo '<input type="radio" name="CMS_VAR[16]" value="asc"/>';
} else {
	echo '<input type="radio" name="CMS_VAR[16]" value="asc" checked/>';
}
echo '</td>
        </tr>
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Sortierung absteigend").':</td>
          <td style="padding:5px;">';
if (strtolower($cms_sort_direction) == 'desc') {
	echo '<input type="radio" name="CMS_VAR[16]" value="desc" checked/>';
} else {
	echo '<input type="radio" name="CMS_VAR[16]" value="desc"/>';
}
echo '</td>
        </tr>';

$noimg = '';
if ("CMS_VALUE[13]" == 'true') {
	$noimg = 'checked';
}

#Headline
echo '
	  	<tr><td class="text_medium" style="padding:5px;">'.mi18n("Überschrift").': </td></tr>
	  	<tr><td style="padding:5px;"><input type="text" name="CMS_VAR[4]" value="CMS_VALUE[4]"></td></tr>
        <tr>
          <td colspan="2" class="text_medium" style="padding:5px;"><b><u>'.mi18n("Bild für Teaser").':</u></b></td>
        </tr>
        <tr>
          <td colspan="2" class="text_medium" style="padding:5px;">'.mi18n("Es wird das erste Bild des Artikels angezeigt.").'</td>
        </tr>';
#Image width
echo '
		<tr><td class="text_medium" style="padding:5px;">'.mi18n("Bildbreite").': </td></tr>
	  	<tr><td style="padding:5px;"><input type="text" name="CMS_VAR[14]" value="'.$cms_imgsize.'" maxlength="3"></td></tr>';
#Disable images
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Kein Bild anzeigen").':</td>
          <td style="padding:5px;"><input type="checkbox" name="CMS_VAR[13]" value="true" '.$noimg.'></td>
        </tr>';
#Number of articles
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Anzahl Artikel begrenzen").':</td>
          <td style="padding:5px;"><input type="text" name="CMS_VAR[15]" value="'.$cms_limit_articles.'"></td>
        </tr>';
#browsing?
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Blätterfkt?").':</td>
          <td style="padding:5px;"><input type="checkbox" name="CMS_VAR[21]" value="true" '. $browse . '></td>
        </tr>';        
#Number of articles per page      
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Artikel pro seite").':</td>
          <td style="padding:5px;"><input type="text" name="CMS_VAR[20]" value="'.$cms_limit_articles_per_page.'"></td>
        </tr>';
#Include start article
echo '
        <tr>
          <td class="text_medium" style="padding:5px;">'.mi18n("Startartikel in Liste einbeziehen").':</td>
          <td style="padding:5px;"><input type="text" name="CMS_VAR[17]" value="yes"'.$cms_include_start_article.'></td>
        </tr>';

echo '</table>';
?><?php

Moduloutput

Code: Alles auswählen

<?php


/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      News
* Author(s)   :     Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
* Modified    :     Clemens Koch, OWLweb (added page & browsing support)
* Date	      :     20.01.2006
************************************************/

cInclude('classes', 'class.article.php');
cInclude('includes', 'functions.api.string.php');
cInclude('includes', 'functions.api.images.php');

if (!is_object($tpl)) {
	$tpl = new Template;
}

$aperpage = "CMS_VALUE[20]";
if ("CMS_VALUE[21]" != "") {
	$browse = true;
} else {
	$browse = false;
}

if ($aperpage == '') {
	$aperpage = 1000;
}

$pages = 0;

if (!isset ($_GET["p"])) {
	$page = 1;
} else {
	$page = $_GET["p"];
}
$tpl->reset();

$sql = "SELECT
            htmlpath, frontendpath
        FROM
            ".$cfg["tab"]["clients"]."
        WHERE
            idclient = ".$client." ";

$db->query($sql);

if ($db->next_record()) {
	$htmlpath = $db->f('htmlpath');
	$frontendpath = $db->f('frontendpath');
}

// selected category
$selcat = "CMS_VALUE[1]";
//echo "sel $selcat<br>";
$template = "teaser-standard.html";
//echo "tpl $template<br>";
// anzahl der zeichen text
$mxtext = 110;

$limit = "CMS_VALUE[15]";

$cms_sort_direction = "CMS_VALUE[16]";
if ($cms_sort_direction == '') {
	$cms_sort_direction = 'desc';
}

if ("CMS_VALUE[3]" == "sortdate") {
	$order = 'lastmodified';
} else {
	$order = 'artsort';
}

$newsheadline = "CMS_VALUE[4]";

$tpl->set('s', 'TITLE', $newsheadline);

if (strlen($selcat) > 0 AND $selcat != '0') {
	$options = array ('idcat' => $selcat, "start" => false, "order" => $order, "direction" => $cms_sort_direction);

	$list = new ArticleCollection($options);

	$count = $list->count;

	if ($count > 0) {
		if (is_numeric($limit) AND strlen($limit) > 0) {
			if ($limit < $list->count) {
				$limit_art = $limit;
			} else {
				$limit_art = $list->count;
			}
		} else {
			$limit_art = $list->count;
		}

		for ($i = 0; $i < $limit_art; $i ++) {

			if (($i % $aperpage) == 0) {
				$pages = $pages +1;
			}

			$article = $list->nextArticle();
			if ($pages == $page) {
				$article_id = $article->getField('idart');

				$teaser_img = '';
				if ($noimg != 'true') {
					$text_html = $article->getContent('CMS_HTML', 1);

					$regEx = "/<img[^>]*?>.*?/i";
					$match = array ();
					preg_match($regEx, $text_html, $match);

					$regEx = "/(src)(=)(['\"]?)([^\"']*)(['\"]?)/i";
					$img = array ();
					preg_match($regEx, $match[0], $img);
					$img_src = preg_split("/\//", $img[0]);

					$img_name = $img_src[count($img_src) - 1];
					$img_name = preg_replace("/\"/", "", $img_name);
					$img_split = preg_split("/\./", $img_name);
					$img_type = $img_split[count($img_split) - 1];

					$img_split2 = preg_split("/_/", $img_split[0]);

					$name = $img_name;

					if (count($img_split2) > 1) {
						$img_x = $img_split2[count($img_split2) - 1];
						$img_y = $img_split2[count($img_split2) - 2];

						if (is_numeric($img_x) AND is_numeric($img_y)) {
							$suffix = "_".$img_x."_".$img_y.".".$img_type;
							$name = preg_replace("/$suffix/", "", $img_name);
							$name = $name.".[a-zA-Z]{3}";
						}
					}

					$img_teaser = '';

					if (strlen($name) > 0) {
						$sql = "SELECT
																																																		                                                    *
																																																		                                                FROM
																																																		                                                    ".$cfg["tab"]["upl"]."
																																																		                                                WHERE
																																																		                                                    filename REGEXP '$name' ";

						//echo "<pre>"; print_r($sql); echo "</pre>";

						$db->query($sql);

						if ($db->next_record()) {
							$filename = $db->f('filename');
							$dirname = $db->f('dirname');
						}

						$img_path = $cfgClient[$client]["upl"]["path"].$dirname.$filename;

						$img_size = "CMS_VALUE[14]";

						$img_teaser = capiImgScale($img_path, $img_size, $img_size, $crop = false, $expand = false, $cacheTime = 1000, $wantHQ = false);
					} // end if strlen

					if (strlen($img_teaser) > 0) {
						$teaser_img = '<img src="'.$img_teaser.'" class="teaser_img">';
					} else {
						$teaser_img = '';
					}

				} // end if noimg        

				$headline = strip_tags($article->getContent('CMS_HTMLHEAD', 1));
				$headline = str_replace($replace, " ", $headline);

				/*            $subheadline = strip_tags($article->getContent('CMS_HTMLHEAD', 2));
				            $subheadline = str_replace($replace, " ", $subheadline);*/

				$teaserheadline = /*$subheadline."&nbsp;-&nbsp;".*/
				$headline;
				$href = $sess->url("front_content.php?idcat=$selcat&idart=$article_id");
				$teasertext = $article->getField('summary');

				if (strlen(trim($teasertext)) == 0) {
					$teasertext = strip_tags($article->getContent('CMS_HTML', 1));
					$teasertext2 = $teasertext;
					$teasertext = capiStrTrimAfterWord($teasertext, $mxtext);
					if ($teasertext != $teasertext2) {
						$teasertext .= '...';
					}

				} // end if              
				$teasertext = $teasertext."&nbsp;".$next;

				$tpl->set('d', 'HEADLINE', $teaserheadline);
				$tpl->set('d', 'TEXT', $teasertext);
				$tpl->set('d', 'HREF', $href);
				$tpl->set('d', 'IMG', $teaser_img);
				$tpl->set('d', 'MORE', mi18n("mehr"));

				$tpl->next();
			}
		} // end for

		$tpl->generate('templates/'.$template);
		$selcat = $_GET["idcat"];
		if ($pages != 1) {
			$prev = $page -1;
			$next = $page +1;
			echo "<table><tr><td>";
			if ($page > 1 && $browse) {
				$href = $sess->url("front_content.php?idcat=$selcat&p=$prev");
				echo "<a href=\"".$href."\">zurück</a></td><td>";
			}
			for ($j = 1; $j < $pages +1; $j ++) {
				$href = $sess->url("front_content.php?idcat=$selcat&p=$j");
				if ($j == $page) {
					echo "[<b>".$j."</b>]";
				} else {
					echo "[<a href=\"".$href."\">".$j."</a>]";
				}
			}
			echo "</td>";
			if (($pages - $page) != 0 && $browse) {
				$href = $sess->url("front_content.php?idcat=$selcat&p=$next");
				echo "<td><a href=\"".$href."\">vor</a></td>";
			}
			echo "</tr></table>";

		}
	}
}
?>
Wir haben das Template (/templates/teaser-standard.html) ebenfalls noch angepasst - für den, der es gebrauchen kann:

Code: Alles auswählen

<!-- BEGIN:BLOCK -->

<div class="subheader">
<div class="nl"><a class="newslink" href="{HREF}">{HEADLINE}</a></div>
<div class="nimg">{IMG}</div>
<div class="ntext">{TEXT}</div>
<div class="nt">
<a href={HREF}><img src="PFAD/img/pfeil_kl.gif" alt="..." border="0" /></a>
<a class="newsteaser" href="{HREF}">{MORE}</a>
</div><br>
</div>
<!-- END:BLOCK -->
Hier der passende CSS-Schnippsel:

Code: Alles auswählen

div.nl { color: #333; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 23px; text-transform: lowercase; height: 23px; display: block; }
div.nimg{ margin-right: 5px; padding-top: 2px; padding-bottom: 2px; }
div.ntext { font-size: 11px; font-family: Arial, Helvetica, sans-serif; width: 90%; padding-top: 2px; padding-right: 2px; padding-left: 15px; }
div.nt { line-height: 20px; width: 99%; padding-top: 2px; padding-bottom: 3px; }
a:link.newsteaser,a:active.newsteaser,a:visited.newsteaser                { color: gray; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none; padding-left: 8px; }
a:hover.newsteaser            { color: black; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif;
Ach, übrigens: Clemens Koch - unser Programmierer - sprach von wirklich gutem Handwerk, was die Programmierung des Ursprungsmoduls (News aus 4.6.4) anbelangt. In seinem Namen also ein - "Respekt" an den Entwickler Andreas Lindner :wink:

Re: Wir hatten etwas mehr Zeit ...

Verfasst: So 22. Jan 2006, 13:28
von i-fekt
timdubi hat geschrieben:Bild
Was passiert bei 1000 Seiten?

Gute wäre eine solche Navigation:
"Gehe zu Seite 1, 2, 3 ... 83, 84, 85 Weiter"

Das kennt man ja aus Foren.

Re: Wir hatten etwas mehr Zeit ...

Verfasst: So 22. Jan 2006, 19:15
von timdubi
i-fekt hat geschrieben:
timdubi hat geschrieben:Bild
Was passiert bei 1000 Seiten?

Gute wäre eine solche Navigation:
"Gehe zu Seite 1, 2, 3 ... 83, 84, 85 Weiter"

Das kennt man ja aus Foren.
Das "Weiter" gibts ja - heist nur "vor" ...
Und wenns zu viele Seiten werden, einfach die Direktanwahl im Code deaktivieren, bzw. Seitenbereiche im Code hinzufügen ...

Verfasst: So 22. Jan 2006, 21:19
von jost
Herzlichen Dank für die Bereitstellung dieses Moduls.

Verfasst: So 22. Jan 2006, 22:14
von re-flexion
Hi,

bei mir wirft er dort, wo die Artikel aufgelistet werden sollten immer nur "templates/teaser-standard1.html" aus - und sonst nix - woran mag das liegen?

Die Blätterfunktion ist richtig zu sehen - unter dem obigen Schriftzug...

Und im Input kann ich bei "Startartikel in Liste einbeziehen:" das yes nicht in ein no ändern...

ich hoffe, ihr könnt mir helfen - die Liste sieht sich sonst toll an :-)

Verfasst: So 22. Jan 2006, 23:59
von HerrB
Vermutlich fehlt Dir die Datei im <Mandanten>/templates-Verzeichnis, siehe Style -> HTML Editor.

Gruß
HerrB

Verfasst: Mo 23. Jan 2006, 00:11
von re-flexion
Hallo HerB,

jetzt bin ich komplett verwirrt - was genau meinst du?
Wie kann ich dieses Problems Herr werden?

Entschuldige bitte meine "Lange Leitung"

Verfasst: Mo 23. Jan 2006, 00:28
von HerrB
Waren auch zu viele Hinweise, ich gebe es zu. :wink:

Also:
1. Du meldest Dich bei Contenido an
2. Du klickst auf Style
3. Du klickst auf HTML Editor (ganz rechts)
4. Du stellst fest, dass Dir die Datei teaser-standard1.html fehlt
5. Du besorgst Dir das Contenido 4.6.4-Paket
6. Du erzeugst bei Style -> HTML Editor ein neues Template und nennst es teaser-standard1.html
7. Du kopierst den Inhalt aus cms/templates/teaser-standard1.html in das entsprechende Feld bei Style -> HTML Editor
8. Du speicherst die Änderungen
9. Fehler (vermutlich) weg...

(Kleiner Scherz... :wink: )

Gruß
HerrB

Verfasst: Mo 23. Jan 2006, 06:51
von timdubi
re-flexion hat geschrieben:Hi,

bei mir wirft er dort, wo die Artikel aufgelistet werden sollten immer nur "templates/teaser-standard1.html" aus
Sorry - wir haben ein anderes Template für dieses Modul erstellt, dass hatte ich vergessen zu erwähnen. Alternativ kannst Du auch zur Lösung von HerrB im Outputcode die Zeile

Code: Alles auswählen

$template = "teaser-standard1.html";
in

Code: Alles auswählen

$template = "teaser-standard.html";
ändern. Ich habe das auch oben im Code verändert. Dann wird das vorhandene Template verwendet. Das lässt lediglich den Output anders aussehen.

Funktioniert aber alles NUR mit der 4.6.x,