zufällige Anzeige aus einem Artikel-Pool

Gesperrt
rok°!
Beiträge: 47
Registriert: Do 17. Nov 2005, 18:17
Kontaktdaten:

zufällige Anzeige aus einem Artikel-Pool

Beitrag von rok°! » Fr 14. Nov 2008, 15:45

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!

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Mi 19. Nov 2008, 10:28

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 ...
Zuletzt geändert von OliverL am Do 20. Nov 2008, 11:57, insgesamt 1-mal geändert.

rok°!
Beiträge: 47
Registriert: Do 17. Nov 2005, 18:17
Kontaktdaten:

Beitrag von rok°! » Mi 19. Nov 2008, 13:42

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?

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Mi 19. Nov 2008, 16:16

ich mach dir heute Abend ein Modul-Paket fertig.

mfg OliverL

rok°!
Beiträge: 47
Registriert: Do 17. Nov 2005, 18:17
Kontaktdaten:

Beitrag von rok°! » Mi 19. Nov 2008, 16:31

Ui, ich bin ganz gespannt.
Das Modul können doch bestimmt auch andere gebrauchen, oder? Nicht das ich jetzt wegen deines Aufwandes ein schlechtes Gewissen bekomme :oops:

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Do 20. Nov 2008, 11:59

Besser spät als nieeeeee ....

Im Layout darf nur folgenden stehen:

Code: Alles auswählen

<container id="1"></container>
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:

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>
	&nbsp;
	<label><input type="radio" name="CMS_VAR[2]" value="2"<?php echo ($aSettings["ShowStart"] == "2" ? ' checked="checked"' : ''); ?>><?php echo i18n("Article"); ?></label>
	&nbsp;
	<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 );
Output:

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.";
}
   
?>

rok°!
Beiträge: 47
Registriert: Do 17. Nov 2005, 18:17
Kontaktdaten:

Beitrag von rok°! » Do 20. Nov 2008, 14:09

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?

Seelauer
Beiträge: 186
Registriert: So 22. Jan 2006, 21:03
Wohnort: Mal da, mal da
Kontaktdaten:

Beitrag von Seelauer » Do 20. Nov 2008, 18:29

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? ...
Möchte Oliver nicht ins Handwerk pfuschen, ich habe es so verstanden:
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.

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Do 20. Nov 2008, 19:26

*Arme-verschränk

Yeppppp! Wie von Seelauer beschrieben.

... und das "pfuschen" kannst du streichen. :D

mfg OliverL

rok°!
Beiträge: 47
Registriert: Do 17. Nov 2005, 18:17
Kontaktdaten:

Beitrag von rok°! » Mo 24. Nov 2008, 08:09

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:

Code: Alles auswählen

Display-Typ:  	 Startartikel    Artikel    Startartikel & Artikel
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...

OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL » Mo 24. Nov 2008, 09:44

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" )

Gesperrt