zufällige Anzeige aus einem Artikel-Pool
zufällige Anzeige aus einem Artikel-Pool
Hallo!
Wir haben eine Startseite, die sich häufig ändert. Deswegen machen wir von hier eine Weiterleitung auf einen Artikel, der dann die (sozusagen sichtbare) Startseite ist. So können viele Artikel in einem Ordner abgelegt, später aufgegriffen, überarbeitet und wieder angezeigt werden.
Jetzt ist es so, dass wir aus einem Pool einen zufälligen Artikel anzeigen wollen. Klasse wäre es, wenn man die o.g. Weiterleitung statt auf einen Artikel auf einen Ordner zeigen lassen könnte und von da aus wird dann einfach per Zufall ein Artikel zur Anzeige ausgewählt.
Ist so etwas möglich? Dazu braucht man sicher ein Modul. Gibt es das evtl. sogar schon? Weiß jemand weiter? Danke!
Wir haben eine Startseite, die sich häufig ändert. Deswegen machen wir von hier eine Weiterleitung auf einen Artikel, der dann die (sozusagen sichtbare) Startseite ist. So können viele Artikel in einem Ordner abgelegt, später aufgegriffen, überarbeitet und wieder angezeigt werden.
Jetzt ist es so, dass wir aus einem Pool einen zufälligen Artikel anzeigen wollen. Klasse wäre es, wenn man die o.g. Weiterleitung statt auf einen Artikel auf einen Ordner zeigen lassen könnte und von da aus wird dann einfach per Zufall ein Artikel zur Anzeige ausgewählt.
Ist so etwas möglich? Dazu braucht man sicher ein Modul. Gibt es das evtl. sogar schon? Weiß jemand weiter? Danke!
So ein Modul ist mir nicht bekannt.
Ich habe aber mal einbischen Quelltext aus der Artikel-List-Adv. extrahiert.
Dieser PHP-Code kann über $aSettings konfiguriert werden und gibt in $sUrl die URL zur Zufalls-Seite aus.
!!! PHP-Wissen ist noch nötig !!!
siehe Modul weiter unten ...
Ich habe aber mal einbischen Quelltext aus der Artikel-List-Adv. extrahiert.
Dieser PHP-Code kann über $aSettings konfiguriert werden und gibt in $sUrl die URL zur Zufalls-Seite aus.
!!! PHP-Wissen ist noch nötig !!!
siehe Modul weiter unten ...
Zuletzt geändert von OliverL am Do 20. Nov 2008, 11:57, insgesamt 1-mal geändert.
Hallo und danke für die Mühe!
Ich werde da aber noch nicht ganz schlau draus. Ist o.g. Quellcode ein Auszug aus einer Datei? Wenn ja, welcher? Oder muss der irgendwohin? So wie es aussieht kann ich dass ja dann steuern, so wie ich möchte. Allerdings global für alle Seiten, oder nur die, die in $aSettings["AddCats"] stehen?
Ich werde da aber noch nicht ganz schlau draus. Ist o.g. Quellcode ein Auszug aus einer Datei? Wenn ja, welcher? Oder muss der irgendwohin? So wie es aussieht kann ich dass ja dann steuern, so wie ich möchte. Allerdings global für alle Seiten, oder nur die, die in $aSettings["AddCats"] stehen?
Besser spät als nieeeeee ....
Im Layout darf nur folgenden stehen:Keine Leerzeichen keine Zeilenumbrüche.
Name:
t4mWeiterleitung (mit Artikel-Pool)
Beschreibung:
Leitet automatisch zu einem Artikel aus einem Pool weiter
Autor: Oliver Lohkemper (OliverL)
Version 0.1
Input:
Output:
Im Layout darf nur folgenden stehen:
Code: Alles auswählen
<container id="1"></container>
Name:
t4mWeiterleitung (mit Artikel-Pool)
Beschreibung:
Leitet automatisch zu einem Artikel aus einem Pool weiter
Autor: Oliver Lohkemper (OliverL)
Version 0.1
Input:
Code: Alles auswählen
?><?php
# Base settings
$aSettings = array();
$aSettings['AddCats'] = "CMS_VALUE[1]";
$aSettings['ShowStart'] = (int)"CMS_VALUE[2]"; // 1 = show Startartikel ; 2 = show Artikel ; 3 = show Start- & Artikel
if( !$aSettings['ShowStart'] ) $aSettings['ShowStart'] = 2;
?>
<table cellpadding="0" cellspacing="4" border="0" width="100%">
<colgroup><col width="200" /><col width="*" /></colgroup>
<tr>
<td class="text_medium"><?php echo mi18n("Categories for Artikel-Pool"); ?>:</td>
<td><input type="text" name="CMS_VAR[1]" value="<?php echo $aSettings ['AddCats']; ?>" size="10" class="text_medium"></td>
</tr>
<tr>
<td class="text_medium"><?php echo mi18n("Display-Typ"); ?>:</td>
<td>
<label><input type="radio" name="CMS_VAR[2]" value="1"<?php echo ($aSettings["ShowStart"] == "1" ? ' checked="checked"' : ''); ?>><?php echo i18n("Start article"); ?></label>
<label><input type="radio" name="CMS_VAR[2]" value="2"<?php echo ($aSettings["ShowStart"] == "2" ? ' checked="checked"' : ''); ?>><?php echo i18n("Article"); ?></label>
<label><input type="radio" name="CMS_VAR[2]" value="3"<?php echo ($aSettings["ShowStart"] == "3" ? ' checked="checked"' : ''); ?>><?php echo i18n("Start article").' & '.i18n("Article"); ?></label>
</td>
</tr>
</table>
<?php
unset( $aSettings );
Code: Alles auswählen
<?php
# Base settings
$aSettings = array();
$aSettings['AddCats'] = "CMS_VALUE[1]";
$aSettings['ShowStart'] = (int)"CMS_VALUE[2]";
if( !$aSettings['ShowStart'] ) $aSettings['ShowStart'] = 2;
$aCats = explode(",",$aSettings["AddCats"]);
foreach ($aCats as $value) {
if (is_numeric($value)) {
$sSelCats .= ",'".$value."'";
}
}
$sSelCats = substr($sSelCats,1);
$sql = "SELECT tblData.value AS headline, "
. "ARTLANG.idart AS id, "
. "ARTLANG.lastmodified AS lastmodified, "
. "ARTLANG.created AS created, "
. "ARTLANG.published AS published, "
. "ARTLANG.artsort AS artsort, "
. "CATLANG.name AS category, "
. "ARTLANG.idartlang AS idartlang, "
. "CATART.idcat AS idcat, "
. "CATART.idcatart AS idcatart "
. "FROM "
. $cfg["tab"]["cat_art"]." AS CATART, "
. $cfg["tab"]["art_lang"]." AS ARTLANG, "
. $cfg["tab"]["cat_lang"]." AS CATLANG, "
. $cfg["tab"]["content"]." AS tblData "
. "WHERE "
. "CATART.idcat IN (".$sSelCats.") "
. "AND ARTLANG.idlang = '".$lang."' "
. "AND tblData.idartlang = ARTLANG.idartlang "
. "AND CATLANG.idlang = ARTLANG.idlang "
. "AND CATLANG.idcat = CATART.idcat "
. "AND ARTLANG.idart = CATART.idart ";
if ($aSettings["ShowStart"] == "1") {
$sql .= "AND CATLANG.startidartlang = ARTLANG.idartlang ";
}
if ($aSettings["ShowStart"] == "2") {
if ($cfg["is_start_compatible"] == true)
$sql .= "AND CATART.is_start = '0' ";
else
$sql .= "AND tblData.idartlang != CATLANG.startidartlang ";
}
$sql .= "AND ARTLANG.online = '1' ";
// Sort by
$sql .= " ORDER BY RAND() ";
// LIMIT
$sql .= "LIMIT 0, 1";
// execute query
$db->query($sql);
$lCount = $db->num_rows();
if( $lCount ) {
$db->next_record();
$sUrl = $sess->url("front_content.php?idart=".$db->f("id"));
if(!$edit)
Header( "Location: ".$cfgClient[$client]['path']['htmlpath'].$sUrl );
else
echo "Beispiel-Adresse:<hr>".$cfgClient[$client]['path']['htmlpath'].$sUrl;
}
else {
echo "Sie konnten leider nicht weitergeleitet werden.";
}
?>
Hallo Oliver,
danke für deine Mühen. Ich steige immer noch nicht ganz durch. Das Modul ist klar. Und wo binde ich das ein? Ich habe jetzt ich "Kategorie1" (id=100) 10 Artikel drin. Von denen aktiviere ich ab und zu einen als Startartikel ("Artikel1-10"). Muss ich jetzt einen neuen Artikel mit dem Modul anlegen, der ein eigenes Layout bekommt und sozusagen für die Weiterleitung verantwortlich ist?
danke für deine Mühen. Ich steige immer noch nicht ganz durch. Das Modul ist klar. Und wo binde ich das ein? Ich habe jetzt ich "Kategorie1" (id=100) 10 Artikel drin. Von denen aktiviere ich ab und zu einen als Startartikel ("Artikel1-10"). Muss ich jetzt einen neuen Artikel mit dem Modul anlegen, der ein eigenes Layout bekommt und sozusagen für die Weiterleitung verantwortlich ist?
Möchte Oliver nicht ins Handwerk pfuschen, ich habe es so verstanden:rok°! hat geschrieben:Hallo Oliver,
danke für deine Mühen. Ich steige immer noch nicht ganz durch. Das Modul ist klar. Und wo binde ich das ein? ...
1. Modul wie von Oliver beschrieben erstellen
2. Layout erstellen
3. Neues Template auf Basis von dem unter 2. erstellten Layout
4. In der Hauptkategorie neuen Artikel auf Basis von dem unter 3. erstellten Template
5. Konfigurieren (idcat)
6. Diesen neuen Artikel als Startartikel festlegen !
7. fertisch
Guten Gruß
Seelauer.
Seelauer.
Hat super geklappt. Ich habe einfach die Artikel in eine eigene Kategorie gepackt und die Kat-ID im Modul angegeben. Danke! so wollte ich das haben
Mich interessiert jetzt noch eins:
Das sind die Arten von Artikeln, die angezeigt werden sollen, korrekt? Wenn ich das richtig verstehe, werden da auch Artikel aus Kategorien und Unterkategorien angezeigt? Weil sonst macht ja "Startartikel" keinen Sinn...
Mich interessiert jetzt noch eins:
Code: Alles auswählen
Display-Typ: Startartikel Artikel Startartikel & Artikel
Option "Artikel" (die Lösung für dich)
Sollte der Start-Artikel gleich dem Weiterleitungs-Artikel sein und die Kategorie auf die zeigen in dem sich der Artikel selbst befindet macht die Option Startartikel kein sinn.
Option "Start-Artikel"
Hast du jedoch z.B.
eine Maschinen-Seite,
wo jede Maschinen eine eigene Kategorie hat
und der Start-A. die Maschine ist
kannst du alle Kategorien einbeziehen
und erleitet automatisch zu irgend einer weiter.
Option "Start-Artikel & Artikel"
Hast du jetzt noch im oberen Beispiel:
das passende Zubehör als normale Artikel
in den Maschinen Kategorien und möchtest du diese mit in die Weiterleitung aufnehmen ist die Option sinnvoll.
Info:
Durch das angeben der Kategorien ist es nicht zwingend erforderlich das der Artikel als Startartikel in einer Kategorie definiert sein muss und die Artikel seiner Kategorie einbezieht.
Der Weiterleitungs-Artikel kann so auch dezentral in einer anderen Kategorie gelagert werden.
mfg Oliver
( ich verschiebe das ganze mal in "Module 4.8" )
Sollte der Start-Artikel gleich dem Weiterleitungs-Artikel sein und die Kategorie auf die zeigen in dem sich der Artikel selbst befindet macht die Option Startartikel kein sinn.
Option "Start-Artikel"
Hast du jedoch z.B.
eine Maschinen-Seite,
wo jede Maschinen eine eigene Kategorie hat
und der Start-A. die Maschine ist
kannst du alle Kategorien einbeziehen
und erleitet automatisch zu irgend einer weiter.
Option "Start-Artikel & Artikel"
Hast du jetzt noch im oberen Beispiel:
das passende Zubehör als normale Artikel
in den Maschinen Kategorien und möchtest du diese mit in die Weiterleitung aufnehmen ist die Option sinnvoll.
Info:
Durch das angeben der Kategorien ist es nicht zwingend erforderlich das der Artikel als Startartikel in einer Kategorie definiert sein muss und die Artikel seiner Kategorie einbezieht.
Der Weiterleitungs-Artikel kann so auch dezentral in einer anderen Kategorie gelagert werden.
mfg Oliver
( ich verschiebe das ganze mal in "Module 4.8" )