Zufallsartikel ausgeben (wie angelegt)
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Zufallsartikel ausgeben (wie angelegt)
Hallo,
ich suche ein Zufalls-Artikelmodul!
Die Artikel sollen in das Layout reingeladen werden, wie es bereits beim Teaser, bzw. beim Article Include Input der fall ist. Das heißt diese Artikel sehen recht ackig aus, wenn Sie nichts ins Hauptlayout reingeladen werden. Sowas kann ich ja supergut mit Artikellisten oder besagten Article Include Input machen.
Allerdings soll jetzt aus einem Pool einer bestimmten Kategorie diese kleinen Artikel reingeladen werden.
Problem: Diese Artikel emthalten auch das Modul Bildergalerie und dieses kann ich ja leider nicht mit einer Artikl-Liste generieren, sondern nur Headline, Bild, Bild im Text und Text.
Also soll der Artikel so wie er ist mit Headline, Text und Bildergalerie einfach ausgegeben werden. Aber per Zufall.
Hat dort jemand einen Tipp für mich?
Viel Dank
MfG Steffen
ich suche ein Zufalls-Artikelmodul!
Die Artikel sollen in das Layout reingeladen werden, wie es bereits beim Teaser, bzw. beim Article Include Input der fall ist. Das heißt diese Artikel sehen recht ackig aus, wenn Sie nichts ins Hauptlayout reingeladen werden. Sowas kann ich ja supergut mit Artikellisten oder besagten Article Include Input machen.
Allerdings soll jetzt aus einem Pool einer bestimmten Kategorie diese kleinen Artikel reingeladen werden.
Problem: Diese Artikel emthalten auch das Modul Bildergalerie und dieses kann ich ja leider nicht mit einer Artikl-Liste generieren, sondern nur Headline, Bild, Bild im Text und Text.
Also soll der Artikel so wie er ist mit Headline, Text und Bildergalerie einfach ausgegeben werden. Aber per Zufall.
Hat dort jemand einen Tipp für mich?
Viel Dank
MfG Steffen
Re: Zufallsartikel ausgeben (wie angelegt)
Moin moin,
Ich denke nicht das es ein Modul gibt das andere Container included und diese dann auch noch richtig ausgibt.
Aber vielleicht ist das Modul eine Lösung für dich:
Modul: http://www.contenido-wiki.org/wiki/inde ... terleitung
Forum: http://forum.contenido.org/viewtopic.php?f=60&t=22841
mfg OliverL
Ich denke nicht das es ein Modul gibt das andere Container included und diese dann auch noch richtig ausgibt.
Aber vielleicht ist das Modul eine Lösung für dich:
Modul: http://www.contenido-wiki.org/wiki/inde ... terleitung
Forum: http://forum.contenido.org/viewtopic.php?f=60&t=22841
mfg OliverL
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo Oliver und vielen Dank für die Antwort.
Doch so ein Modul gibt es noch aus der 4.6.4 welches aber auch unter aktuellen Contenido-Versionen läuft.
Beispiel
Input
Output
Beispiel-Layout:
Also ähnlich wie der neue Teaser-Typ.
Dann legt man seinen zu inkludieren Artikel mit dem Template an, welches auf diesem Beispiel-Layout basiert und im richtigen Hauptlayout muss man das Modul angelegt haben, dann kann man anhand der Auswahlboxen seinen zu inkludiernden Artikel auswählen. Das klappt mit allem was zwischen <!--start:content--> und <!--end:content--> egal ob Text, Headline, Bildergalerie.
Schön wäre jetzt nur gewesen, wenn man nicht eine Kategorie und Artikel angibt, sondern nur eine Kategorie und dann per Zufall aus dieser kategorie immer einen Artikel anzeigt.
Übrigens das Weiterleitungsmodul ist klasse.
MfG Steffen
Doch so ein Modul gibt es noch aus der 4.6.4 welches aber auch unter aktuellen Contenido-Versionen läuft.
Beispiel
Input
Code: Alles auswählen
?><?php
/**
* $RCSfile$
*
* Description: Article Include Input
*
* @version 1.0.0
* @author Willi Man
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2003-12-18
* modified 2004-01-02
* modified 2005-08-05 Andreas Lindner
* }}
*
* $Id$
*/
#Get current settings
$name = "CMS_VAR[1]";
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
#Cat selector
echo buildCategorySelect($name, $cms_idcat);
$bDebug = false;
if ($bDebug)
echo "<pre>cat $cms_idcat catart $cms_idcatart client $client lang $lang <br>webpath ".$cfgClient[$client]['path']['htmlpath']."</pre>";
echo '<table cellpadding="0" cellspacing="0" border="0">';
#Article selector
echo '
<tr><td class="text_medium" style="padding:5px">'.mi18n("Artikel wählen").': </td></tr>
<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[2]" style="width:240px">';
echo '<option value="" selected>'.i18n("Please choose").'</option>';
if ($cms_idcat != "0" && strlen($cms_idcat) > 0) {
$sql = "SELECT
a.title AS title,
b.idcatart AS idcatart
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b
WHERE
b.idcat = '".$cms_idcat."' AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db->query($sql);
while ($db->next_record()) {
$catartid = $db->f('idcatart');
$title = $db->f('title');
if ($cms_idcatart != $catartid) {
echo '<option value="'.$catartid.'"> '.$title.'</option>';
} else {
echo '<option selected="selected" value="'.$catartid.'"> '.$title.'</option>';
}
}
}
echo '</select> <input type="image" src="images/submit.gif">';
echo '</td></tr></table>';
?><?php
Code: Alles auswählen
<?php
/**
* $RCSfile$
*
* Description: Article Include Output
*
* @version 1.0.0
* @author Willi Man
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2003-12-18
* modified 2004-01-02
* modified 2005-08-05 Andreas Lindner
* }}
*
* $Id$
*/
#Get current settings
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
$bDebug = false;
#Check data
$cms_idcat = (int)$cms_idcat;
$cms_idcatart = (int)$cms_idcatart;
if ($bDebug) {
echo "<pre> cat $cms_idcat catart $cms_idcatart</pre>";
}
if ($cms_idcat >= 0 && $cms_idcatart >= 0)
{
$bArticleAvailable = false;
# Get idcat, idcatart, idart and lastmodified from the database
$sql = "SELECT A.idart AS idart, A.idcat AS idcat, A.createcode AS createcode,
A.idcatart AS idcatart, B.lastmodified AS lastmodified
FROM ".$cfg["tab"]["cat_art"]." AS A, ".$cfg["tab"]["art_lang"]." AS B
WHERE
A.idart = B.idart AND
B.online = 1 AND ";
if ($cms_idcatart == 0)
{
$sql .= "A.idcat = '" . $cms_idcat . "' ORDER BY B.lastmodified DESC"; # Only idcat specified, get latest article of category
} else {
$sql .= "A.idcatart = '" . $cms_idcatart . "'"; # Article specified
}
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$bArticleAvailable = true;
$iIDCatArt = $db->f("idcatart");
$iIDCat = $db->f("idcat");
$iIDArt = $db->f("idart");
$iCreateCode = $db->f("createcode");
$sModified = $db->f("lastmodified");
}
$db->free();
# Check if category is online or protected
$sql = "SELECT public, visible
FROM " . $cfg["tab"]["cat_lang"] . "
WHERE idcat = '" . $iIDCat . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$iPublic = $db->f("public");
$iVisible = $db->f("visible");
$db->free();
# Check if article is online
# Not needed anymore, as only online articles are used
/* $sql = "SELECT online FROM " . $cfg["tab"]["art_lang"] . "
WHERE idart = '" . $cms_artid . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$online = $db->f("online");
$db->free(); */
# If the article is online and the according category is not protected and visible, include the article
if ($bArticleAvailable && $iPublic == 1 && $iVisible == 1)
{
# Check, if code creation is necessary
# Note, that createcode may be 0, but no code is available (all code for other languages will be deleted in
# front_content, if code for one language will be created). This "bug" may be fixed in future releases.
if ($iCreateCode == 0)
{
$sql = "SELECT count(*) AS CodeCount FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
if ($db->f("CodeCount") == 0) {
$iCreateCode = 1;
}
$db->free();
}
# Create code if necessary
if ($iCreateCode == 1)
{
cInclude('includes', 'functions.con.php');
cInclude('includes', 'functions.tpl.php');
cInclude('includes', 'functions.mod.php');
conGenerateCode($iIDCat, $iIDArt, $lang, $client);
}
# Get code from database and execute it
$sql = "SELECT code FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$sCode = stripslashes($db->f("code"));
$db->free();
ob_start();
eval("?>
".$sCode."
<?php
");
$sCode = ob_get_contents();
# Clean buffer
ob_end_clean();
$iStartPos = strpos($sCode, "<!--start:content-->");
$iEndPos = strpos($sCode, "<!--end:content-->");
$iDiffLen = $iEndPos - $iStartPos;
$sCode = substr($sCode, $iStartPos, $iDiffLen);
echo $sCode;
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
}
}
?>
Code: Alles auswählen
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Include Text</title>
<link rel="stylesheet" href="css/styles.css" type="text/css">
</head>
<body>
<!--start:content-->
<div class="box">
<container id="1000" name="Text" types="Content" mode="fixed" default="Text">Text</container>
</div>
<!--end:content-->
</body>
</html>
Dann legt man seinen zu inkludieren Artikel mit dem Template an, welches auf diesem Beispiel-Layout basiert und im richtigen Hauptlayout muss man das Modul angelegt haben, dann kann man anhand der Auswahlboxen seinen zu inkludiernden Artikel auswählen. Das klappt mit allem was zwischen <!--start:content--> und <!--end:content--> egal ob Text, Headline, Bildergalerie.
Schön wäre jetzt nur gewesen, wenn man nicht eine Kategorie und Artikel angibt, sondern nur eine Kategorie und dann per Zufall aus dieser kategorie immer einen Artikel anzeigt.
Übrigens das Weiterleitungsmodul ist klasse.
MfG Steffen
Re: Zufallsartikel ausgeben (wie angelegt)
Poste morgen mal hier rein (damit ich es nicht vergesse
).
Dann wurschtel ich die Sachen zusammen.
mfg OliverL

