Blätterbare Artikelliste?

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
peanut
Beiträge: 247
Registriert: Do 25. Nov 2004, 19:34
Kontaktdaten:

Beitrag von peanut »

wieviele Stunden bräuchtest du dafür ? Unkosten ? PM ?
du liest nie ein Buch und weisst weise der Bildung auszuweichen ....
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

lach ich denke wir sollten ein clonemodul erstellen damit man dich clonen kann grins

greets
greets
peanut
Beiträge: 247
Registriert: Do 25. Nov 2004, 19:34
Kontaktdaten:

Beitrag von peanut »

Ja nochmal Herr B.

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

Danke
du liest nie ein Buch und weisst weise der Bildung auszuweichen ....
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Wenn Du mir die Zeit gibst, gibts das umsonst. Es ist echt nur ein Zeitproblem.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
timdubi
Beiträge: 75
Registriert: Fr 10. Sep 2004, 16:34
Kontaktdaten:

Wir hatten etwas mehr Zeit ...

Beitrag 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:
Zuletzt geändert von timdubi am Mo 23. Jan 2006, 06:54, insgesamt 1-mal geändert.
Thomas
i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Re: Wir hatten etwas mehr Zeit ...

Beitrag 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.
timdubi
Beiträge: 75
Registriert: Fr 10. Sep 2004, 16:34
Kontaktdaten:

Re: Wir hatten etwas mehr Zeit ...

Beitrag 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 ...
Thomas
jost
Beiträge: 322
Registriert: Mo 10. Jan 2005, 20:12
Kontaktdaten:

Beitrag von jost »

Herzlichen Dank für die Bereitstellung dieses Moduls.
re-flexion
Beiträge: 62
Registriert: Fr 23. Sep 2005, 12:42
Kontaktdaten:

Beitrag 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 :-)
Viele Grüße
Ingo

Contenido 4.6.8
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Vermutlich fehlt Dir die Datei im <Mandanten>/templates-Verzeichnis, siehe Style -> HTML Editor.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
re-flexion
Beiträge: 62
Registriert: Fr 23. Sep 2005, 12:42
Kontaktdaten:

Beitrag 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"
Viele Grüße
Ingo

Contenido 4.6.8
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
timdubi
Beiträge: 75
Registriert: Fr 10. Sep 2004, 16:34
Kontaktdaten:

Beitrag 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,
Thomas
Gesperrt