Artikelliste mit "direkten" Zugriff
Artikelliste mit "direkten" Zugriff
Hallo Zusammen,
ich verwender die Artikellsite w3concepts.alist.mod3. Ich habe die Sortierung geändert so, dass ich jetzt der Bakend-Titel (title) verwende. Alle klapt ganz gut.
Mein Ziel ist diese Artikelliste zu verwenden für eine Auflistung von Tiere, die Alphabetisch - durch den title - sortiert werden. Pro Artikel wird der Latein-Namen (headline) und eine Thumbild angezeigt.
So jetzt kommt das Problem bzw. die Frage: ich möchte zusätztlich oben am Beginn der Liste eine Zeile mit dem Alphabet und Anchor einsetzten.
So dass durch Auswahl einer Buchstabe, springt man direkt an die Artikeln, die mit diesen Buchstabe anfängen.
Ich hoffe, dass ich mich korrekt ausgedruckt habe.
Ich habe noch keinen solchen Modul gesehen. Aber ich glaube, dass so etwas machbar wäre?
Gruß
Eric
ich verwender die Artikellsite w3concepts.alist.mod3. Ich habe die Sortierung geändert so, dass ich jetzt der Bakend-Titel (title) verwende. Alle klapt ganz gut.
Mein Ziel ist diese Artikelliste zu verwenden für eine Auflistung von Tiere, die Alphabetisch - durch den title - sortiert werden. Pro Artikel wird der Latein-Namen (headline) und eine Thumbild angezeigt.
So jetzt kommt das Problem bzw. die Frage: ich möchte zusätztlich oben am Beginn der Liste eine Zeile mit dem Alphabet und Anchor einsetzten.
So dass durch Auswahl einer Buchstabe, springt man direkt an die Artikeln, die mit diesen Buchstabe anfängen.
Ich hoffe, dass ich mich korrekt ausgedruckt habe.
Ich habe noch keinen solchen Modul gesehen. Aber ich glaube, dass so etwas machbar wäre?
Gruß
Eric
Contenido 4.4.5-r1
Contenido V4.6.15 Version MR
Contenido V4.6.15 Version MR
-
- Beiträge: 1082
- Registriert: Di 22. Jul 2003, 10:14
- Wohnort: Hessen
- Kontaktdaten:
Hallo
Gesucht hatte ich schon.
Außer diesen Link http://www.contenido.org/forum/viewtopic.php?t=6366 habe ich nichts gefunden.
Tja werde noch einmal eine bisschen PHP lernen und vielleicht wäre ich es hinbekommen. Aber für jede Hilfe wäre ich dankbar.
Eingentlich wollte ich soetwas machen:
* Tabelle mit dem Alphabet und default Anchor (Name="A", "B", usw...)
In der Schleiffe der Ausgabe - die schon durch den Backend-Titel alphabetisch sortiert ist - wollte ich dann
* Test des ersten Buchstabe vom Backend-Titel und dann den entsprechenden Anchor zuweisen.
Es würde bedeuten, dass wenn ich zwei Artikel mit dem gleichen Buchstabe habe, werde ich zweimal den Anchor zuweisen.
Nicht gefunden Buchstabe werden kein Anchor zugewiesen.
Ist die Grundprinzip Ok, oder habe ich irgendwo einen Denkfehler?
Gruß
Eric
Gesucht hatte ich schon.
Außer diesen Link http://www.contenido.org/forum/viewtopic.php?t=6366 habe ich nichts gefunden.
Tja werde noch einmal eine bisschen PHP lernen und vielleicht wäre ich es hinbekommen. Aber für jede Hilfe wäre ich dankbar.
Eingentlich wollte ich soetwas machen:
* Tabelle mit dem Alphabet und default Anchor (Name="A", "B", usw...)
In der Schleiffe der Ausgabe - die schon durch den Backend-Titel alphabetisch sortiert ist - wollte ich dann
* Test des ersten Buchstabe vom Backend-Titel und dann den entsprechenden Anchor zuweisen.
Es würde bedeuten, dass wenn ich zwei Artikel mit dem gleichen Buchstabe habe, werde ich zweimal den Anchor zuweisen.
Nicht gefunden Buchstabe werden kein Anchor zugewiesen.
Ist die Grundprinzip Ok, oder habe ich irgendwo einen Denkfehler?
Gruß
Eric
Contenido 4.4.5-r1
Contenido V4.6.15 Version MR
Contenido V4.6.15 Version MR
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Hallo Eric,
Gruss
Christa
ich weiss nicht, ob das so gut ist. Ich hab's aber auch nie ausprobiert: wenn der Ankername an zwei Stellen vorhanden ist, wohin wird dann gesprungen? Immer zum ersten, oder nach dem Zufallsprinzip? Ich wuerd's erstmal an einer statischen HTML-Seite probieren.Eric A. hat geschrieben:Es würde bedeuten, dass wenn ich zwei Artikel mit dem gleichen Buchstabe habe, werde ich zweimal den Anchor zuweisen.
Nicht gefunden Buchstabe werden kein Anchor zugewiesen.
Gruss
Christa
Hallo Halchteranerin,
Anchor:
Ich habe es gerade unter IE 6, Mozilla 1.6, Firefox 1.0.1 und Netscape 4.78 und 7.1 getest. Also es scheint überall zu funktionieren:
- man springt auf dem ersten gesetzten Anchor in der Seite
Aber du hast Recht, dass es nicht sauber ist. Für den ersten Entwurf würde ich es also so machen und im zweiten würde ich die Redundanz entfernen.
Gruß
Eric
Anchor:
Ich habe es gerade unter IE 6, Mozilla 1.6, Firefox 1.0.1 und Netscape 4.78 und 7.1 getest. Also es scheint überall zu funktionieren:
- man springt auf dem ersten gesetzten Anchor in der Seite
Aber du hast Recht, dass es nicht sauber ist. Für den ersten Entwurf würde ich es also so machen und im zweiten würde ich die Redundanz entfernen.
Gruß
Eric
Contenido 4.4.5-r1
Contenido V4.6.15 Version MR
Contenido V4.6.15 Version MR
So ich habe jetzt einen Pseudo-Algorithm geschrieben, der keine Redundanz enthälten sollte:
So jetzt muss ich noch schauen, wie ich das in PHP umsetze.
Gruß
Eric
Code: Alles auswählen
//ganz vorne
lastfound =0;
Kette = "ABCD.....Z"
// in der Schleiffe
for i= lastfound to End
(
if title = Kette[i]
(
Anchor setzen
lastfound=i+1;
break
)
)
Gruß
Eric
Contenido 4.4.5-r1
Contenido V4.6.15 Version MR
Contenido V4.6.15 Version MR
Hallo.
Ich habe mal folgenden Code direkt aus Contenido herauskopiert.
Bitte die SQL-Anweisungen noch anpassen!!!!
Es gibt bei mir in den Artikeln ein eigenes Feld für das Glossar.
Edit: Die SQL-Statements wurden korrigiert, da nur die direkten Kategorien unterhalb der Hauptkategorie berücksichtigt wurden. (2005-10-09)
Bei Fragen einfach melden.
Darthbach
Ich habe mal folgenden Code direkt aus Contenido herauskopiert.
Bitte die SQL-Anweisungen noch anpassen!!!!
Es gibt bei mir in den Artikeln ein eigenes Feld für das Glossar.
Code: Alles auswählen
<?php
echo "<!-- Modul: Glossarliste -->\n";
function klein($text) {
$text = urldecode($text);
$text = strip_tags($text, "");
// $text = str_replace(" ", "_", $text);
$text = str_replace(":", "_", $text);
$text = str_replace("(", "_", $text);
$text = str_replace(")", "_", $text);
$text = str_replace("[", "_", $text);
$text = str_replace("]", "_", $text);
$text = str_replace("'", "_", $text);
$text = str_replace('"', '_', $text);
$text = strtolower($text);
$text = str_replace("ä", "ae", $text);
$text = str_replace("ö", "oe", $text);
$text = str_replace("ü", "ue", $text);
$text = str_replace("ß", "ss", $text);
return $text;
}
function unterkategorien($kategorie) {
global $cfg, $unterkat;
$unterkat[] = $kategorie;
$db = new DB_Contenido;
$sql = "SELECT idcat FROM {$cfg['tab']['cat']} WHERE parentid = '".$kategorie."' ORDER BY idcat ASC;";
$db->query($sql);
while ($db->next_record()) {
unterkategorien($db->f("idcat"));
}
}
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$breiterand = 5;
$breitekomplett = 200 - 2 * $breiterand;
$liste = array("0-9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "@");
foreach ($liste as $buchstabe) {
$gesamt[$buchstabe] = "";
}
$unterkat = array();
unterkategorien(24);
// liest die anzahl betroffener artikel aus der datenbank
$sql = "SELECT count(*) AS anzahl FROM ".$cfg['tab']['cat']." AS a LEFT JOIN ".$cfg['tab']['cat_art']." AS b ON a.idcat = b.idcat LEFT JOIN ".$cfg['tab']['art_lang']." AS c ON b.idart = c.idart LEFT JOIN ".$cfg['tab']['content']." AS d ON c.idartlang = d.idartlang LEFT JOIN ".$cfg['tab']['cat_lang']." AS e ON a.idcat = e.idcat WHERE a.parentid IN (".implode(", ", $unterkat).") AND d.idtype = '2' AND d.typeid = '2' AND d.value != '';";
$db->query($sql);
$db->next_record();
$anzahl_artikel = $db->f("anzahl");
if ($anzahl_artikel > 0) {
$sql = "SELECT d.value, b.idart, b.idcat, e.name FROM ".$cfg['tab']['cat']." AS a LEFT JOIN ".$cfg['tab']['cat_art']." AS b ON a.idcat = b.idcat LEFT JOIN ".$cfg['tab']['art_lang']." AS c ON b.idart = c.idart LEFT JOIN ".$cfg['tab']['content']." AS d ON c.idartlang = d.idartlang LEFT JOIN ".$cfg['tab']['cat_lang']." AS e ON a.idcat = e.idcat WHERE a.parentid IN (".implode(", ", $unterkat).") AND d.idtype = '2' AND d.typeid = '2' AND d.value != '';";
$db->query($sql);
while ($db->next_record()) {
$suche = klein($db->f("value"));
$suchindex = substr($suche, 0, 1);
$titel = urldecode($db->f("value"));
$artikel = $db->f("idart");
$kategorie = $db->f("idcat");
$abteilung = $db->f("name");
$gefunden = false;
foreach ($liste as $value) {
$wert = ord($suchindex);
if (($wert > 47) && ($wert < 57))
$suchindex = "0-9";
if ($value == $suchindex) {
$gefunden = true;
break;
}
}
if ($gefunden) {
$gesamt[$suchindex][] = array('suche' => $suche, 'titel' => $titel, 'kategorie' => $kategorie, 'artikel' => $artikel, 'abteilung' => $abteilung);
} else {
$gesamt['@'][] = array('suche' => $suche, 'titel' => $titel, 'kategorie' => $kategorie, 'artikel' => $artikel, 'abteilung' => $abteilung);
}
}
echo ' <tr><td align="right" colspan="3" class="liste">';
for ($i = 0; $i < 14; $i++) {
$text = strtoupper($liste[$i]);
if (is_array($gesamt[$liste[$i]])) {
$text = '<a href="#'.$text.'" class="liste">'.$text.'</a>';
}
echo $text.' ';
}
echo '</td></tr>
<tr><td align="right" colspan="3" class="liste">';
for ($i = 14; $i < 28; $i++) {
$text = strtoupper($liste[$i]);
if (is_array($gesamt[$liste[$i]])) {
$text = '<a href="#'.$text.'" class="liste">'.$text.'</a>';
}
echo $text.' ';
}
echo '</td></tr>
<tr><td colspan="3" class="text">Dieses Glossar enthält '.$anzahl_artikel.' Artikel.</td></tr>
';
foreach ($liste as $buchstabe) {
if (is_array($gesamt[$buchstabe])) {
sort($gesamt[$buchstabe]);
$text = strtoupper($buchstabe);
echo ' <tr><td colspan="3" width="'.$textspalteplus.'"><img src="images/dotclear.gif" width="'.$textspalteplus.'" height="20" alt=""></td></tr>
<tr>
<td valign="top" width="'.$breiterand.'"> </td>
<td valign="top" width="'.$breitekomplett.'" valign="top"><a name="'.$text.'"></a>'.$text.'</td>
<td valign="top" width="'.$breiterand.'"> </td>
</tr>
';
foreach ($gesamt[$buchstabe] as $eintrag) {
$link = $sess->url("front_content.php?idcat=".$eintrag['kategorie']."&idart=".$eintrag['artikel'].$sessionid);
echo ' <tr>
<td valign="top" width="'.$breiterand.'"> </td>
<td valign="top" width="'.$breitekomplett.'" valign="top"><a href="'.$link.'" class="liste_headlinelink">'.$eintrag['titel'].'</a> ('.$eintrag['abteilung'].')</td>
<td valign="top" width="'.$breiterand.'"> </td>
</tr>
';
}
echo ' <tr>
<td valign="top" width="'.$breiterand.'"> </td>
<td valign="top" width="'.$breitekomplett.'"> </td>
<td valign="top" width="'.$breiterand.'"> </td>
</tr>
';
}
}
} else {
echo ' <tr>
<td valign="top" width="'.$breiterand.'"> </td>
<td valign="top" align="center" width="'.$breitekomplett.'">Dieses Glossar enthält leider noch keine Artikel.</td>
<td valign="top" width="'.$breiterand.'"> </td>
</tr>
<tr>
<td valign="top" width="'.$breiterand.'"> </td>
<td valign="top" width="'.$breitekomplett.'"> </td>
<td valign="top" width="'.$breiterand.'"> </td>
</tr>
';
}
unset ($breiterand);
unset ($breitekomplett);
?>
Bei Fragen einfach melden.
Darthbach
Zuletzt geändert von darthbach am So 9. Okt 2005, 12:36, insgesamt 1-mal geändert.
Verwendete Versionen:
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Hallo.
Leider kann ich nur einen Screenshot anbieten:
http://schmitz-ruhrort.dyndns.org/glossar.jpg (ca. 145 KB)
Edit: Noch ein zweiter Screenshot, der die Struktur zeigen soll: http://schmitz-ruhrort.dyndns.org/glossar2.jpg (ca. 186 KB)
Die Artikel befinden sich unter "News > ..."
Unter "Glossar" befindet sich nur das Glossar!!!!! (2005-10-09)
Darthbach
Leider kann ich nur einen Screenshot anbieten:
http://schmitz-ruhrort.dyndns.org/glossar.jpg (ca. 145 KB)
Edit: Noch ein zweiter Screenshot, der die Struktur zeigen soll: http://schmitz-ruhrort.dyndns.org/glossar2.jpg (ca. 186 KB)
Die Artikel befinden sich unter "News > ..."
Unter "Glossar" befindet sich nur das Glossar!!!!! (2005-10-09)
Darthbach
Zuletzt geändert von darthbach am So 9. Okt 2005, 12:40, insgesamt 2-mal geändert.
Verwendete Versionen:
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Meine Site hat folgenden Aufbau:
Die Artikel werden in den einzelnen Abteilungen abgelegt. Die übergeordnete Kategorie News hat die idcat = 24.
idtype = 2 und typeid = 2 ergibt sich daraus, da in den Artikeln ein Feld CMS_HTML[2] eingebaut ist. _Wenn_ dieses Feld ausgefüllt wird (value != ''), erst dann taucht der Artikel in der Glossarliste aus.
Hier also die eigenen Kategorien eintragen.
Darthbach
Code: Alles auswählen
+- News
| +-Abteilung 1
| +-Abteilung 2
| +-Abteilung 3
+- Glossar
idtype = 2 und typeid = 2 ergibt sich daraus, da in den Artikeln ein Feld CMS_HTML[2] eingebaut ist. _Wenn_ dieses Feld ausgefüllt wird (value != ''), erst dann taucht der Artikel in der Glossarliste aus.
Hier also die eigenen Kategorien eintragen.
Darthbach
Verwendete Versionen:
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Contenido: 4.5.2 ALPHA
PHP: 4.3.10 (Update auf 5 geplant)
MySQL: 3.23.58
Ich kenne zwar die Unterschiede nicht so genau, da ich direkt mit der v4.5 begonnen habe.Anonymous hat geschrieben:Kann es sein, dass das Modul unter v4.4.5 nicht funktioniert, ich kriege es jedenfalls nicht zum laufen!
Du könntest zum Testen alle paar Zeilen auch eine einfache Programmzeile, z.B.
Code: Alles auswählen
echo "1"; ...; echo "2"; ...;
Dann siehst du ja, wo es Probleme gibt.
Ich brauche nur den Code ins Output zu kopieren und Contenido meckert schon den Code anAnonymous hat geschrieben:Kann es sein, dass das Modul unter v4.4.5 nicht funktioniert, ich kriege es jedenfalls nicht zum laufen!
Ich nutze auch 4.4.5....
Das Modul ist genau das was ich suchte und brauche!
Wer hilft mir das für die 4.4.5 hinzubekommen?
Mit freundlichen Grüßen
Jörg Knörchen
Meine Hobby-Webseite:
www.mein-foto-abc.de : contenido 4.6.15 - I love it! : www.yogie.de : www.bastelstun.de
Jörg Knörchen
Meine Hobby-Webseite:
www.mein-foto-abc.de : contenido 4.6.15 - I love it! : www.yogie.de : www.bastelstun.de