Seite 1 von 1

Gelöst: Navigation aus Beispielmandant funktioniert nicht

Verfasst: Mo 1. Dez 2008, 23:39
von bhamann
Hallo,

schon wieder mal kurz vorm verzweifeln.
Ich habe eine neuen Mandanten angelegt. Bequem wie ich war die Module aus dem Beispielmandanten exportiert und beim neuen Mandanten importiert. So weit so gut.
Mit entsprechender Anpassung funktionieren die erforderlichen Module bis jetzt auch, bis auf die Navigation.

Ich hab im Layout folgendes stehen:

Code: Alles auswählen

<div id="navigation">
<container id="37" name="Navigation_Main" types="Navigation" mode="fixed" default="Navigation_Main">Navigation_Main</container>
</div>
Die erste Kategorie fängt komischerweise auch bei idcat=37 an, sei's drum.
Die Seite wird auch brav angezeigt, eben nur ohne Navigation. Der andere Content ist vorhanden und ok.
Im Quelltext ist von der Navigation auch nix zu sehen, einfach leer, so als wenn er das Modul nicht findet.

Das Modul Navigation_Main sieht bei mir so aus:

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: Navigation, left side.
*
* @version 1.0.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2008-04-07
* }}
*
* $Id$
*/

// include Contenido_FrontendNavigation class
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-home', 37);

// instantiate 2nd + 3rd template object, reset all
$tpl2 = new Template();
$tpl3 = new Template();

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

$tpl->reset();
$tpl2->reset();
$tpl3->reset();

// build navigation
try {
    $oFeNav = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
    $oBreadcrumb = new Contenido_FrontendNavigation_Breadcrumb($db, $cfg, $client, $lang, $cfgClient);
    $aBreadcrumb = $oBreadcrumb->getAsArray($idcat, 1); // this nav starts at level 1
    $oFeNav->setAuth($auth); // to make sure user sees what he's allowed to see
    $oContenidoCategories = $oFeNav->getSubCategories($iIdcatStart, true);
    if ($oContenidoCategories->count() > 0) {
        foreach ($oContenidoCategories as $oContenidoCategory) {
            $sSubcats = '';
            $tpl2->reset();
            $bHasActiveSubCat = false;
            // check if we need to load subcategories
            $oSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true);
            $aSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), false);
            $bShowSubcatLevel2 = (intval($idcat) == $oContenidoCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel2) 
                                || (isset($aBreadcrumb[2]) && intval($idcat) == $aBreadcrumb[2] && in_array($aBreadcrumb[1], $aSubCatsLevel2)))
                                ? true : false;
            if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {
                foreach ($oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true) as $oSubCategory) {
                    $bHasActiveSubSubCat = false;
                    // check if we need to load subsubcategories
                    $oSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), true);
                    $aSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), false);
                    $bShowSubcatLevel3 = (intval($idcat) == $oSubCategory->getIdCat() || 
                                            in_array(intval($idcat), $aSubCatsLevel3))
                                            ? true : false;
                    $sSubcats2 = '';
                    if ($bShowSubcatLevel3 === true && $oSubCatsLevel3->count() > 0) {
                        foreach ($oSubCatsLevel3 as $oSubSubCategories) {
                            if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
                                $bHasActiveSubCat = true;
                            }
                            if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
                                $bHasActiveSubSubCat = true;
                            }
                            toTpl($tpl3, $oSubSubCategories, (intval($idcat) == $oSubSubCategories->getIdCat() ? ' class="active"' : ''), '');
                        }
                        $sSubcats2 = $tpl3->generate('templates/navigation_main_item.html', true, false);
                        $tpl3->reset();
                        $tpl3->set('s', 'items', $sSubcats2);
                        $tpl3->set('s', 'css-class', ' class="subSubNavigation"');
                        $sSubcats2 = $tpl3->generate('templates/navigation_main_container.html', true, false);
                    }
                    if ($bHasActiveSubCat === false && intval($idcat) == $oSubCategory->getIdCat()) {
                        $bHasActiveSubCat = true;
                    }
                    toTpl($tpl2, $oSubCategory, 
                            (intval($idcat) == $oSubCategory->getIdCat() || $bHasActiveSubSubCat === true ? ' class="active"' : ''), 
                            $sSubcats2);
                }
                $sSubcats = $tpl2->generate('templates/navigation_main_item.html', true, false);
                $tpl2->reset();
                $tpl2->set('s', 'items', $sSubcats);
                $tpl2->set('s', 'css-class', ' class="subNavigation"');
                $sSubcats = $tpl2->generate('templates/navigation_main_container.html', true, false);
            }
            toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="active"' : ''), $sSubcats);
        }
        $sCats = $tpl->generate('templates/navigation_main_item.html', true, false);
        $tpl->reset();
        $tpl->set('s', 'css-class', '');
        $tpl->set('s', 'items', $sCats);
        $tpl->generate('templates/navigation_main_container.html');
    }
} catch (Exception $e) {
    echo 'Some error occured: ' . $e->getMessage() . ': ' . $e->getFile() . ' at line '.$e->getLine() . ' ('.$e->getTraceAsString().')';
}