Dann wurschtel ich die Sachen zusammen.
mfg OliverL
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo OliverL,
ich sollte hier heute noch einmal posten, dass mache ich hiermit
Ich habe gestern selber noch versucht die beiden Module zu kombinieren, aber leider ohne Erfolg.
MfG Steffen
ich sollte hier heute noch einmal posten, dass mache ich hiermit

Ich habe gestern selber noch versucht die beiden Module zu kombinieren, aber leider ohne Erfolg.
MfG Steffen
Re: Zufallsartikel ausgeben (wie angelegt)
siehste! ich habs schon wieder vergessen gehabt 
so hab mal einen neuen Output-Code für dich.
Die Random Funktion wird aktiviert wenn du in den Konfigurationen den Artikel nicht angibst.
Siehe erste IF: hier muss es eine idcat geben aber es darf keine idcatart geben.
Wurde getestet (s.u.).
OUTPUT:
mfg OliverL

so hab mal einen neuen Output-Code für dich.
Die Random Funktion wird aktiviert wenn du in den Konfigurationen den Artikel nicht angibst.
Siehe erste IF: hier muss es eine idcat geben aber es darf keine idcatart geben.
Wurde getestet (s.u.).
OUTPUT:
Code: Alles auswählen
<?php
/**
* $RCSfile$
*
* Description: Article Include Output
*
* @version 1.0.0
* @author Willi Man
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2003-12-18
* modified 2004-01-02
* modified 2005-08-05 Andreas Lindner
* }}
*
* $Id$
*/
#Get current settings
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
$bDebug = false;
#Check data
$cms_idcat = (int)$cms_idcat;
$cms_idcatart = (int)$cms_idcatart;
/*
* RAMDOM FUNCTION - START
*/
$randomfunction = false;
if( !$cms_idcatart && $cms_idcat )
{
$randomfunction = true;
$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 = ".$cms_idcat." "
. "AND ARTLANG.idlang = '".$lang."' "
. "AND tblData.idartlang = ARTLANG.idartlang "
. "AND CATLANG.idlang = ARTLANG.idlang "
. "AND CATLANG.idcat = CATART.idcat "
. "AND ARTLANG.idart = CATART.idart ";
$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();
$cms_idcatart = $db->f("idcatart");
}
}
/*
* RAMDOM FUNCTION - START
*/
if ($bDebug) {
echo "<pre> cat $cms_idcat catart $cms_idcatart - Random-Function:".($randomfunction ? 'yes' : 'no')."</pre>";
}
if ($cms_idcat >= 0 && $cms_idcatart >= 0)
{
$bArticleAvailable = false;
# Get idcat, idcatart, idart and lastmodified from the database
$sql = "SELECT A.idart AS idart, A.idcat AS idcat, A.createcode AS createcode,
A.idcatart AS idcatart, B.lastmodified AS lastmodified
FROM ".$cfg["tab"]["cat_art"]." AS A, ".$cfg["tab"]["art_lang"]." AS B
WHERE
A.idart = B.idart AND
B.online = 1 AND ";
if ($cms_idcatart == 0)
{
$sql .= "A.idcat = '" . $cms_idcat . "' ORDER BY B.lastmodified DESC"; # Only idcat specified, get latest article of category
} else {
$sql .= "A.idcatart = '" . $cms_idcatart . "'"; # Article specified
}
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$bArticleAvailable = true;
$iIDCatArt = $db->f("idcatart");
$iIDCat = $db->f("idcat");
$iIDArt = $db->f("idart");
$iCreateCode = $db->f("createcode");
$sModified = $db->f("lastmodified");
}
$db->free();
# Check if category is online or protected
$sql = "SELECT public, visible
FROM " . $cfg["tab"]["cat_lang"] . "
WHERE idcat = '" . $iIDCat . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$iPublic = $db->f("public");
$iVisible = $db->f("visible");
$db->free();
# Check if article is online
# Not needed anymore, as only online articles are used
/* $sql = "SELECT online FROM " . $cfg["tab"]["art_lang"] . "
WHERE idart = '" . $cms_artid . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$online = $db->f("online");
$db->free(); */
# If the article is online and the according category is not protected and visible, include the article
if ($bArticleAvailable && $iPublic == 1 && $iVisible == 1)
{
# Check, if code creation is necessary
# Note, that createcode may be 0, but no code is available (all code for other languages will be deleted in
# front_content, if code for one language will be created). This "bug" may be fixed in future releases.
if ($iCreateCode == 0)
{
$sql = "SELECT count(*) AS CodeCount FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
if ($db->f("CodeCount") == 0) {
$iCreateCode = 1;
}
$db->free();
}
# Create code if necessary
if ($iCreateCode == 1)
{
cInclude('includes', 'functions.con.php');
cInclude('includes', 'functions.tpl.php');
cInclude('includes', 'functions.mod.php');
conGenerateCode($iIDCat, $iIDArt, $lang, $client);
}
# Get code from database and execute it
$sql = "SELECT code FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$sCode = stripslashes($db->f("code"));
$db->free();
ob_start();
eval("?>
".$sCode."
<?php
");
$sCode = ob_get_contents();
# Clean buffer
ob_end_clean();
$iStartPos = strpos($sCode, "<!--start:content-->");
$iEndPos = strpos($sCode, "<!--end:content-->");
$iDiffLen = $iEndPos - $iStartPos;
$sCode = substr($sCode, $iStartPos, $iDiffLen);
echo $sCode;
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
}
}
?>
mfg OliverL
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Vielen Dank Oliver,
das klappt auf Anhieb wunderbar! Das freut mich wirklich sehr. Vielen lieben Dank. Klasse,
MfG Steffen
das klappt auf Anhieb wunderbar! Das freut mich wirklich sehr. Vielen lieben Dank. Klasse,
MfG Steffen
Re: Zufallsartikel ausgeben (wie angelegt)
Das freut mich.
Hab auch gleich den Post verschoben
mfg OliverL
Hab auch gleich den Post verschoben

