Aktivlinks bei interner Verlinkung

Hilfe zu Modulen und Tags
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Aktivlinks bei interner Verlinkung

Post by Foaly* »

Hallo,

auf einer CMSmadesimple gestützte Website nutze ich Aktivlinks für die Hauptnavigation. Gibt es eine Möglichkeit den eigentlich geklickten Link als aktiv zu setzen anstelle des Verlinkungsziels?

Danke
cyberman

Re: Aktivlinks bei interner Verlinkung

Post by cyberman »

Möglicherweise stehe  ich ja auf dem Schlauch, aber was sind "Aktivlinks"?
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

Was ich meine, ist die Kennzeichnung des Menüitems, der gerade aufgerufen ist, mit einer Klasse, um ihn optisch hervorzuheben. Hab den etwas missverständlichen Begriff schon für mich eingebürgert gehabt ;)

Vielleicht kann mir nach besserem Verständnis eher Jemand helfen... :)
NaN

Re: Aktivlinks bei interner Verlinkung

Post by NaN »

Sowas kann man im Menü-Template festlegen.
Da gibt es eine Variable $node->current (boolean).
Weiß jetzt nicht wie Dein Menü-Template aussieht.
Schau mal in die mitgelieferten Menü-Templates.
Bei einigen wird die aktive Seite im Menü als dargestellt.
Dort kann man auch eine Klasse angeben.

Aber ich habe das Gefühl, Du redest nicht von normalen Menüpunkten, oder?
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

Bei interner Verlinkung leitet das System einfach auf den URL der verlinkten Seite weiter, sodass die Eigenschaft current beim falschen Objekt gesetzt ist. Hierfür suchte ich ein Workaround.

Danke für alle Hilfe.
antibart
Power Poster
Power Poster
Posts: 1162
Joined: Sun Aug 17, 2008 9:29 am

Re: Aktivlinks bei interner Verlinkung

Post by antibart »

Foaly* wrote: Bei interner Verlinkung leitet das System einfach auf den URL der verlinkten Seite weiter, sodass die Eigenschaft current beim falschen Objekt gesetzt ist. Hierfür suchte ich ein Workaround.
Ich verstehe noch immer kein Wort. Bzw : ich verstehe nicht, wo das Problem ist. Kannst Du das nicht mal visualiseren?

Für die  Menü-Eigenschaft current gibt es die css-Klasse .currentpage ... Über jene kannst du den Look des gerade aktiven Menüpunktes steuern.

Scheinbar möchtest Du aber irgendwas anderes. Bloß was?

...
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

Mein Geist scheint in einer anderen Gegend rumzuschwirren als die aller anderen hier...  ???

Im Folgenden Bild das Ganze visualiert. Der Benutzer geht mit der Maus auf den Punkt Pflegerente im Register Risiko Vorsorge (weiße Schrift bei hover), wird dann bei Klicken durch die interne Verlinkung auf den Punkt Pflegerente im Register Altersvorsorge umgeleitet. Dieser Punkt ist dann aktiv (schwarze Schrift), nicht jedoch der angeklickte!

Image
mike-r

Re: Aktivlinks bei interner Verlinkung

Post by mike-r »

Du möchtest also zwei aktive Punkte haben? Das wird bei einer Weiterleitung nicht so ohne Weiteres funktionieren...
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

Ich möchte am liebsten nur einen, nämlich den angeklickten. Ist mir schon klar, dass das nicht so einfach wird.. Vielleicht hat Jemand Anregungen.
antibart
Power Poster
Power Poster
Posts: 1162
Joined: Sun Aug 17, 2008 9:29 am

Re: Aktivlinks bei interner Verlinkung

Post by antibart »

Foaly* wrote: Ist mir schon klar, dass das nicht so einfach wird..
Sofern ich dich richtig verstehe: Ich fürchte, es wird nicht nur schwer, es widerspricht sogar der Logik, solange es die Seite "Pflegerente" nur einmal unter einer einmaligen URL gibt.

Also: du hast einen Punkt in der Hierarchie

6. Risiko Vorsorge
 -> 6.7 Pflegerente

Und jener soll auch als "Aktivlink" erscheinen.
Der Inhalt,  bzw die eigentlich aktive Seite befindet sich aber tatsächlich ganz woanders, nämlich hier:

1. Altervorsorge
-> 1.5 Pfllegerente