/**
 * Helper to push values to Template object
 * @param Template $oTpl
 * @param Contenido_Category $oCat
 * @param string $sActiveCssClass must bei either empty string or " class="classname"
 * @param string $sSubcats String with subcategories of current category
 */
function toTpl(&$oTpl, Contenido_Category $oCat, $sActiveCssClass, $sSubcats) {
    $oTpl->set('d', 'css-class', $sActiveCssClass);
    $oTpl->set('d', 'url', 'front_content.php?idcat='.$oCat->getIdCat());
    $oTpl->set('d', 'title', $oCat->getCategoryLanguage()->getName());
    $oTpl->set('d', 'label', $oCat->getCategoryLanguage()->getName());
    $oTpl->set('d', 'subcategories', $sSubcats); // followup level
    $oTpl->next();
}
?>
Html-Template ist auch vorhanden im Template-Verzeichnis des neuen Mandante, eben weil auch kopiert.

Vorsichtshalber habe ich dem Container auch die id=37 gegeben.

Unter Administrator - Templates ist das m.E. auch richtig vorhanden:
Bild

Irgendwo muss ich einen Fehler haben, ich tippe in erster Linie auf ein Verständnisfehler im Hirn, aber ich finde den ums verrecken nicht.

CSS-Datei ist auch ok und vorhanden(Kopie vom Beispielmandanten)

Ich kann mir nur denken, dass ich evtl. in der Namesvergabe des Navigationsbaumes etwas falsch gemacht habe, der heißt bei mir "Home".
Hab aber im Forum auch nix Passendes gefunden.

Wer hat einen Tipp für mich?

Danke im Voraus

Björn

Verfasst: Di 2. Dez 2008, 09:51
von Oldperl
Hallo Björn,

du hast aber auch das Modul auch vorkonfiguriert?

Beim Neuerstellen eines Templates reicht es das unter Style->Templates->Vorkonfiguration zu machen. Wenn du dann das Template einer Kategorie oder einem Artikel zuweist, wird diese Einstellung übernommen.

Bei der Änderung eines Templates bringt das nur was für neue Artikel/Kategorien. Bei Alten mußt du die Einstellung in jeder(m) Kategorie/Artikel machen, da Änderungen in der Templatevorkonfiguration nicht für Bestandsartikel übernommen werden.

Gruß aus Franken

Ortwin

Verfasst: Di 2. Dez 2008, 10:24
von bhamann
Hallo Ortwin,

danke für Deine Antwort.

Ich hatte m.E. vorkonfiguriert, aber das zur Sicherheit jetzt nochmal in jeder Kategorie unter Kategorie bearbeiten - Kategorie konfigurieren - grünen Haken bestätigt zum Speichern.

Unter den einzelnen Artikel habe ich unter konfigurieren das hinterlegte Template ausgewählt und auch bestätigt.

Hat sich aber leider nix verändert.
Bin kurz vorm verzweifeln, dass Contenido so kompliziert zu verstehen ist, habe ich nicht gedacht..

Gruss aus dem Norden

björn

Verfasst: Di 2. Dez 2008, 10:58
von Oldperl
Hallo Björn,

der Startwert für die Hauptnavi wird ja gar nicht mehr in der Konfiguration eingestellt, sorry, mein Fehler. Dafür gibt es eine Mandanteneinstellung in der 4.8.x

Schau mal unter Administration->Mandant->Mandanteneinstellungen nach der Einstellung
navigation | idcat-home | xx
diese wird nämlich hier

