Seite 1 von 1

Modul Artikel Spezifikationen verlinken

Verfasst: Fr 11. Aug 2006, 16:30
von makemyday
Hier mal ein kleines Modul, mit welchem man Artikel unterschiedlichster Artikel Spezifikationen als Links zu den Artikeln auflisten kann. Ideal geeignet, um Wichtige Inhalte auf der Startseite zu verlinken.

Im Inputbereich ist eine Mehrfachauswahl möglich. Der Name der Artikelspezifikation dient als Überschrift der einzelnen Links zu den Artikeln.

Kurz gesagt: Eine Navigation aus Links zu Artikeln mit ausgewählten Artikel Spezifikationen.

INPUT:

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname  :      Artikelspezifikationen
* Author(s)   :     Hanta Seewald
* Copyright   :     mark-up Marketing Design GmbH, Hanta Seewald
* Created     :     14.04.2006
************************************************/
if (!is_object($db)) $db = new DB_Contenido;
?>
<script language="JavaScript">
function setValues(obj) {
	var strValue = "";
	var theForm = obj.form;
	var hidden = theForm['hidden_'+obj.name];
	
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected == true) strValue += obj.options[i].value+",";
	}
	strValue = strValue.substr(0,strValue.length-1);
	hidden.value = strValue;
}
</script>
<table border="0" cellpadding="0" cellspacing="0">
	<tr>
		<td class="text_medium" style="padding: 5px"><?= mi18n("Anzuzeigende Artikel wählen.<br> Mehrfachauswahl mit Strg möglich") ?></td>
	</tr>
	<tr>
		<td class="text_medium" style="padding: 5px">
		<input type="hidden" name="CMS_VAR[1]" value="CMS_VALUE[1]" id="hidden_value_1">
		<select name="value_1" multiple="multiple" onChange="setValues(this)" size="8">
<?php
$arrSpec = explode(",","CMS_VALUE[1]");
$sql = "SELECT * FROM ".$cfg['tab']['art_spec']." WHERE client='".$client."' AND online='1' AND lang='".$lang."'";
$db->query($sql);
while ($db->next_record()) {
	$selected = (in_array($db->f("idartspec"),$arrSpec)) ? " selected=\"selected\"" : "";
	echo '<option value="'.$db->f("idartspec").'"'.$selected.'>'.$db->f("artspec").'</option>';
}
?>
		</select>
		</td>
	</tr>
</table><?php
OUTPUT:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Artikelspezifikationen
* Author(s)   :     Hanta Seewald
* Copyright   :     mark-up Marketing Design GmbH, Hanta Seewald
* Created     :     14.04.2006
************************************************/
if (!is_object($db)) $db = new DB_Contenido;
if (!is_object($db2)) $db2 = new DB_Contenido;
if (!is_object($tpl)) $tpl = new Template();

//cInclude("classes","class.artspec.php");

$strSpec = "CMS_VALUE[1]";
//$arrSpec = explode(",",$strSpec);
//Nur wenn auch etwas ausgewählt wurde
if ($strSpec != "") {
	$sql = "SELECT * FROM ".$cfg['tab']['art_spec']." WHERE idartspec in (".$strSpec.") ORDER BY artspec ASC";
	$db->query($sql);
	while ($db->next_record()) {
		$tpl->reset();
		$tpl->set("s","HEADLINE", $db->f("artspec") );
		$sql = "SELECT * FROM 
					".$cfg['tab']['art_lang']." 
				WHERE 
					artspec=".$db->f("idartspec")." 
					AND online=1
					AND locked = 0
				ORDER BY artsort ASC, title ASC, created DESC";
		$db2->query($sql);
		while ($db2->next_record()) {
			if ($db2->f("external_redirect")) {
				$target = "_blank";
			}else{
				$target = "_self";
			}
			$tpl->set("d","HREF", "front_content.php?idart=".$db2->f("idart")."&client=".$client."&lang=".$lang );
			$tpl->set("d","NAME", $db2->f("title") );
			$tpl->set("d","TARGET", $target );
			$tpl->next();
		}
		$tpl->generate("templates/artikelspezifikation.html");
	
	}
}
?>
Viel Spaß, vielleicht kann es der ein oder andere gebrauchen
makemyday

Verfasst: Di 15. Aug 2006, 18:38
von makemyday
Ist eigentlich jedem selbst überlassen. Aber hier mal der Code von meinem Template:

