w3concepts_alist_v1 Link übernehmen?

Gesperrt
nomore
Beiträge: 130
Registriert: Sa 15. Mai 2004, 19:38
Kontaktdaten:

w3concepts_alist_v1 Link übernehmen?

Beitrag von nomore »

Hallo zusammen,

ich benutze folgende Artikelliste:w3concepts_alist_v1

Diese Artikelliste liest die Head und Subheadline aus, wobei die Subheadline den Link zum eigentlichen Artikel enthält. Wenn ich aber in der Subheadline einen Link einbinden will, wird dieser nicht in die Artikelliste übernommen, sondern nur als Text angezeigt. Ist es möglich einen aktiven Link in der Subheadline der Artikelliste zu übernehmen? Über eine kleine Hilfe würde ich mich riesig freuen.

Hier der Input

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : w3concepts_alist_v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
************************************************/


$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[0]\">";

if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
} else {
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}

$sql = "
SELECT a.idcat, a.level, c.name
FROM {$cfg['tab']['cat_tree']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat_lang']} AS c
WHERE
a.idcat = b.idcat
AND b.idcat = c.idcat
AND c.idlang='$lang'
AND b.idclient='$client'
AND c.visible = 1
ORDER BY a.idtree
";

$db->query($sql);

while ($db->next_record()) {
$spaces = "|";
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
$spaces = $spaces . "--";
}
$spaces .= ">";

if ($selected == $db->f("idcat")) {
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
}
}

echo "</select></td></tr>";

echo "<tr><td>Anzahl Artikel je Seite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"3\" /></td>";

echo "<tr><td>Startartikel anzeigen?</td>";
$startartikel = "CMS_VALUE[2]";
if ($startartikel != '') {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\" checked=\"checked\"/></td>";
} else {
echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\"/></td>";
}

echo "<tr><td>Anzahl angezeigte Zeichen der Subheadline:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>";

echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"15\" /></td>";

echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"15\" /></td>";

echo "<tr><td>Thumbnail-Breite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\" size=\"5\" /></td>";

echo "<tr><td>Artikel anzeigen bis:</td>";
echo "<td><select name=\"CMS_VAR[6]\">";
$ebene = "CMS_VALUE[6]";
for ($i=0;$i>-3;$i--) {
if ($i == $ebene) {
echo"<option value=\"$i\" selected=\"selected\">Ebene $i</option>";
} else {
echo"<option value=\"$i\">Ebene $i</option>";
}
}

echo "</table>";


Und hier der Output

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : w3concepts_alist_v1
* Author : Andreas Kummer
* Copyright : mumprecht & kummer w3concepts
* Created : 06-05-2004
* Modified : 06-05-2004
************************************************/

// manuelle konfiguration des moduls
$uploadpfad = "/cms/upload/"; // relativ zum root-verzeichnis (mit slash am anfang und am ende)
$thumbnailpfad = "/cms/upload/bilder/auto_thumbnails/"; //relativ zum root-verzeichnis (mit slash am anfang und am ende)

// konfiguration

$categorie = "CMS_VALUE[0]";

$angezeigte_anzahl = "CMS_VALUE[1]";
if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10;

$startartikel = "CMS_VALUE[2]";
if ($startartikel == '') $startartikel = false;

$subheadline = "CMS_VALUE[3]";
if ($subheadline == '') $subheadline = 200;

$navigationslink['previous'] = "CMS_VALUE[4]";
if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]';

$navigationslink['next'] = "CMS_VALUE[5]";
if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]';

$ebene = "CMS_VALUE[6]";

$bildbreite = "CMS_VALUE[7]";

$limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);

$db = new DB_Contenido;
$db2 = new DB_Contenido;

// wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht
$nurstartartikel = ($startartikel)?(''):('AND d.is_start = 0');

