[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Navigation, Kategorie, Anker - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
micca
Beiträge: 7
Registriert: 12. Mär 2010, 19:01

Navigation, Kategorie, Anker

15. Mär 2010, 04:56

Hallo,

dies ist mein erster Beitrag und ich hoffe, dass ich nicht direkt in Ungnade falle, aufgrund meiner Anfängerfragen. :oops:

Es geht um Anker!

Ich habe eine Top-Navi und eine Sub-Navi (mit dieser werden Unterkategorien angezeigt).
Das Layout der Website enthält im oberen Bereich einen Bilderblock, der sich fast über den gesamten Bildschirm eines 15-Zoll Monitors erstreckt.

Wenn der Besucher nun den Bilderblock nach unten gescrollt hat und links aus der Sub-Navi einen weiteren Untermenüpunkt anwählt, springt er ja wieder komplett nach oben und muss erneut über den Bilderblock nach unten zum Text scrollen. Das ist nicht immer Sinnvoll, da sich der Bilderblock in den Unterkategorien nicht immer ändert.

In einer "normalen" XHTML-Seite würde ich einfach Anker setzen, aber in REDAXO und PHP mag mir keine Lösung einfallen.

Also! Noch mal mein Hilferuf: Ich möchte direkt aus der Navigation eine bestimmte Position (DIV-ID) im unteren Teil der Website "anspringen".

Wer kann mir helfen?

Viele Grüße
micca

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

15. Mär 2010, 05:59

Hallo und Willkommen im Forum!

Du hast doch in deinem Template bestimmt eine ID für eben den Inhalt nach dem Bilderblock vergeben. Diese kannst du über Anker genauso wie bisher anspringen.

Allerdings würde ich das nicht empfehlen, da es kein erwartetes Verhalten ist und den Benutzer der Seite irritiert. Dann schon eher die Bilder verkleinern.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

micca
Beiträge: 7
Registriert: 12. Mär 2010, 19:01

17. Mär 2010, 13:26

Xong hat geschrieben:Hallo und Willkommen im Forum!

Du hast doch in deinem Template bestimmt eine ID für eben den Inhalt nach dem Bilderblock vergeben. Diese kannst du über Anker genauso wie bisher anspringen.

Allerdings würde ich das nicht empfehlen, da es kein erwartetes Verhalten ist und den Benutzer der Seite irritiert. Dann schon eher die Bilder verkleinern.
Hi Xong!

Vielen Dank für die freundliche Begrüßung im Forum!

Eine ID habe ich vergeben und könnte somit einen bestimmten Anker "anspringen". Aber ich möchte dies direkt aus der Navigation, die von der Navigations Factory erstellt wurde, erreichen.
Das bedeutet doch (meine Vermutung), dass wenn die Navigations Factory die Menüpunkte erstellt, ihr mitgeteilt werden muss, an welchen Anker sie verweisen muss, oder?

Noch mal zum Verständnis warum ich das so haben möchte:

Den Bilderblock kann oder möchte ich nicht verkleinern, da sonst das Layout der Site grundlegend anders aussehen würde.
Im Prinzip gliedert sich die Website in zwei Teile - den oberen Bereich mit dem Bilderblock und den unteren Bereich der dann Subnavigation, Textinhalte, Bilder, etc. enthält.
Befindet sich der Besucher auf bestimmten Unterkategorien, macht es keinen Sinn, ihn wieder oben starten zu lassen da sich der Bilderblock nicht verändert hat. Deshalb möchte ich das ganz gerne per Anker lösen.

Viele Grüße
micca

Benutzeravatar
gege
Beiträge: 83
Registriert: 4. Aug 2006, 12:05
Wohnort: near stuttgart
Kontaktdaten: Website

19. Mär 2010, 14:35

Hast Du schon eine Lösung gefunden?
Steh gerade vor dem gleichen Problem.

micca
Beiträge: 7
Registriert: 12. Mär 2010, 19:01

19. Mär 2010, 23:36

leider nein...! :(

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

20. Mär 2010, 11:28

hallo mica,

die Navigations Factory kenne ich zwar nicht, aber die lässt sich doch bestimmt erweitern. Wenn Du nun eine switch case-Anweisung einbaust, in der Du als Auswahlkriterium das Navi-Item setzt und im case die div-id einer Variablen zuweist und im href die Variable als Anker einfügst. Das müsste doch gehen.
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

21. Mär 2010, 00:52

Hallo ihr beiden,

also Nav Factory wurde ich an eurer stelle nicht ändern, besser Finger weg wenn Ihr nicht 100% wisst was Ihr macht.
Das denn was am Design nicht stimmt Sag ich jetzt mal nicht :O) sondern dann nimmt ein Navi aus den Download Bereich/Templates, die sind um einiges einfacher aufgebaut und lassen sich einfacher umbauen. zB das bei allen Seiten-ID ausser 1,8,199 oder so oder anders rum immer ein Anker mit im Link ist.

Cheffchen

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

21. Mär 2010, 12:00

hallo cheffchen,

da muss ich Dir zustimmen, mit einer Navi aus dem download wäre das gut zu lösen.
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

micca
Beiträge: 7
Registriert: 12. Mär 2010, 19:01

24. Mär 2010, 01:53

Hi,

viele Lösungsansätze sind ja bisher noch nicht aufgelaufen. :wink:

Nun denn, ich stimme zu, dass die Navigations Factory besser nicht verändert werden sollte.
Aber leider fehlt mir auch ein Ansatz für die Umsetzung mit einem Navi-Template aus dem Download. :-(

Kann jemand Hilfestellung leisten?

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

24. Mär 2010, 11:26

hallo,

das habe ich doch schon getan.
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

24. Mär 2010, 22:22

Bitte.

Sie haben POST :O)

Cheffchen

Hier nun doch der code

ich habe nur die Universal Navigation angepasst.
Es soll gleich aus der Navi zu immer den gleichen Anker springen auf bestimmten Seiten.

Änderungen:
Zeile 74-81 neu, dort auch die Sieten ID und Ankername angeben.
Zeile 83 nur eine Variable eingefügt
zum test kannst mal die Navi nehmen ist eine Sitemap:
Code:
print $navigation = generateNavigation(0, 1, 0, $clang, $path, 1, 0, 0, 1, 1, 1);

Hier der code denn als neues Template einbaust und einfügst:
<?php
/**
* Universal-Navigation Template (http://www.redaxo.de/168-Templatedetail ... late_id=84)
* for Redaxo (http://www.redaxo.de/)
*
* usage in template:
* REX_TEMPLATE[x]
* global $clang;
* $path = explode('|', $this->getValue('path').$this->getValue('article_id'));
* examples:
* print $navigation = generateNavigation(0, 1, 0, $clang, $path, 0, 0, 0, 1, 1, 1);
* print $nav_main = generateNavigation(0, 1, 1, $clang, $path, 0, 0, 1, 1, 1, 1);
* print $nav_sub = generateNavigation($path[1], 2, 0, $clang, $path, 0, 0, 1, 1, 1, 1);
* print $nav_special = generateNavigation(<id>, 1, 1, $clang, $path, 0, 0, 1, 1, 0, 0);
* print $sitemap = generateNavigation(0, 1, 0, $clang, $path, 1, 0, 1, 0, 0, 1);
* print $breadcrumbs = generateNavigation(0, 1, count($path)-1, $clang, $path, 0, 1, 0, 0, 0, 0);
*
* @author A.C. Henke <a.c.henke@arcor.de>
* @author inspired by: TotalNavigation (http://www.redaxo.de/168-Templatedetail ... late_id=63)
* @version 2008-04-19

* $cid = ID der Kategorie, ab der die Navigation aufgebaut werden soll ("0" für Root)
* $level = Ebene, ab der die Navigation aufgebaut werden soll
* $levelDepth = Ebenentiefe ("0" für "bis zur letzten Ebene")
* &$clang = muss immer "$clang" (Sprach-ID) sein
* &$path = muss immer "$path" sein
* $expand = "1", wenn alle Unterebenen ausgeklappt sein sollen (Sitemap); "0", wenn nur jeweils die nächste Unterebene von der, in der man sich befindet, ausgeklappt werden soll (normale Navigation)
* $showOnlyActive = "1", wenn nur der aktive Pfad (nur "direkte Vorfahren") angezeigt werden soll (Breadcrumbs); "0", wenn auch "Schwestern und Onkel" angezeigt werden sollen (normale Navigation)
* $linkOnSelf = "1", wenn die Seite, auf der man sich befindet, auch in der Navigation verlinkt sein soll; "0", wenn auf die aktuelle Seite *nicht* verlinkt werden soll (wegen der Usability)
* $hilite = "1", wenn der aktuelle Pfad hervorgehoben werden soll (normale Navigation); "0", wenn kein Link extra hervorgehoben werden soll (Sitemap)
* $onlyOnline = "0", wenn sowohl Online- als auch Offline-Artikel und -Kategorieren in der Navigation erscheinen sollen; "1", wenn nur Online-Artikel erscheinen sollen
* $onlyCats = "0", wenn nicht nur Kategorien, sondern auch Artikel in der Navigation erscheinen sollen; "1", wenn nur die Kategorien erscheinen sollen

$articles und $openul werden nur intern benötigt.
*/



if (!function_exists('generateNavigation')) {
function generateNavigation ($cid, $level, $levelDepth, &$clang, &$path, $expand, $showOnlyActive, $linkOnSelf, $hilite, $onlyOnline, $onlyCats, $articles=0, $openul=0) {

if ($levelDepth && ($level > $levelDepth)) return $navigation;

if ($articles) $navarr = OOArticle::getArticlesOfCategory($cid, $onlyOnline, $clang);
else if ($cid===0) $navarr = OOCategory::getRootCategories($onlyOnline, $clang);
else $navarr = OOCategory::getChildrenById($cid, $onlyOnline, $clang);

if (!empty($navarr)) {

$navigation = '';

foreach ($navarr as $item) {

if ( !($articles && $item->isStartPage()) ) {

$active = ($path[$level] == $item->getId()) ? 1 : 0;
$show = (!$showOnlyActive || ($showOnlyActive && $active)) ? 1 : 0;

if (!$openul && $show) {
$navigation .= '<ul>';
$openul = 1;
}

if ($show) {
$navigation .= '<li>';
$hasChildren = generateNavigation($item->getId(), $level+1, 0, $clang, $path, 0, 0, 0, 0, 0, 0);
//FIXME: does not work with articles in subnav

if (!$linkOnSelf && ($path[count($path)-1] == $item->getId())) {
$aTag = '<span>'.$item->getName().'</span>';
//if ($showOnlyActive) $stop = 1;
} else {

##################
# ANKER FÜR LINKS #
##################
$ID_ANKER = array(2,9,22,13);
$ANKER_NAME="#right";
if(in_array($item->getId(),$ID_ANKER)){
$ANKER= $ANKER_NAME;
}else{$ANKER="";}

$aTag = '<a href="'.$item->getUrl().''.$ANKER.'">'.$item->getName().'</a>';
if ($hasChildren && $hilite) $aTag = '<em>'.$aTag.'</em>';
}
if ($active && $hilite) $aTag = '<strong>'.$aTag.'</strong>';
$navigation .= $aTag;
}

$opensubul = 0;
if ($expand || $active) {
$navigation .= generateNavigation($item->getId(), $level+1, $levelDepth, $clang, $path, $expand, $showOnlyActive, $linkOnSelf, $hilite, $onlyOnline, $onlyCats, 0, $opensubul);
if ( !$onlyCats && !$articles && (count($item->getArticles())>1) ) {
$navigation .= generateNavigation($item->getId(), $level+1, $levelDepth, $clang, $path, $expand, $showOnlyActive, $linkOnSelf, $hilite, $onlyOnline, $onlyCats, 1, $opensubul);
}
}
if ($show) $navigation .= '</li>';
}
}//end of foreach

if ( ($navigation=='') && !$articles) {
$thisArt = new article;
$thisArt->setArticleID($path[count($path)-1]);
if ($thisArt)
$navigation .= '<ul><li><span>'.$thisArt->getValue('name').'</span></li></ul>';
}
if ($openul) $navigation .= '</ul>';
}

return $navigation;
}
}
?>

Benutzeravatar
gege
Beiträge: 83
Registriert: 4. Aug 2006, 12:05
Wohnort: near stuttgart
Kontaktdaten: Website

7. Apr 2010, 11:23

Man könnte es doch auch tricksen, also die Artikel normal anlegen und in den entsprechenden Artikel eine interen Weiterleitung einbauen.
Oder ist das nicht gut?

Benutzeravatar
Cheffchen
Beiträge: 1809
Registriert: 3. Mär 2009, 13:51
Wohnort: Berlin
Kontaktdaten: Website

7. Apr 2010, 12:05

Hallo gege,

die Idee ist nicht schlecht, die hat wat.

Was machst aber das dies keine endlosschleife wird.

1Absatz Weiterleitung auf gleiche Seite mit Anker und dann?

Cheffchen

Benutzeravatar
gege
Beiträge: 83
Registriert: 4. Aug 2006, 12:05
Wohnort: near stuttgart
Kontaktdaten: Website

7. Apr 2010, 12:10

hmmm, stimmt auch wieder, muss ich mal testen.
Steh gerade auch vor dem Problem und werd das einfach mal testen.
Vielleicht kann man es ja mir ner Hilfsvariablen abfangen.

Zurück zu „Allgemeines [R4]“