mfg OliverL
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo Oliver,
eine Sache ist mir jetzt doch aufgefallen.
Ich lade ja jetzt per Zufall oder mit direkterAuswahl immer mal eine Bildergalerie rein.
Mit dem normalen "Article Include" klappt dass, aber wenn jetzt per Zufall eine Bildergalerie ausgegeben wird, erscheint folgende Fehlermeldung zusätzlich:
Wenn ich besagte Bildergalerie dirket als Artikel aufrufe kommt keine Fehlermeldung. Wenn ich besagte Bildergalerie über das normale "Article Include"-Modul aufrufe kommt ebenfalls keine Fehlermeldung.
Vielen lieben Dank.
MfG Steffen
PS: Das ist besagt Funktion:
eine Sache ist mir jetzt doch aufgefallen.
Ich lade ja jetzt per Zufall oder mit direkterAuswahl immer mal eine Bildergalerie rein.
Mit dem normalen "Article Include" klappt dass, aber wenn jetzt per Zufall eine Bildergalerie ausgegeben wird, erscheint folgende Fehlermeldung zusätzlich:
Gibt es da irgendwelche Konflikte die das verursachen?Fatal error: Cannot redeclare ig_getreadablefilesize() (previously declared in C:\Programme\zampp\htdocs\test\cms\front_content.php(985) : eval()'d code(856) : eval()'d code:313) in C:\Programme\zampp\htdocs\test\cms\front_content.php(985) : eval()'d code(1028) : eval()'d code on line 336
Wenn ich besagte Bildergalerie dirket als Artikel aufrufe kommt keine Fehlermeldung. Wenn ich besagte Bildergalerie über das normale "Article Include"-Modul aufrufe kommt ebenfalls keine Fehlermeldung.
Vielen lieben Dank.
MfG Steffen
PS: Das ist besagt Funktion:
Code: Alles auswählen
function ig_GetReadableFileSize($path) {
$filesize = filesize($path);
$unit = "bytes";
if( $filesize > 1024 ) {
$filesize = ($filesize / 1024);
$unit = "kB";
}
if( $filesize > 1024 ) {
$filesize = ($filesize / 1024);
$unit = "MB";
}
if( $filesize > 1024 ) {
$filesize = ($filesize / 1024);
$unit = "GB";
}
if( $filesize > 1024 ) {
$filesize = ($filesize / 1024);
$unit = "TB";
}
$filesize = round($filesize, 0);
return $filesize." ".$unit;
}
Re: Zufallsartikel ausgeben (wie angelegt)
mmmmhhh ...
würde jetzt quick-n-dirty das sagen: einfach den frolgenden Code um die Funktion
mfg oli
würde jetzt quick-n-dirty das sagen: einfach den frolgenden Code um die Funktion
Code: Alles auswählen
if( !function_exists('ig_GetReadableFileSize') ) {
...
}
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo Oliver L,
danke für die Antwort, aber das ging auch nicht. Ich habe mir noch mal mein Modul angeschaut und ich hatte eine Änderung vorgenommen, die hat denn Fehler verursacht. Somit ist das Modul wie du es gepostet hast perfekt und funktionert.
MfG
Steffen
danke für die Antwort, aber das ging auch nicht. Ich habe mir noch mal mein Modul angeschaut und ich hatte eine Änderung vorgenommen, die hat denn Fehler verursacht. Somit ist das Modul wie du es gepostet hast perfekt und funktionert.
MfG
Steffen
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Zufallsartikel, Standard-Artikel, ausgewählten ausgeben
Hier mal kurz mein Modul für die Allgemeinheit!
Mit dem Modul kann man in der Template-Konfiguration einen Artikel im Layout anzeigen lassen (entweder einen Standard-Artikel, einen individuell ausgewählten oder einen Zufallsartikel aus der Kategorie).
Wichtig dabei ist natürlich, das diese kleinen Artikel in etwa nur aus einem einfachen Layout bestehen.
Hier kann man dann indivduell seine Container zuweisen.
Und das Modul einfach in sein Haupt-Template packen:
Input
Output
Wichtig nochmal: Im Output findet man folgende zwei Zeilen: diese muss man natürlich mit seinem Standard-Artikel ersetzen.
MfG Steffen und Danke noch mal OliverL
Mit dem Modul kann man in der Template-Konfiguration einen Artikel im Layout anzeigen lassen (entweder einen Standard-Artikel, einen individuell ausgewählten oder einen Zufallsartikel aus der Kategorie).
Wichtig dabei ist natürlich, das diese kleinen Artikel in etwa nur aus einem einfachen Layout bestehen.
Code: Alles auswählen
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Include Text</title>
<link rel="stylesheet" href="css/styles.css" type="text/css">
</head>
<body>
<!--start:content-->
<container id="555" name="TeaserBox flexibel 1" default="" mode="fixed">TeaserBox flexibel 1</container>
<container id="556" name="TeaserBox flexibel 2" default="" mode="fixed">TeaserBox flexibel 2</container>
<container id="557" name="TeaserBox flexibel 3" default="" mode="fixed">TeaserBox flexibel 3</container>
<!--end:content-->
</body>
</html>
Und das Modul einfach in sein Haupt-Template packen:
Input
Code: Alles auswählen
?><?php
$Showroomoption="CMS_VALUE[9922]";
echo '<table cellspacing="0" cellpadding="2" border="0" width="100%"><tr><td>'.mi18n("Bitte wählen Sie ob ein bestimmter Showroom angezeigt werden soll <br />(individuelle Auswahl - dann bitte in der Auswahlboxen den Gewünschten auswählen), <br /> ob der Haupt-Showroom oder eine zufälliger Showroom aus dem Pool angezeigt werden soll.").'</td></tr><tr><td>'."\n";
if ($Showroomoption== "zufaellig") {
echo '<input type="radio" name="CMS_VAR[9922]" value="zufaellig" checked>'.mi18n("Zufällig").' <input type="radio" name="CMS_VAR[9922]" value="standard">'.mi18n("Standard").' <input type="radio" name="CMS_VAR[9922]" value="auswahl">'.mi18n("individuelle Auswahl").'';
} else if ($Showroomoption== "standard") {
echo '<input type="radio" name="CMS_VAR[9922]" value="zufaellig">'.mi18n("Zufällig").' <input type="radio" name="CMS_VAR[9922]" value="standard" checked>'.mi18n("Standard").' <input type="radio" name="CMS_VAR[9922]" value="auswahl">'.mi18n("individuelle Auswahl").'';
} else {
echo '<input type="radio" name="CMS_VAR[9922]" value="zufaellig">'.mi18n("Zufällig").' <input type="radio" name="CMS_VAR[9922]" value="standard">'.mi18n("Standard").' <input type="radio" name="CMS_VAR[9922]" value="auswahl" checked>'.mi18n("individuelle Auswahl").'';
}
echo '</td></tr>'."\n";
echo '</table>'."\n";
/**
* $RCSfile$
*/
#Get current settings
$name = "CMS_VAR[1]";
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
#Cat selector
echo buildCategorySelect($name, $cms_idcat);
$bDebug = false;
if ($bDebug)
echo "<pre>cat $cms_idcat catart $cms_idcatart client $client lang $lang <br>webpath ".$cfgClient[$client]['path']['htmlpath']."</pre>";
echo '<table cellpadding="0" cellspacing="0" border="0">';
#Article selector
echo '
<tr><td class="text_medium" style="padding:5px">'.mi18n("Artikel wählen").': </td></tr>
<tr><td class="text_medium" style="padding:5px">';
echo '<select name="CMS_VAR[2]" style="width:240px">';
echo '<option value="" selected>'.i18n("Please choose").'</option>';
if ($cms_idcat != "0" && strlen($cms_idcat) > 0) {
$sql = "SELECT
a.title AS title,
b.idcatart AS idcatart
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b
WHERE
b.idcat = '".$cms_idcat."' AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db->query($sql);
while ($db->next_record()) {
$catartid = $db->f('idcatart');
$title = $db->f('title');
if ($cms_idcatart != $catartid) {
echo '<option value="'.$catartid.'"> '.$title.'</option>';
} else {
echo '<option selected="selected" value="'.$catartid.'"> '.$title.'</option>';
}
}
}
echo '</select> <input type="image" src="images/submit.gif">';
echo '</td></tr></table>';
?><?php
Code: Alles auswählen
<?php
$Showroomoption="CMS_VALUE[9922]";
if ($Showroomoption == "zufaellig") {
#Get current settings
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "";
$bDebug = false;
#Check data
$cms_idcat = (int)$cms_idcat;
$cms_idcatart = (int)$cms_idcatart;
/*
* RAMDOM FUNCTION - START
*/
$randomfunction = false;
if( !$cms_idcatart && $cms_idcat )
{
$randomfunction = true;
$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 = ".$cms_idcat." "
. "AND ARTLANG.idlang = '".$lang."' "
. "AND tblData.idartlang = ARTLANG.idartlang "
. "AND CATLANG.idlang = ARTLANG.idlang "
. "AND CATLANG.idcat = CATART.idcat "
. "AND ARTLANG.idart = CATART.idart ";
$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();
$cms_idcatart = $db->f("idcatart");
}
}
/*
* RAMDOM FUNCTION - START
*/
if ($bDebug) {
echo "<pre> cat $cms_idcat catart $cms_idcatart - Random-Function:".($randomfunction ? 'yes' : 'no')."</pre>";
}
if ($cms_idcat >= 0 && $cms_idcatart >= 0)
{
$bArticleAvailable = false;
# Get idcat, idcatart, idart and lastmodified from the database
$sql = "SELECT A.idart AS idart, A.idcat AS idcat, A.createcode AS createcode,
A.idcatart AS idcatart, B.lastmodified AS lastmodified
FROM ".$cfg["tab"]["cat_art"]." AS A, ".$cfg["tab"]["art_lang"]." AS B
WHERE
A.idart = B.idart AND
B.online = 1 AND ";
if ($cms_idcatart == 0)
{
$sql .= "A.idcat = '" . $cms_idcat . "' ORDER BY B.lastmodified DESC"; # Only idcat specified, get latest article of category
} else {
$sql .= "A.idcatart = '" . $cms_idcatart . "'"; # Article specified
}
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$bArticleAvailable = true;
$iIDCatArt = $db->f("idcatart");
$iIDCat = $db->f("idcat");
$iIDArt = $db->f("idart");
$iCreateCode = $db->f("createcode");
$sModified = $db->f("lastmodified");
}
$db->free();
# Check if category is online or protected
$sql = "SELECT public, visible
FROM " . $cfg["tab"]["cat_lang"] . "
WHERE idcat = '" . $iIDCat . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$iPublic = $db->f("public");
$iVisible = $db->f("visible");
$db->free();
# Check if article is online
# Not needed anymore, as only online articles are used
/* $sql = "SELECT online FROM " . $cfg["tab"]["art_lang"] . "
WHERE idart = '" . $cms_artid . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$online = $db->f("online");
$db->free(); */
# If the article is online and the according category is not protected and visible, include the article
if ($bArticleAvailable && $iPublic == 1 && $iVisible == 1)
{
# Check, if code creation is necessary
# Note, that createcode may be 0, but no code is available (all code for other languages will be deleted in
# front_content, if code for one language will be created). This "bug" may be fixed in future releases.
if ($iCreateCode == 0)
{
$sql = "SELECT count(*) AS CodeCount FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
if ($db->f("CodeCount") == 0) {
$iCreateCode = 1;
}
$db->free();
}
# Create code if necessary
if ($iCreateCode == 1)
{
cInclude('includes', 'functions.con.php');
cInclude('includes', 'functions.tpl.php');
cInclude('includes', 'functions.mod.php');
conGenerateCode($iIDCat, $iIDArt, $lang, $client);
}
# Get code from database and execute it
$sql = "SELECT code FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$sCode = stripslashes($db->f("code"));
$db->free();
ob_start();
eval("?>
".$sCode."
<?php
");
$sCode = ob_get_contents();
# Clean buffer
ob_end_clean();
$iStartPos = strpos($sCode, "<!--start:content-->");
$iEndPos = strpos($sCode, "<!--end:content-->");
$iDiffLen = $iEndPos - $iStartPos;
$sCode = substr($sCode, $iStartPos, $iDiffLen);
echo $sCode;
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
}
}
}
else if (($Showroomoption == "standard") || ($Showroomoption == "auswahl")) {
if ($Showroomoption == "standard") {
$cms_idcat = "4";
$cms_idcatart = "2";
} else {
$cms_idcat = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
};
$bDebug = false;
#Check data
$cms_idcat = (int)$cms_idcat;
$cms_idcatart = (int)$cms_idcatart;
if ($bDebug) {
echo "<pre> cat $cms_idcat catart $cms_idcatart</pre>";
}
if ($cms_idcat >= 0 && $cms_idcatart >= 0)
{
$bArticleAvailable = false;
# Get idcat, idcatart, idart and lastmodified from the database
$sql = "SELECT A.idart AS idart, A.idcat AS idcat, A.createcode AS createcode,
A.idcatart AS idcatart, B.lastmodified AS lastmodified
FROM ".$cfg["tab"]["cat_art"]." AS A, ".$cfg["tab"]["art_lang"]." AS B
WHERE
A.idart = B.idart AND
B.online = 1 AND ";
if ($cms_idcatart == 0)
{
$sql .= "A.idcat = '" . $cms_idcat . "' ORDER BY B.lastmodified DESC"; # Only idcat specified, get latest article of category
} else {
$sql .= "A.idcatart = '" . $cms_idcatart . "'"; # Article specified
}
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$bArticleAvailable = true;
$iIDCatArt = $db->f("idcatart");
$iIDCat = $db->f("idcat");
$iIDArt = $db->f("idart");
$iCreateCode = $db->f("createcode");
$sModified = $db->f("lastmodified");
}
$db->free();
# Check if category is online or protected
$sql = "SELECT public, visible
FROM " . $cfg["tab"]["cat_lang"] . "
WHERE idcat = '" . $iIDCat . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$iPublic = $db->f("public");
$iVisible = $db->f("visible");
$db->free();
# Check if article is online
# Not needed anymore, as only online articles are used
/* $sql = "SELECT online FROM " . $cfg["tab"]["art_lang"] . "
WHERE idart = '" . $cms_artid . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
$online = $db->f("online");
$db->free(); */
# If the article is online and the according category is not protected and visible, include the article
if ($bArticleAvailable && $iPublic == 1 && $iVisible == 1)
{
# Check, if code creation is necessary
# Note, that createcode may be 0, but no code is available (all code for other languages will be deleted in
# front_content, if code for one language will be created). This "bug" may be fixed in future releases.
if ($iCreateCode == 0)
{
$sql = "SELECT count(*) AS CodeCount FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
$db->next_record();
if ($db->f("CodeCount") == 0) {
$iCreateCode = 1;
}
$db->free();
}
# Create code if necessary
if ($iCreateCode == 1)
{
cInclude('includes', 'functions.con.php');
cInclude('includes', 'functions.tpl.php');
cInclude('includes', 'functions.mod.php');
conGenerateCode($iIDCat, $iIDArt, $lang, $client);
}
# Get code from database and execute it
$sql = "SELECT code FROM " . $cfg["tab"]["code"] . "
WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
if ($bDebug)
{
echo "<pre>";
print_r($sql);
echo "</pre>";
}
$db->query($sql);
if ($db->next_record())
{
$sCode = stripslashes($db->f("code"));
$db->free();
ob_start();
eval("?>
".$sCode."
<?php
");
$sCode = ob_get_contents();
# Clean buffer
ob_end_clean();
$iStartPos = strpos($sCode, "<!--start:content-->");
$iEndPos = strpos($sCode, "<!--end:content-->");
$iDiffLen = $iEndPos - $iStartPos;
$sCode = substr($sCode, $iStartPos, $iDiffLen);
echo "";
echo $sCode ;
echo "";
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
}
}
}
?>
Code: Alles auswählen
$cms_idcat = "4";
$cms_idcatart = "2";
MfG Steffen und Danke noch mal OliverL
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo,
ich würde jetzt noch gerne immer den Link zu den angezeigten Artikel ausgeben lassen.
Wie geht das?
Ich habe versucht in diesem Bereich den Link ausgeben zu lassen:
Leider kein Erfolg: mit CMS_RAWLINK und CMS_LINK ging es nicht und dann hatte ich noch folgendes versucht, aber das hat auch nicht gefruchtet:
Kann man da irgendwas mit Contenido_Url:: machen oder gibt es da eine einfachere Variante?
Vielen Dank
MfG Steffen
ich würde jetzt noch gerne immer den Link zu den angezeigten Artikel ausgeben lassen.
Wie geht das?
Ich habe versucht in diesem Bereich den Link ausgeben zu lassen:
Code: Alles auswählen
$sCode = substr($sCode, $iStartPos, $iDiffLen);
echo "";
echo $sCode ;
echo "AUSGABE DES LINKS ";
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
Kann man da irgendwas mit Contenido_Url:: machen oder gibt es da eine einfachere Variante?
Vielen Dank
MfG Steffen
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Also ich habe eine Lösung für die Link-Ausgabe, welche aber wahrscheinlich nicht das Optimalste ist:
BZW. geht das auch mit ModeRewrite so:
MfG
Code: Alles auswählen
$sCode = substr($sCode, $iStartPos, $iDiffLen);
$aParams = array('idcat' => $cms_idcat, 'idart' => $iIDArt, 'client' => $client, 'lang' => $lang);
$link1 = "front_content.php?idart=";
$link2 = $iIDArt;
echo "";
echo $sCode ;
echo "<a href=\"$link1$link2\">DER LINK</a> ";
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
Code: Alles auswählen
$sCode = substr($sCode, $iStartPos, $iDiffLen);
$aParams = array('idcat' => $cms_idcat, 'idart' => $iIDArt, 'client' => $client, 'lang' => $lang);
$link = Contenido_Url::getInstance()->build($aParams, true);
echo $sCode;
echo "<a href=\"$link\" title=\"\">more</a>";
} else {
echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
}
-
- Beiträge: 847
- Registriert: Mi 14. Dez 2005, 16:15
- Wohnort: Königs Wusterhausen bei Berlin
- Kontaktdaten:
Re: Zufallsartikel ausgeben (wie angelegt)
Hallo Oliver,
ich habe doch noch einmal eine Frage.
Ich habe das Gefühl, dass irgendwie nicht alle Artikel in den Pool aufgenommen werden, aus denen dann der Zufallsartikel generiert wird, owohl diese alle in der Kategorie liegen und alle gleich sind (gleiches Template, Inhalte ausgefüllt, alle online, kein Startartikel).
Ist das jetzt wirklich Zufall?! Kann ich im Output was ändern, dass der Zufallsgenerator es irgendwie anderes berechnet? Vielleicht feine oder gröber?
Vielen Dank
MfG Steffen
ich habe doch noch einmal eine Frage.
Ich habe das Gefühl, dass irgendwie nicht alle Artikel in den Pool aufgenommen werden, aus denen dann der Zufallsartikel generiert wird, owohl diese alle in der Kategorie liegen und alle gleich sind (gleiches Template, Inhalte ausgefüllt, alle online, kein Startartikel).
Ist das jetzt wirklich Zufall?! Kann ich im Output was ändern, dass der Zufallsgenerator es irgendwie anderes berechnet? Vielleicht feine oder gröber?
Vielen Dank
MfG Steffen
Zuletzt geändert von derSteffen am Fr 1. Okt 2010, 09:54, insgesamt 2-mal geändert.