OXID Community Forum

> German forum > Templates und Design > Verweis zu CMS-Seite als aktiv markieren
Login
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Thread: Verweis zu CMS-Seite als aktiv markieren


Reply
 
Thread Tools Display Modes
#Top   #1  
Old 04-06-2011, 08:13 PM
orca-services's Avatar
orca-services orca-services is offline
Member
Join Date: Mar 2011
Location: Muttenz, Schweiz
Posts: 36
orca-services is on a distinguished road
Default Verweis zu CMS-Seite als aktiv markieren

Tach allerseits

Zerbreche mir gerade den Kopf darüber, wie ich einen Verweis auf eine CMS-Seite als "aktiv" (zwecks CSS-Manpiulation) markieren kann.

Habe zwar ein paar Lösungsanssätze im Forum gefunden, jedoch sind die teilweise relativ alt bzw. empfinde ich die meisten eher als gebastel.
Gibt es da einen offiziellen "Nach Handbuch (wenn es denn drin stehen würde)"-Weg?

Idee:
Ich habe eine CMS Seite namens "Über uns" mit ident oxaboutus. Diese wird in einem eigens erstellten Menü im Template verlinkt. Ich möchte nun, dass wenn ich auf diesen LInk klicke, dass ich ihm per CSS eine Klasse zuweisen kann (z.B. active).
Wie mach ich das?
Optimalerweise sollte die Lösung möglichst SEO kompatibel und vor allem in ein, zwei Zeilen machbar sein.

Grüsse aus Basel
Marc
Reply With Quote
#Top   #2  
Old 04-07-2011, 11:48 AM
Benny Benny is offline
Senior Member
Join Date: Mar 2009
Posts: 152
Benny is on a distinguished road
Default AW: Verweis zu CMS-Seite als aktiv markieren

Hi,

versuchs mal damit:

Code:
[{assign var="currentPage" value="http://"|cat:$smarty.server.HTTP_HOST|cat:$smarty.server.REQUEST_URI}]
[{oxifcontent ident="oxaboutus" object="oCont"}]
    <li[{ if $currentPage|htmlspecialchars == $oCont->getLink() }] class="active"[{/if}]>
        <a href="[{ $oCont->getLink() }]">[{ $oCont->oxcontents__oxtitle->value }]</a>
    </li>
[{/oxifcontent}]
Erklärung:
zuerst wird die aktuelle URL herausgefunden:
Code:
[{assign var="currentPage" value="http://"|cat:$smarty.server.HTTP_HOST|cat:$smarty.server.REQUEST_URI}]
später wird dann getestet, ob die aktuelle URL die gleiche ist, auf die ich verlinken möchte um dann ggf die Klasse zu setzen:
Code:
[{ if $currentPage|htmlspecialchars == $oCont->getLink() }]
Das |htmlspecialchars verwandelt die Sonderzeichen in der $currentPage Variable in HTML-Entities, genauso wie es die getLink() Funktion im Prinzip auch macht.
__________________
jankowfsky
e-commerce

www.jankowfsky.com
E-Mail: info@jankowfsky.com
Telefon: 0800 1656679 (gebührenfrei)
Reply With Quote
#Top   #3  
Old 04-07-2011, 12:30 PM
orca-services's Avatar
orca-services orca-services is offline
Member
Join Date: Mar 2011
Location: Muttenz, Schweiz
Posts: 36
orca-services is on a distinguished road
Default AW: Verweis zu CMS-Seite als aktiv markieren

Quote:
Originally Posted by Benny View Post
Erklärung:
zuerst wird die aktuelle URL herausgefunden:
Code:
[{assign var="currentPage" value="http://"|cat:$smarty.server.HTTP_HOST|cat:$smarty.server.REQUEST_URI}]
später wird dann getestet, ob die aktuelle URL die gleiche ist, auf die ich verlinken möchte um dann ggf die Klasse zu setzen:
Code:
[{ if $currentPage|htmlspecialchars == $oCont->getLink() }]
Hi Benny.
Erst mal danke!

Hm... Dumme Frage, aber gibt es denn nicht schon eine Variable, welche von Haus aus die aktuelle, komplette Request-URI zur Verfüfung stellt?
Ich könnte mir vorstellen, dass diese Variable immer mal wieder Verwendung finden könnte. Klingt für mich nach einem No-Brainer, dass OXID so was zur Verfügung stellt. Oder überseh ich da etwas?
Ich könnte mir z.B. zwei Variabeln vorstellen, welche OXID zur Verfügung stellen könnte:
1. komplette Request-URI unecaped
2. komplette Request-URI escaped
oder zuminest eine der beiden.

Alternativ, um Speicher/Rechenzeit zu sparen, könnte man auch eine Funktion einbauen, welche dies nur auf Anfrage macht.
z.B.$oView->isCurrentPage( $category->getLink())
Reply With Quote
#Top   #4  
Old 04-15-2011, 02:39 PM
skshopdev skshopdev is offline
Member
Join Date: Apr 2011
Posts: 92
skshopdev is on a distinguished road
Default Re: Verweis zu CMS-Seite als aktiv markieren

Ich habe mir den aktuellen Link so gebaut:
PHP Code:
[{if $oView->getActiveLangAbbr() == "en"}]
        [{
assign var="link_current" value=$oxcmp_lang[1]->link}]
    [{else}]
        [{
assign var="link_current" value=$oxcmp_lang[0]->link}]
    [{/if}] 
In meinem Fall ist es ein Link auf eine eigene tpl. Den baue ich so:
PHP Code:
[{capture assign=link_menuitem}][{oxgetseourl ident=$oViewConf->getSelfLink()|cat:"cl=tpl&amp;tpl=customtpl.tpl"}][{/capture}] 
Das vergleiche ich dann später:
PHP Code:
[{if $link_menuitem == $link_current}] active[{/if}] 
Ich empfinde das allerdings auch nicht als eine optimale Lösung, vor allem wegen der Sprachabfrage, aber immerhin funktioniert es. Hier wäre eine eingebaute Funktion sehr sinnvoll. Ich hab wirklich lange gesucht und nix dergleichen gefunden :/
Reply With Quote
Reply

Bookmarks

Tags
aktiv, cmsseite, markieren, verweis

« Previous Thread | Next Thread »
Thread Tools
Display Modes

Nicht Sichtbar
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
mehrere Länder aktiv schalten Plattendealer Installation und Konfiguration 16 06-22-2012 01:09 PM
Frage zu Preise Aktiv bis... Priester Newbies 14 09-26-2010 11:26 AM
Gutscheinfeld nicht aktiv floko Installation und Konfiguration 1 08-17-2010 10:36 AM
Weisse Seite im Backend nach upgrade/kein verweis auf Javascript im head Anne M Newbies 0 01-29-2010 10:01 PM
Als gelesen markieren? mbierkandt Allgemeines 4 03-08-2009 06:39 PM

All times are GMT +1. The time now is 12:09 PM.