Titel der übergeordneten Kategorie ausgeben

Gesperrt
beachcoder
Beiträge: 21
Registriert: Mo 16. Feb 2009, 12:44
Kontaktdaten:

Titel der übergeordneten Kategorie ausgeben

Beitrag von beachcoder » Do 15. Sep 2011, 12:00

Hallo Zusammen,

ich habe ein Modul "Titel", welches jeweils den Titel der übergeordneten Kategorie des aktuellen Artikels ausgeben soll, jedoch NICHT wenn die übergeordnete Kategorie die Wurzel eines Kategoriebaumes ist.
Den Contenido-Datenbanktabellen konnte ich nicht entnehmen, wie ich das am besten herausfinde.

Hier mein bisheriges Schaffen (Output):

Code: Alles auswählen

<?php

if (!isset($tpl) || !is_object($tpl))
{
    $tpl = new Template();
}

$db = new DB_Contenido;

//Suche den Vater der aktuellen Kategorie
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");


// Ist der Vater die Baumwurzel?
/*
if( Was muss ich hier prüfen, damit ich weis, ob dies ein neuer Baum ist? )
	$parentid = $idcat;
*/

//Jetzt den Titel holen...
$sql = "SELECT name FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat = " . $parentid . " AND idlang = " . $lang;
$db->query($sql);
$db->next_record();
$sText = $db->f("name");

$tpl->reset();
if ($contenido && $edit) 
{
    $tpl->set('s', 'text', $sText);
    $tpl->generate('templates/headline_h1.html');
}
else 
{
    if ($sText != '') 
    {
        $tpl->set('s', 'text', strip_tags($sText));
        $tpl->generate('templates/headline_h1.html');
    }
}

?>
Teile des Codes habe ich aus dem Beitrag http://forum.contenido.org/viewtopic.php?p=24454#p24454. Was könnte ich nun bei

Code: Alles auswählen

if( Was muss ich hier prüfen, damit ich weis, ob dies ein neuer Baum ist? )
	$parentid = $idcat;
einsetzen, damit es klappt? Da ich mehrere Kategoriebäume habe ist es auch nicht sinnvoll, die Kategorie-IDs dort zu prüfen.

Viele Grüße,
beachcoder

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Titel der übergeordneten Kategorie ausgeben

Beitrag von idea-tec » Do 15. Sep 2011, 13:08

Versuch mal das (nicht getestet, aber etwas komprimierter und mit einem DB-Zugriff weniger):

Code: Alles auswählen

    <?php
    if (!isset($tpl) || !is_object($tpl)) { $tpl = new Template(); }
    $db = new DB_Contenido;

    //Den Titel holen...
    $sql = "SELECT a.name FROM " . $cfg["tab"]["cat_lang"] . " a, ".$cfg["tab"]["cat"]." b WHERE b.parentid>0 and a.idcat = b.parentid and b.idcat=".$idcat." AND a.idlang = " . $lang;
    $db->query($sql); $db->next_record();
    if ($db->num_rows()>1) {
        $sText = $db->f("name");
    } else {
        $sText = '';
    }

    $tpl->reset();
    if ($contenido && $edit) {
        $tpl->set('s', 'text', $sText);
        $tpl->generate('templates/headline_h1.html');
    } else {
        if ($sText != '') {
            $tpl->set('s', 'text', strip_tags($sText));
            $tpl->generate('templates/headline_h1.html');
        }
    }
    ?>
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Gesperrt