Code: Alles auswählen

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-home', 37);
im deinem Modul abgefragt. Als Standard, wenn kein Eintrag in der DB steht wird die Zahl (hier:37) genommen. Diese sollte mit deiner Hauptkategorie überein stimmen, kann dann aber durch einen Eintrag beim Mandanten jederzeit geändert werden, ohne das Modul zu ändern.

Gruß aus Franken

Ortwin

Verfasst: Di 2. Dez 2008, 11:12
von bhamann
Hallo Ortwin,

das hatte ich schon im Forum irgendwo mal gelesen, dass da Mandanteneinstellungen erforderlich sind. Die waren bei der Neuanlage des Mandanten noch nicht vorhanden. Ich hatte diese dann so weit ich wusste nachgebaut.

Die sehen wie folgt aus:

Bild

Das müsst ja so ok sein.

Gruss aus dem verregneten Norden

björn

Verfasst: Di 2. Dez 2008, 11:36
von Oldperl
Hallo Björn,

wenn die idcat 37 die idcat deiner Homekategorie ist sollte das funktionieren. :wink:

Gruß aus dem trüben Franken

Ortwin

Verfasst: Di 2. Dez 2008, 12:07
von bhamann
Hallo Ortwin,

danke nochmal für Deine Hilfe, aber leider klappt's immer noch nicht.

Gibt's irgendeine Möglichkeit das Ding zu debuggen, was der da nicht oder nicht richtig lädt bei der Navigation?

Ich verzweifel langsam komplett..

Gruß

björn

Kleiner Nachschlag:

Ich habe gerade versucht das Header-modul einzubinden, musste das ein bisschen modifizieren.
Lustigerweise wird da das nachfolgende richtig dargestellt:

Code: Alles auswählen

// get start idcat
$iIdcatStart = (int) getEffectiveSetting('navigation', 'idcat-home', '37');
Vielleicht hilft das weiter.

Gruss björn

Verfasst: Di 2. Dez 2008, 12:25
von Oldperl
Hallo Björn,

ja es gibt debug-Funktionen in Contenido, aber ich denke mal das sollte hier nicht notwendig sein. Falls du mir Zugangsdaten per PM zusenden magst, könnte ich ja mal schauen ob ich dir helfen kann.

Gruß an die Ostsee

Ortwin

Verfasst: So 7. Dez 2008, 19:18
von Dunk84
Hallo

Ich häng ebenfalls bei diesem Problem. Gibt es eine Lösung?
Nochmals kurz zusammengefasst:
-neuer Mandant, zusätzlich zum Beispielmandant erstellt
-Module funktionieren ausser navigation_main

Wäre über Hilfe sehr dankbar!

Grüsse aus der Schweiz

Lukas

Verfasst: Di 9. Dez 2008, 23:50
von bhamann
Hallo Lukas,

ich habe das Problem immer noch, und konnte meine lokale Installation auch noch nicht auf den Webserver kopieren, weil es den z.Zt. noch nicht gibt(kommenden Freitag).

Damit wollte ich evtl. lokale Probleme FF/PHP/SQL-Versionen ausschließen.

Zusätzlich habe ich auch noch das Problem bekommen, dass das vom Beispiel-Mandanten kopierte Newsletter-Modul auch nicht funktioniert, beim Absenden zum Eintragen bekomme ich nur die Startseite angezeigt und keinerlei andere Reaktionen.
Beim Beispiel-Mandanten funktioniert das Problemlos...? Idee?

Sobald die Seite im Netz ist und ich Genaueres weiß, vielleicht auch mit der Hilfe von Ortwin(danke nochmal für das Angebot), poste ich das hier.

Gruß

björn

Kleine Ergänzung am Morgen:

Natürlich die ganze Zeit ein Userfehler, von wegen Wald und Bäume, vor allem Bäume:

Meine sämtlichen Navigationkategorien waren unter der Hauptkategorie ROOT angelegt.
Daher waren auch die einzelnen Unterpunkte nicht zu sehen.
Nun gibt es, wie auch im Beispiel-Mandanten, eine Kategorie, die in meinem Fall HOME heißt, und darin die weiteren Unterkategorien mit den jeweiligen Artikeln. Jetzt natürlich im Frontend sichtbar und benutzbar.

Eigentlich mal wieder DAU-Fehler.. :roll:

Mein Problem mit dem Newsletter-Modul bleibt aber leider..

Gruß

Björn