Seite 1 von 1

Probleme mit geteilter Navigation (edit Problem gelöst)

Verfasst: Do 16. Feb 2006, 12:55
von ultha
hallo Contenido Fans,

erstmal ein großes Lob an die Entwicker von Contenido.

ich beschäftige mich seit einiger Zeit mit dem CMS System in der Version 4.6.4
Habe jetzt auch schon einige Standardinstallationen gemacht.
Komplettinstallation lokal und online zum Test mit Beispielinhalten.
Alles wunderbar. Blicke auch langsam durch wie das Zusammenspiel Layout, Module
und Template funzt.

Nun möchte ich für einen Kunden eine Site mit dem CMS entwickeln.
habe dafür lokal eine neue Installation mit den Standard Modulen aber ohne
Inhalte, also keien Layouts und keine Templates gemacht.

Ich möchte für die Site eine geteilte Navigation umsetzen, wie
in diesem Beispielprojekt von mvf -> http://contenido.org/forum/profile.php? ... ile&u=3557
Hier noch der Dank an mvf, der ein Beispielprojekt für eine geteilte Navigation ins Netz gestellt hat.

http://contenido.funjumping.de/front_co ... 47&idart=2

Habe mir dafür die Module und die Layouts in mein System importiert. Funktioniert
bis hier auch wunderbar.

Nun habe ich ein zweites Layout nach meinen Vorstellungen angepasst und die Container
für die geteilte Navigation denm Layout hinzugefügt.

Ein Template mit dem neuen Layout erstellt ud diese dann den Kateg. zugewiesen.
Leider bekomme ich mit meinem angepassten Layout folgende Fehlermeldung:


Fatal error: Call to a member function on a non-object in
c:\apache\htdocs\cmstest\cms\front_content.php(771):

eval()'d code on line 210


Habe dafür mal den Code im front_content.php den folgende Abschnitt gesucht, wo er
dann rausfliegt. Vielleicht hat jemand ne Ahnung, was hier passiert und was ich machen könnte.
Stehe ziemlich auf dem Schlauch. Habe sogar nochmal ein neues System aufgesetzt und nur mein eigenes
Layout, die Module von funjumping.de und ein Template mit dem Layout gemacht, so das es keine Inkonsistenzen
mit anderen Layouts und Templates gibt. Leider aber ohne Erfolg. An den Modulen liegt es nicht. Die fuktioneren ja.
die Html Templates für die obere Navigation habe ich auch hinzugefügt.

schöne Grüße Ulli

Die markierte Zeile ist die Zeile 771 in front_content.php


$is_XHTML = getEffectiveSetting('generator', 'xhtml', false);
if ($is_XHTML == true) {
$baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'" />';
} else {
$baseCode = '<base href="'.$cfgClient[$client]["path"]["htmlpath"].'">';
}
$code = str_ireplace_once("<head>", "<head>\n".$baseCode, $code);
if ($online)
{

if ($redirect == '1' && $redirect_url != '')
{
page_close();
header("Location: $redirect_url");
exit;

}
else
{

if ($cfg["debug"]["codeoutput"])
{
echo "<textarea>".htmlspecialchars($code)."</textarea>";
}
eval ("?>\n".$code."\n<?php\n"); }

}
else
{

if ($contenido)
{
eval ("?>\n".$code."\n<?php\n");

}
else
{
if ($error == 1)
{
echo "Fatal error: Could not display error page.
Error to display was: 'No contenido session variable set.
Probable error cause: Start article in this category is not set on-line.'";
}
else
{
header($errsite);
}
}

}

}

if (file_exists("config.after.php"))
{
@ include ("config.after.php");
}

function IP_match($network, $mask, $ip)
{

bcscale(3);
$ip_long = ip2long($ip);
$mask_long = ip2long($network);

#
# Convert mask to divider
#
if (ereg("^[0-9]+$", $mask))
{
/// 212.50.13.0/27 style mask (Cisco style)
$divider = bcpow(2, (32 - $mask));
}
else
{
/// 212.50.13.0/255.255.255.0 style mask
$xmask = ip2long($mask);
if ($xmask < 0)
$xmask = bcadd(bcpow(2, 32), $xmask);
$divider = bcsub(bcpow(2, 32), $xmask);
}
#
# Test is IP within specified mask
#
if (floor(bcdiv($ip_long, $divider)) == floor(bcdiv($mask_long, $divider)))
{
# match - this IP is within specified mask
return true;
}
else
{
# fail - this IP is NOT within specified mask
return false;
}
}

if (isset ($savedlang))
{
$lang = $savedlang;
}
page_close();

?>

Verfasst: Do 16. Feb 2006, 18:57
von emergence
ähm die front_content.php hat keinen fehler...