// liest die anzahl betroffener artikel aus der datenbank
switch ($ebene) {
case -2:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
case -1:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
case 0:
$sql_1 = "
SELECT count(*) AS anzahl
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
";
$sql_2 = "
SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
WHERE
(
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
";
break;
}

$db->query($sql_1);
$db->next_record();
$anzahl_artikel = $db->f("anzahl");

$db->query($sql_2);

echo '<p><table cellpadding="0" cellspacing="0" style="width:100%"><tr style="height:1px;"><td></td><td style="width:200px;"></td><td style="width:50px;"></td></tr>';

while ($db->next_record()) {

$sql = "
SELECT a.value, a.typeid, b.type, c.filename, c.dirname FROM {$cfg['tab']['content']} AS a
LEFT JOIN {$cfg['tab']['type']} AS b ON a.idtype = b.idtype
LEFT JOIN {$cfg['tab']['upl']} AS c ON a.value = c.idupl
WHERE
a.idartlang = ".$db->f("idartlang")."
AND (
b.type = 'CMS_HTMLHEAD'
OR b.type = 'CMS_IMG'
)
ORDER BY b.type, a.typeid ASC
";

// print "<p>$sql</p>";

$db2->query($sql);
$db2->next_record();

$link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));

echo "<tr><td colspan=\"2\" class=\"artlist-headline\"><a href=\"$link\" class=\"artlist-headlinelink\">".urldecode($db2->f("value"))."</a></td>";
echo "<td class=\"artlist-date\">".$db->f("erstellungsdatum")."</td></tr>";

$db2->next_record();


// die subheadline auf die gewünschte länge reduzieren (trennung nur
// nach bzw. vor einem ganzen wort
if (strlen($db2->f("value")) > $subheadline) {
$newsubheadline = '';
$worte = explode (" ",strip_tags(urldecode($db2->f("value"))));
$zulang = false;
foreach ($worte as $wort) {
if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
$newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
}
$newsubheadline .= "...";
} else {
$newsubheadline = strip_tags(urldecode($db2->f("value")));
}

$bild_vorhanden = false;
while ($db2->next_record()) {
if ($db2->f("type") == 'CMS_IMG' && $db2->f("typeid") == 1) {
$bilddateiname = "{$thumbnailpfad}{$bildbreite}_".$db2->f("value").".jpg";
if (!file_exists($cfg['path']['frontend'].$bilddateiname)) {

$src_image_size = getimagesize($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));

$bildhoehe = round($src_image_size[1] * $bildbreite / $src_image_size[0]);
if ($bildhoehe > $bildbreite) {
$bildhoehe = $bildbreite;
$bildbreite = round($src_image_size[0] * $bildhoehe / $src_image_size[1]);
}

$dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);

if ($src_image_size[2] == 1) {
$src_im = imagecreatefromGIF($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
} elseif ($src_image_size[2] == 2) {
$src_im = @ImageCreateFromJPEG($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
} else {
$src_im = imagecreatefromgd($cfg['path']['frontend'].$uploadpfad.$db2->f("dirname").$db2->f("filename"));
}

imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
imagejpeg ($dst_im,$cfg['path']['frontend'].$bilddateiname,100);
}
$bild_vorhanden = true;
}
}

if ($bild_vorhanden) {
$width = "CMS_VALUE[7]";
$width += 5;
echo "<tr><td class=\"artlist-subheadline\" style=\"width:{$width}px;\"><a href=\"$link\"><img src=\"$bilddateiname\" /></a></td><td class=\"artlist-subheadline\" colspan=\"2\">$newsubheadline</td></tr>";
} else {
echo "<tr><td class=\"artlist-subheadline\" colspan=\"3\">$newsubheadline</td></tr>";
}

}

echo '</table>';

if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) {
echo '<table cellpadding="0" cellspacing="0" style="width:100%"><tr>';
if ($limit > 0) {
$displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0);
echo "<td style=\"text-align:left\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>";
} else {
echo '<td>&nbsp;</td>';
}
if ($anzahl_artikel > $limit + $angezeigte_anzahl) {
$displaylimit = $limit + $angezeigte_anzahl;
echo "<td style=\"text-align:right\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>";
} else {
echo '<td>&nbsp;</td>';
}
echo '</tr></table></p>';
}
?>

Irgendwann läuft alles, fragt sich nur wann,
und wohin! :-)
ConTemplates.de
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