Dorthin geht deine Weiterleitung und dort wird er - zwar gegen deinen Wunsch, aber dennoch völlig logisch - auch als aktiv angezeigt.

Was Du scheinbar möchtest, ist den Menüpunkt einer Seite als aktiv markiert haben, die in Wirklichkeit gar nicht aktiv ist. Also sallop gesagt : "einen aktive, neue Seite vorgaukeln". Dein Ziel ist vermutlich, dass du ein und denselben Inhalt nicht mehrfach anlegen möchtest - dennoch soll dieser Inhalt von zwei Menüpunkten aus  erreichbar sein und wie eine eigenständige, einmalige Seite  behandelt werden. Das ist mMn unlogisch.

Dein Plan würde nicht mal bei einer statischen Seite funktionieren, ohne die Seite "Pflegerente" zweimal unter verschiedenen URLs anzulegen und die Menüklassen individuell anzupassen.

Ich sehe momentan zwei Konstrukte:

1. Wenn der Inhalt von "Pflegerente" häufiger in mehreren Submenüs vorkommen soll, wäre es besser, Du kopierst dei Seite einfach. Es gibt rechts neben der Seitenauflistung eine Kopierfunktion, mit der das sehr schnell und einfach zu machen ist, ohne extra eine neue Seite anlegen und den kompletten Inhalt in die Zwischenablage kopieren zu müssen.

2. Wenn er dagegen nur einmal vorkommen soll, namlich unter "Risikovorsorge", müsstest du ihn auch dort hinschieben, statt eine eine interne Weiterleitung von Altersvorsorge einzurichten.



..
Last edited by antibart on Thu Nov 05, 2009 10:11 am, edited 1 time in total.
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

antibart wrote: 1. Wenn der Inhalt von "Pflegerente" häufiger in mehreren Submenüs vorkommen soll, wäre es besser, Du kopierst dei Seite einfach. Es gibt rechts neben der Seitenauflistung eine Kopierfunktion, mit der das sehr schnell und einfach zu machen ist, ohne extra eine neue Seite anlegen und den kompletten Inhalt in die Zwischenablage kopieren zu müssen.

2. Wenn er dagegen nur einmal vorkommen soll, namlich unter "Risikovorsorge", müsstest du ihn auch dort hinschieben, statt eine eine interne Weiterleitung von Altersvorsorge einzurichten.
So unsinnig, wie du sagst, ist das nicht! Es geht darum, dem Benutzer anzuzeigen, auf welchen Link er gerade geklickt hat. Somit ist auch ein schnelles Blättern durch die Seiten möglich. Da manche Seiten logisch unter mehrer Hauptpunkte gehören, muss hier eine Verdopplung stattfinden. Ein einfaches Kopieren ist aber suchmaschinentechnisch nahe am Herztod, kommt also nicht in Frage.

Warum soll ein anzeigen der angewählten Seite durch eine optische Hervorhebung nicht sinnvoll sein?!
Last edited by Foaly* on Thu Nov 05, 2009 1:10 pm, edited 1 time in total.
NaN

Re: Aktivlinks bei interner Verlinkung

Post by NaN »

CMSms kann nur die Seiten als aktiv anzeigen, die auch tatsächlich aktiv sind.
Welcher Link auf diese Seite geführt hat, ist dem CMS vollkommen wurscht.

Mein Lösungsansatz wäre, im MenuTemplate bei Einträgen vom Typ Link (müsste mit {if $node->type=='link'} ... {/if} herauszufinden sein) an die URL eine Variable mit der ID dieses Eintrags dranzuhängen (url}?link={$node->id}" ...  bzw. url}&link={$node->id}" - je nachdem, ob pretty URLs verwendet werden).
Dann kannst Du, wenn der Link angewählt wurde, via Smarty die $_GET Variablen prüfen und mit Alias/ID der Menüeinträge vergleichen. Stimmen sie überein, voillá!

Code: Select all


{if $smarty.get.link==$node->id} ... mach mir den Link aktiv ... {/if}

Nachteil ist allerdings, dass die Pretty URLs bei diesen Seiten etwas vehunzt werden: meineDomain.de/referenzen?link=42
antibart
Power Poster
Power Poster
Posts: 1162
Joined: Sun Aug 17, 2008 9:29 am

Re: Aktivlinks bei interner Verlinkung

Post by antibart »