Code: Alles auswählen

eval()'d code on line 210
bedeutet das bei zeile 210 des evaluierten codes ein fehler aufgetreten ist...

wie kann man sich diesen code ansehen bevor er ausgeführt wird ?
siehe -> http://contenido.org/forum/viewtopic.ph ... tput#70160

Verfasst: Do 16. Feb 2006, 20:24
von ultha
hallo emergence,

danke erstmal für Deinen Tipp mit:

Code: Alles auswählen

/* To output the code when editing and browsing the frontend, set 
   this to true */ 
$cfg["debug"]["codeoutput"] = false; 
Vielleicht sehe ich ja dann woran es liegen mag.
Habe auch zwischenzeitlich die con_code geleert.
Leider auch ohne Erfolg.

Verfasst: Fr 17. Feb 2006, 11:45
von ultha
bei der geteilten Navigation wird weiterhin nicht das Submenue angezeigt.
Und ich bekomme folgende Fehler angezeigt.

im errorlog steht dazu folgendes:
[17-Feb-2006 10:45:30] /cmstest/cms/front_content.php?idcat=10&idart=9 MySQL error 1064:
You have an error in your SQL syntax.
Check the manual that corresponds to your
MySQL server version for the
right syntax to use near '.public,

C.idcatlang,
C.startidartlang
FROM
con_cat_tree AS
SELECT
A.idcat,
C.name
C.public,
C.idcatlang,
C.startidartlang
FROM
con_cat_tree AS A,
con_cat AS B,
con_cat_lang AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '1' AND
C.idlang = '1' AND
C.visible = '1' AND
B.parentid = ''
ORDER
BY A.idtree

[17-Feb-2006 10:45:30] /cmstest/cms/front_content.php?idcat=10&idart=9 next_record called with no query pending in Module ID 49.


habe den Codeabschnitt im Modul für den zweiten Teil der
Navigation Level 2-5 gefunden und bei:
#$db2->next_record();
Bei der markierten Zeile gibt es den Break.

Code: Alles auswählen

/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext,
a.idartlang AS idartlang
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";

$db2->query($sql);
#$db2->next_record();
$flag = false;
while ($db2->next_record()&&!$flag) {
if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
{
$flag = true;
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';

$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"idart" => $db->f("startidartlang"),
"public" => $db->f("public"),
"idcatlang" => $db->f("idcatlang"),
"target" => $target);
}
}
}
Vielleicht kann mir jemand was dazu sagen.

Das komische an der ganzen Sache ist, das es mit dem Layout von
dem BeispielProjekt (siehe erstes Posting) klappt. Es wird das Submenue
ganz normal ohne Fehler angezeigt.

Nur in meinem Layout klappt die Anzeige nicht.
Habe aber in meinem Layout alles so gemacht wie im Beispiellayout.
Only die Positionierung ist etaws anders, da ich noch einige Container mehr definiert habe.
was läuft hier schief. Blicke nicht mehr durch :(

grüße Ulli

Verfasst: Fr 17. Feb 2006, 11:50
von rezeptionist
ähm kann das sein das hier mal wieder ein Komma fehlt

zwischen "C.name" und "C.public" ??

EDIT:

wenn es diese navi ist dann steht es ganz unten wenn nicht will ich nichts gesagt haben und vergrabe mich :wink:
http://contenido.org/forum/viewtopic.ph ... omma+fehlt

Verfasst: Fr 17. Feb 2006, 13:07
von ultha
hallo rezeptionist,

das mit dem Komma ist mit Sicherheit richtig.
Nur war es in diesem Fall nicht die Ursache.
PHP übergeht das Fehlen des Komma's anscheinend.

Die Problem in diesem Fall war das ich in meinem Layout
die Subnavigation vor der Headernavigation im code gesetzt habe.

Die Lösung: Headernav. vor die Subnavi. im Layout setzen:

Code: Alles auswählen

<div id="headerNavigation"><container id="10" types="Navigation" name="HeaderNavigation">HeaderNavigation</container></div>
<div id="navigation"><container id="12" name="MainNavigation">MainNavigation</container></div>
dadurch wurden keine Werte an die Subnav übergeben.
Da PHP den code ja von oben nach unten abarbeitet.
Also böse Falle :wink:

Verfasst: Fr 17. Feb 2006, 13:11
von rezeptionist
das mit der Reihenfolge hatte ich schon mal in nem anderen Thread angemerkt :wink:

Aber vielleicht kann mvf das zb. in seinem Thread noch einmal hervorheben mit der Reihenfolge :!:

und das fehlende Komma brachte ja doch was >> ein errorlog eintrag weniger :wink:

Hauptsache es geht nu :D