Code: Alles auswählen

<ul class="artspec">
	<li class="artspec_headline">{HEADLINE}</li>
<!-- BEGIN:BLOCK -->
	<li><a href="{HREF}" title="{NAME}" target="{TARGET}">{NAME}</a></li>
<!-- END:BLOCK -->
</ul>
Grüße
makemyday

Bekome keine Artikel angezeigt ?!

Verfasst: Mi 16. Aug 2006, 09:09
von mreif
Hallo,

ich habe das Modul getestet und bin wie folgt vorgegangen.
- Modul erstellt
- artikelspezifikation.html unter Templates angelegt
- Template mit dem Modul versorgt

Gehe ich jetzt auf Artikel - Kategorie konfigurieren, erhalte ich zwar das neue Modul, wo ich die verschiedenen Artikel, die angezeigt werden sollen, auswählen kann - aber das Auswahlfeld ist leer - und ich kann somit nichts auswählen.

Wo ist mein Denkfehler - oder verstehe ich die Funktionsweise des Moduls falsch? :?:
/m

Verfasst: Mi 16. Aug 2006, 09:18
von makemyday
In dem Auswahlfeld werden die Artikelspezifikationen angezeigt, die Du anzeigen willst. Die müssen natürlich in der Mandantenadministration erstellt werden.

Damit dann auch im frontend Artikel angezeigt werden, müssen natürlich Artikel diesen Artikelspezifikationen zugewiesen werden (Artikeleigenschaften)

Falls Du das alles schon gemacht hast, schreib mal evtl auftretenden Fehlermeldungen und die contenido Version.

Grüße
makemyday

Verfasst: Mi 16. Aug 2006, 09:33
von mreif
Danke ... genau das war mein Denkfehler.
Dort hatte ich noch nichts festgelegt.
Ist dort ein Eintrag vorhanden und freigegeben, erscheint er auch im Modul zur Auswahl.
/m

Verfasst: Mi 16. Aug 2006, 10:40
von mreif
Hallo makemyday,

ein Fehler tritt bei mir allerdings noch auf.
Artikelspezifikationen sind gesetzt und zugewiesen.

Wenn ich die Frontend-Seite aufrufe, wo das Modul hinterlegt ist, erscheinen auch die Artikelspezifikation - die in dem Modul gewählt wurden - mit den zugewiesenen Artikel als Link.
Eigentlich alles sehr sauber und übersichtlich.

Wenn ich allerdings auf einen Link klicke, wird der Artikel nicht aufgerufen - sondern die aktuell gezeigte Seite wird einfach neu aufgebaut.

Hast Du noch einen Rat für mich, woran das jetzt noch liegen könnte?
Danke im Voraus.
/m

Verfasst: Mi 16. Aug 2006, 10:55
von makemyday
Was steht dem bei der Ausgabe im href

Verfasst: Mi 16. Aug 2006, 11:02
von mreif
Ich habe einfach ein paar Artikel mit der Artikelspezifikation "News" belegt um das Modul zu testen.
Hier der Auszug aus dem Quelltext (Test-Umgebung).
<ul class="artspec">
<li class="artspec_headline">News</li>

<li><a href="front_content.php?idartlang=62&client=1&lang=1" title="Contenido Highlights" target="_self">Contenido Highlights</a></li>

<li><a href="front_content.php?idartlang=96&client=1&lang=1" title="RSS-News" target="_self">RSS-News</a></li>

<li><a href="front_content.php?idartlang=61&client=1&lang=1" title="Vorteile CMS" target="_self">Vorteile CMS</a></li>

</ul>

Verfasst: Mi 16. Aug 2006, 11:11
von makemyday
Hab den Code oben geändert. Hier aber noch mal die Änderung im Detail

Code: Alles auswählen

$tpl->set("d","HREF", "front_content.php?idartlang=".$db2->f("idartlang")."&client=".$client."&lang=".$lang );
ersetzen durch

Code: Alles auswählen

$tpl->set("d","HREF", "front_content.php?idart=".$db2->f("idart")."&client=".$client."&lang=".$lang );
Aus irgendeinem Grund hatte ich idartlang verwendet. Warum weiss ich auch nicht mehr.

Verfasst: Mi 16. Aug 2006, 11:31
von mreif
ok, jetzt funktioniert es :D
merci
/m