um die subheadline zu kürzen, muss der html-code entfernt werden. das geschieht in folgender zeile:

Code: Alles auswählen

$worte = explode (" ",strip_tags(urldecode($db2->f("value")))); 
mit der funktion

Code: Alles auswählen

strip_tags(); 
du kannst das strip_tags entfernen. allerdings besteht einfach das risiko, dass ungültiger html-code entsteht, weil die trennung mit durch tags verläuft oder tags offen lässt.

am besten du verzichtest einfach ganz auf die kürzung und gibst die subheadline ungekürzt aus.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
nomore
Beiträge: 130
Registriert: Sa 15. Mai 2004, 19:38
Kontaktdaten:

Beitrag von nomore »

Vielen Dank erst einmal für die rasche Antwort.

Irgendwie funzt das ganze nicht :-(

Ich versuche das ganze etwas näher zu erklären.
Ich muss auf der Seite Aushänge veröffentlichen. Die Aushänge liegen im PDF Format vor, und werden über einen Link im Artikel zur Verfügung gestellt. Der Artikel läuft zeitgesteuert, und wird nach Ablauf in ein Archiv verschoben.

Und da ich eine Übersicht der aktuellen Aushänge auf der Seite ausgeben muss, habe ich logischerweise für die Artikelliste entschieden, weil es so möglich ist, Aushänge eben zeitgesteuert zu verschieben um sie aus der Übersicht der aktuellen Aushänge in ein Archiv zu verschieben.

Soweit so gut. Nun ist es aber so, das der User einmal auf den Link in der Artikelliste klicken muß um den Artikel zu öffnen, in dem der Link zum PDF Dokument liegt, den er ebenfalls anklicken muß, um das eigentliche Dokument zu öffnen.

Deshalb will ich den Link zu dem PDF Dokument in die Subheadline einbinden, das der User die Möglichkeit hat, das PDF Dokument direkt (_blank) aus der Artikelliste herraus zu öffnen.
Irgendwann läuft alles, fragt sich nur wann,
und wohin! :-)
ConTemplates.de
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

das würde ich anders lösen:

(1) tabelle in mysql anlegen mit den feldern pk, pfad, publikationstart, publikationende

(2) anstatt artikelliste einfach ein kleines modul machen, das die entsprechende tabelle abfragt und den pfad zum pdf ausgibt, sofern heute <= publikationende und heute >= publikationstart

pflege der entsprechenden daten direkt in phpmyadmin oder über konsole.

dürfte wesentlich einfacher sein, oder nicht?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
nomore
Beiträge: 130
Registriert: Sa 15. Mai 2004, 19:38
Kontaktdaten:

Beitrag von nomore »

Danke für den super Tipp! :D
Aber leider bin ich in PHP noch nicht soweit. :cry:
Die Tabellen in der Datenbank anzulegen ist kein Problem.

Nun ja, trotzdem vielen Dank :D
Irgendwann läuft alles, fragt sich nur wann,
und wohin! :-)
ConTemplates.de
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

nun, dafür brauchst du ja auch nicht wahnsinnig fit zu sein... :wink:

Code: Alles auswählen

<?php
$myDB = new DB_Contenido();

$myDB->query("SELECT * FROM aushaenge WHERE publikationsstart <= now() AND publikationsende >= now()");

while ($myDB->next_record()) {
    $dateipfad = $myDB->f('pfad');
    $bezeichnung = $myDB->f('bezeichnung');

    // dann einfach die ausgabe an den browser machen
    echo "<div><a href=\"$pfad\">$bezeichnung</a></div>";    
}
?>
die tabelle muss einfach über die felder pfad (VARCHAR 255), bezeichnung (VARCHAR 50), publikationsstart (DATETIME) sowie publikationsende (DATETIME) verfügen. mit vorteil machst du noch einen primärschlüssel, falls du mal weitere daten verknüpfen möchtest.

und dann musst du halt noch ein bisschen kosmetik betreiben, damit das ganze auch so aussieht, wie du es gerne möchtest.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
Gesperrt