Foaly* wrote:
Warum soll ein anzeigen der angewählten Seite durch eine optische Hervorhebung nicht sinnvoll sein?!
Das ist durchaus sinnvoll - und genau das passiert ja auch:  die angewählte, aktive Seite ist "Altervorsorge -> Pflegerente" und jene wird hervorgehoben. Dass sich irgendwo im Web -  egal ob intern oder extern - ein Link dorthin befindet, ist der Seite zunächst mal egal. Das ist wie ein Nachsendeantrag bei der Post: die Post landet dort, wo ich tatsächlich wohne. Auch wenn auf dem Brief die alte Adresse steht. Und dort, wo ich wohne, brennt eben auch Licht. In meiner alten Wohnung brennt kein Licht. Andernfalls müsste ich eben zwei Wohnungen mieten.

Und nur zum Verständnis: ich sage nicht, dass dein Gedanke ansich unsinnig ist.
Aber ich habe den Eindruck, du suchst eine relativ aufwändige  Lösung für ein Problem, was eigentlich keines ist.

Foaly* wrote:Ein einfaches Kopieren ist aber suchmaschinentechnisch nahe am Herztod, kommt also nicht in Frage.
Dem Gesundheitsrisiko könnte man mit einem simplen noindex für den Duplicate Contnet vorbeugen .;) DAmit wärst Du auf der sicheren Seite.

Noch viel, viel besser wäre natürlich, den Content einfach etwas zu variieren. Da er sich ja unter zwei verschiedenen Themenkomplexen befindet, sollte es nicht allzu schwer sein, den Text thematisch ein wenig anzupassen, ohne ihn gleich ganz neu zu schreiben  - und das wäre wiederum ein deutlicher SEO-Pluspunkt. Auch für den User wäre das sehr zuvorkommend. Es wertet die Usability  ja nicht gerade auf, wenn ich durch eine Seite navigiere und mehrfach den gleichen Inhalt untergejubelt bekomme..

NaNs Vorschlag wäre zwar eine Möglichkeit, aber da es dir ja um SEO geht, sollten die pretty URL schon möglichst pretty  bleiben.

Das Kopieren der Seiten dauert ca 15 Sekunden, den DC auszuschließen noch mal 1 Minute. Meinst du nicht, dass das am Ende effektiver ist, als tagelang ein Konstrukt zu entwickeln, nur um einem aktiven Menüpunkt zu "faken"?

Ein weiterer gedanklicher Ansatz wäre ein iframe-Konstrukt .. Aber wie gesagt: irgendwie ist das alles "von hinten durdch die Mitte, und dann noch mal außenrum wieder zurück" ...





...
Last edited by antibart on Fri Nov 06, 2009 2:50 pm, edited 1 time in total.
Foaly*
Translator
Translator
Posts: 150
Joined: Sun Mar 29, 2009 3:32 pm

Re: Aktivlinks bei interner Verlinkung

Post by Foaly* »

Ich freue mich sehr, dass doch noch konstruktiv auf meinen Gedanken eingegangen wurde!

Für mich stellen sich nun zwei Alternativen:
  • Anhängen der GET Variable, wie von NaN vorgeschlagen und Arbeiten mit Google's Cannonical Tag.
  • Arbeiten mit einer Kopie und Anpassung des Textes bzw. Einsatz von noindex.
Danke soweit.
faglork

Re: Aktivlinks bei interner Verlinkung

Post by faglork »

Seht ihr es jetzt endlich ein? Seit langen sage ich immer wieder dass die Logik der neuen default-templates der Version 1.6x falsch ist und fordere einen Bugfix.
In den Versionen VOR 1.6 war das nämlich noch korrekt.

Foaly: hier ist der code von simple_navigation.tpl der Version 1.5.x:

Code: Select all

{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *}

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->current == true}
<li class="currentpage"><h3><dfn>Current page is {$node->hierarchy}: </dfn>{$node->menutext}</h3>

{elseif $node->parent == true}
<li class="activeparent"><a class="activeparent" href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
<li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
Leg ein neues Navigation-Template an, kopier den Code da rein, speicher es und verwende es in deinen Seitentemplates.

Dann funktioniert alles wieder wie es soll.

Ich frag mich WANN dieser dämliche Bug endlich gefixt wird. Das ist ein absoluter no-brainer, null Aufwand.
(Ja, ich hab den Bug gemeldet).

Servus,
Alex
Post Reply

Return to “Module und Tags”