Page 1 of 2
Klasse currentpage für navbar
Posted: Wed Apr 27, 2011 10:31 am
by goethe
Hallo zusammen,
wir würden gerne bei einem Blog den aktiven Menüpunkt besonders hervorheben. Wir nutzen eine Abwandlung von Bulletproof als Template. Im Template sollte doch eigentlich folgender Code dazu führen, dass der aktive Link die Klasse "currentpage" zugewiesen wird:
Code: Select all
<ul>
{foreach from=$navlinks item="navlink" name="navbar"}
<li class="{if $currpage==$navlink.href}currentpage{/if}{if $smarty.foreach.navbar.first} navlink_first{/if}{if $smarty.foreach.navbar.last} navlink_last{/if}"><a href="{$navlink.href}" title="{$navlink.title|@serendipity_constant}">{$navlink.title|@serendipity_constant}</a></li>
{/foreach}
</ul>
Das scheint aus irgndeinem Grund nicht zu funktionieren, siehe
http://blog.goethe.de/testblog
Das aktive Listenelement enthält etnweder keine Klasse oder "navlink_first" oder "navlink_last", leider aber nicht "currentpage". Liegt es an der Prüfung auf die aktive Seite?
Vielen Dank schon mal für die Tipps,
Katrin
Re: Klasse currentpage für navbar
Posted: Wed Apr 27, 2011 12:21 pm
by yellowled
goethe wrote:Das aktive Listenelement enthält etnweder keine Klasse oder "navlink_first" oder "navlink_last", leider aber nicht "currentpage". Liegt es an der Prüfung auf die aktive Seite?
Habt Ihr den entsprechenden Codeschnippsel in der config.inc.php?
Code: Select all
$serendipity['smarty']->assign(array('currpage'=> "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
$serendipity['smarty']->assign(array('currpage2'=> $_SERVER['REQUEST_URI']));
Falls ja, solltet Ihr zusätzlich auf $currpage2 prüfen, also im Code für die Navigation
Code: Select all
{if $currpage==$navlink.href or $currpage2==$navlink.href}currentpage{/if}
Ansonsten kommt es darauf an, ob/wie Ihr den Pfad zur Seite in den theme options angebt.
YL
Re: Klasse currentpage für navbar
Posted: Thu Apr 28, 2011 9:03 am
by goethe
Hi yellowled,
vielen Dank für den Tipp.
In der config.inc.php war der zweite Codeschnipsel, der die URI in currpage2 schreibt, nicht enthalten.
Leider kann ich im Moment aber nicht richtig testen, weil die Änderungen, die ich an der config.inc.php und der index.tpl vorgenommen habe, nicht aktiv werden. Ich habe schon alle Dateien aus dem templates_c-Verzeichnis gelöscht, das hat aber nicht geholfen. Evtl. ein Berechtigungsproblem bei uns auf dem Server, das ich noch prüfen lassen muss.
Danke trotzdem schon mal.
Gruß,
Katrin
Re: Klasse currentpage für navbar
Posted: Thu Apr 28, 2011 4:51 pm
by goethe
Hi yellowled,
mit den Änderungen in der config.inc.php und der index.tpl klappt die Zuweisung der Klasse jetzt.
Vielen Dank für die Hilfe.
Allerdings stehen wir immer noch vor dem Problem, dass die ausgegebenen Seiten die Änderungen in den template-Dateien (z.b. index.tpl) nicht enthalten. Das Löschen der Dateien in templates_c hilft da leider auch nichts. Hast Du eine Idee woran das noch liegen könnte?
Viele Grüße,
Katrin
Re: Klasse currentpage für navbar
Posted: Thu Apr 28, 2011 10:23 pm
by yellowled
goethe wrote:Allerdings stehen wir immer noch vor dem Problem, dass die ausgegebenen Seiten die Änderungen in den template-Dateien (z.b. index.tpl) nicht enthalten.
Äh, die Menueinträge erhalten doch jetzt die Klasse currentpage? Im Firefox 4 zumindest werden die Menüpunkte auch korrekt hervorgehoben. Was ist denn dann noch das Problem?
YL
Re: Klasse currentpage für navbar
Posted: Fri Apr 29, 2011 8:46 am
by goethe
Ich habe die Änderungen an der index.tpl und in der config.inc.php auch bei einem anderen Blog vorgenommen. Allerdings werden die Änderungen bei den ausgelieferten Seiten nicht wirksam. Auch ein Leeren des templates_c-Verzeichnisses hat nichts gebracht.
Viele Grüße,
Katrin
Re: Klasse currentpage für navbar
Posted: Fri Apr 29, 2011 10:16 am
by Timbalu
Überprüfe doch mal im ausgegebenen Quelltext der Seite im <head> Bereich, ob der template Pfad wirklich deinem geänderten Template entspricht. So hört sich das für mich an... und ist das ein gänzlichst anderer Blog mit eigener S9y Installation?
Re: Klasse currentpage für navbar
Posted: Wed May 04, 2011 6:00 pm
by goethe
Hi Ian,
hm, der <head> schaut irgendwie komisch aus:
http://blog.goethe.de/transit
Da fehlt das schließende Tag. In der index.tpl sieht es da aber genauso aus wie bei unserem Testblog:
http://blog.goethe.de/testblog:
Code: Select all
{if $is_embedded != true}
{if $is_xhtml}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
{else}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
{/if}
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang}" lang="{$lang}">
<head>
<title>{$head_title|@default:$blogTitle}{if $head_subtitle} - {$head_subtitle}{/if}</title>
{serendipity_hookPlugin hook="frontend_header"}
<meta http-equiv="Content-Type" content="text/html; charset={$head_charset}" />
<meta name="Powered-By" content="Serendipity v.{$head_version}" />
<link rel="alternate" type="application/rss+xml" title="{$blogTitle} RSS feed" href="{$serendipityBaseURL}{$serendipityRewritePrefix}feeds/index.rss2" />
<link rel="alternate" type="application/x.atom+xml" title="{$blogTitle} Atom feed" href="{$serendipityBaseURL}{$serendipityRewritePrefix}feeds/atom.xml" />
{if $entry_id}<link rel="pingback" href="{$serendipityBaseURL}comment.php?type=pingback&entry_id={$entry_id}" />{/if}
<!-- uncomment the line below if your site uses a favicon -->
<!-- <link rel="shortcut icon" href="{$serendipityBaseURL}favicon.ico" /> -->
<!-- base styles needed for bulletproof -->
<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="base.css"}" />
<!-- style.css -->
<link rel="stylesheet" type="text/css" href="{$head_link_stylesheet}" />
<!--[if IE 5]>
<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="ie5.css"}" />
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="ie6.css"}" />
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="ie7.css"}" />
<![endif]-->
<!-- additional colorset stylesheet -->
<link rel="stylesheet" type="text/css" href="{$serendipityHTTPPath}templates/{$template}/{$template_option.colorset}_style.css" />
{if $template_option.custheader == 'true'}
<style type="text/css">
#serendipity_banner {ldelim}
background-image: url({$random_headerimage|@default:$template_option.headerimage});
background-position: {$template_option.headerposhor} {$template_option.headerposver};
{if $template_option.headertype == 'banner'}
background-repeat: no-repeat;
{elseif $template_option.headertype == 'htiled'}
background-repeat: repeat-x;
{elseif $template_option.headertype == 'vtiled'}
background-repeat: repeat-y;
{elseif $template_option.headertype == 'btiled'}
background-repeat: repeat;
{/if}{rdelim}
</style>
{/if}
{if $template_option.jscolumns == 'true'}<script type="text/javascript" src="{$serendipityHTTPPath}templates/{$template}/js/p7_eqCols2_10.js"></script>{/if}
<!-- print media stylesheet -->
<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="print.css"}" media="print" />
<!-- additional user stylesheet: this can be used to override selected styles -->
{if $template_option.userstylesheet == 'true'}<link rel="stylesheet" type="text/css" href="{serendipity_getFile file="user.css"}" media="screen" />{/if}
</head>
<body{if $template_option.jscolumns == 'true'} onload="P7_equalCols2(0,{if $template_option.layouttype != '1col'}'content','DIV',{/if}'serendipityLeftSideBar','DIV','serendipityRightSideBar','DIV')"{/if}>
{else}
{serendipity_hookPlugin hook="frontend_header"}
{/if}
Wir haben eine "Shared Installation", so wie in der Dokumentation (
http://www.s9y.org/41.html) beschrieben.
Ich bin ratlos oder steh auf dem Schlauch.
Viele Grüße,
Katrin
Re: Klasse currentpage für navbar
Posted: Wed May 04, 2011 6:51 pm
by Timbalu
Dieser ganze Part hat im head Bereich einer html Seite nichts zu suchen.
Code: Select all
<div class="obereNaviTyp3_ar">
<div class="metanavi">
<ul>
<li><img border="0" alt="" class="serendipity_image_x" src="http://blog.goethe.de/transit/uploads/Basics/ar-flg_ac.gif"></li>
<li><a href="http://blog.goethe.de/transit/index.php?user_language=de"><img class="serendipity_image_x" src="http://blog.goethe.de/transit/uploads/Basics/de-flg.gif" alt="" /></li>
<li><a href="http://blog.goethe.de/transit/pages/contact_ar.html">اتصل بنا</a></li>
</ul></div></div>
WER hat denn den dort
WIE reingetan? Es ist natürlich eure obere navigation bar, aber an völlig falscher Stelle im Ausgabecode. Außerdem springt sie ständig von recht nach links und vice versa, je nach Sprache...
Der template path ist /transit/templates/transit/ - hattest du dessen config.inc.php und index.tpl geändert?
Abgesehen davon solltet ihr aus Sicherheitsgründen dringend auf die Serendipity 1.5.5 updaten!!!
(
wenn wir jetzt noch ein wenig warten, kommt bestimmt einer vorbei der meinen Senf nochmal in seinen Worten wiedergibt...! 
)
Re: Klasse currentpage für navbar
Posted: Wed May 04, 2011 8:44 pm
by yellowled
Timbalu wrote:WER hat denn den dort WIE reingetan?
Kann es sein, dass Ihr serendipity_event_head_nugget unsachgemäß benutzt? Dass da irgendjemand <head> und „Kopfbereich der Seite“ verwechselt und gedacht hat, man könne damit HTML-Code im Kopfbereich ausgeben?
YL
Re: Klasse currentpage für navbar
Posted: Thu May 05, 2011 8:46 am
by Timbalu
@YL
gute Idee!
Zwei Anmerkungen noch:
- 2. Eure PHP Version ist 5.1.6 und nahezu 5 Jahre alt. In diesen heutigen Zeiten ist das eine ziemlich lange Zeit. Erst mit mindesten 5.2.x(6?) laufen einige der benutzen Dinge erst richtig. Es können also auch PHP Versions Probleme auftreten, die merkwürdige Dinge nach sich ziehen. Deshalb solltet ihr unabhängig vom upgrade auf die letzte Serendipity Version auch an der PHP Version arbeiten.
Re: Klasse currentpage für navbar
Posted: Thu May 05, 2011 10:33 am
by goethe
Hi zusammen,
vielen Dank für die Hinweise.
WER hat denn den dort WIE reingetan? Es ist natürlich eure obere navigation bar, aber an völlig falscher Stelle im Ausgabecode. Außerdem springt sie ständig von recht nach links und vice versa, je nach Sprache...
Vermutlich waren es Martin oder Astrid, die hier das serendipity_event_head_nugget unsachgemäß verwendet haben, aber das hilft dir/euch auch nicht weiter
Die Metanavi habe ich jetzt allerdings aus dem Head entfernt.
Der template path ist /transit/templates/transit/ - hattest du dessen config.inc.php und index.tpl geändert?
Das habe ich die Änderungen sind sowohl in der config.inc.php, als auch in der index.tpl geändert.
Interessanterweise sind sie auch in der
transit^%%12^124^124423C4%%index.tpl im templates_c-Verzeichnis zu sehen. Aber eben nicht in den ausgegebenen Seiten.
Re: Klasse currentpage für navbar
Posted: Thu May 05, 2011 4:46 pm
by Timbalu
Martin oder Astrid ... sehr witzig!
goethe wrote:Interessanterweise sind sie auch in der transit^%%12^124^124423C4%%index.tpl im templates_c-Verzeichnis zu sehen. Aber eben nicht in den ausgegebenen Seiten.
Wirklich? Zeig mal her ...
und zeige mal ebenfalls die jeweiligen Stellen aus den templates/blah/*.tpl Dateien (wahrscheinlich index.tpl), wo die Klassen für die <li class="xxx"> gebildet werden und zwar aus dem testblog und dem transit blog.
Re: Klasse currentpage für navbar
Posted: Thu May 05, 2011 6:07 pm
by goethe
Hi Ian,
also, hier kommen die Auszüge:
transit^%%12^124^124423C4%%index.tpl im templates_c-Verzeichnis
Code: Select all
<!-- #sitenav: this holds a list of navigational links which can be customized Test-->
<!-- in the theme configurator -->
<div id="sitenav" class="snabove">
<ul>
<li>Cachetest</li>
<?php $_from = $this->_tpl_vars['navlinks']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['navbar'] = array('total' => count($_from), 'iteration' => 0);
if ($this->_foreach['navbar']['total'] > 0):
foreach ($_from as $this->_tpl_vars['navlink']):
$this->_foreach['navbar']['iteration']++;
?>
<li class="<?php if ($this->_tpl_vars['currpage'] == $this->_tpl_vars['navlink']['href'] || $this->_tpl_vars['currpage2'] == $this->_tpl_vars['navlink']['href']): ?>currentpage<?php endif; ?><?php if (($this->_foreach['navbar']['iteration'] <= 1)): ?> testnavlink_first<?php endif; ?><?php if (($this->_foreach['navbar']['iteration'] == $this->_foreach['navbar']['total'])): ?> navlink_last<?php endif; ?>"><a href="<?php echo $this->_tpl_vars['navlink']['href']; ?>
" title="<?php echo serendipity_constant($this->_tpl_vars['navlink']['title']); ?>
"><?php echo serendipity_constant($this->_tpl_vars['navlink']['title']); ?>
</a></li>
<?php endforeach; endif; unset($_from); ?>
</ul>
testblog^%%42^42F^42FC1111%%index.tpl im templates_c-Verzeichnis
Code: Select all
<!-- #sitenav: this holds a list of navigational links which can be customized Test-->
<!-- in the theme configurator -->
<div id="sitenav" class="snabove">
<ul>
<li>Cachetest</li>
<?php $_from = $this->_tpl_vars['navlinks']; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array'); }$this->_foreach['navbar'] = array('total' => count($_from), 'iteration' => 0);
if ($this->_foreach['navbar']['total'] > 0):
foreach ($_from as $this->_tpl_vars['navlink']):
$this->_foreach['navbar']['iteration']++;
?>
<li class="<?php if ($this->_tpl_vars['currpage'] == $this->_tpl_vars['navlink']['href'] || $this->_tpl_vars['currpage2'] == $this->_tpl_vars['navlink']['href']): ?>currentpage<?php endif; ?><?php if (($this->_foreach['navbar']['iteration'] <= 1)): ?> testnavlink_first<?php endif; ?><?php if (($this->_foreach['navbar']['iteration'] == $this->_foreach['navbar']['total'])): ?> navlink_last<?php endif; ?>"><a href="<?php echo $this->_tpl_vars['navlink']['href']; ?>
" title="<?php echo serendipity_constant($this->_tpl_vars['navlink']['title']); ?>
"><?php echo serendipity_constant($this->_tpl_vars['navlink']['title']); ?>
</a></li>
<?php endforeach; endif; unset($_from); ?>
</ul>
templates/testblog/index.tpl:
Code: Select all
<!-- #sitenav: this holds a list of navigational links which can be customized -->
<!-- in the theme configurator -->
<div id="sitenav" class="snabove">
<ul>
<li>Cachetest</li>
{foreach from=$navlinks item="navlink" name=navbar}
<li class="{if $currpage==$navlink.href or $currpage2==$navlink.href}currentpage{/if}{if $smarty.foreach.navbar.first} testnavlink_first{/if}{if $smarty.foreach.navbar.last} navlink_last{/if}"><a href="{$navlink.href}" title="{$navlink.title|@serendipity_constant}">{$navlink.title|@serendipity_constant}</a></li>
{/foreach}
</ul>
templates/testblog/index.tpl:
Code: Select all
<!-- #sitenav: this holds a list of navigational links which can be customized -->
<!-- in the theme configurator -->
<div id="sitenav" class="snabove">
<ul>
{foreach from=$navlinks item="navlink" name=navbar}
<li class="{if $currpage==$navlink.href or $currpage2==$navlink.href}currentpage{/if}{if $smarty.foreach.navbar.first} navlink_first{/if}{if $smarty.foreach.navbar.last} navlink_last{/if}"><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>
{/foreach}
</ul>
Reicht das, oder brauchst Du die komplette Datei?
Bitte beachten: wir nutzen ein CDN. Um nicht auf gecachten Inhalt zuzugreifen, muss man http://
origin-blog.goethe.de/... aufrufen. Nicht dass uns das auch noch in die Quere kommt.
Grüße,
Katrin
Re: Klasse currentpage für navbar
Posted: Thu May 05, 2011 6:31 pm
by Timbalu
Nee, brauche ich nicht ...
Klar ist, dass hier $_SERVER['REQUEST_URI'] nicht greift, weil ihr im Testblog mit seite_2.html, im transit auf /transit/categories/10-diary endet.
Augenblick, ich muss darüber mal kurz nachsinnen ....
Edit:
probier mal die Stelle in der config.inc.php $_SERVER['REQUEST_URI'] mit $_SERVER['PHP_SELF'] zu ersetzen...