[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Navigation Factory - Anzahl der Ausgabe beschränken - 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/
PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 00:06

Hallo Zusammen,

ich arbeite gerade mit der neuen Navigation Factory 1.1.0. Great Job @RexDude
Habe ein kleines Problem, für meine Footer Meta Navigation will ich die Ausgabe/Anzahl der darzustellenden Links beschränken/limitieren. So das zbs nur 8 Stück ausgegeben werden. Und dann noch einen extra Button (Mehr) der dann auf die Hauptebene Verlinkt.

1. Wie kann ich diese Limitierung erwirken das mir nur eine X Anzahl ausgegeben wird?
2. Wie bekomme ich dann den (Mehr)link noch ins return bei (setCustomLink) mit rein der dann auf die Hauptkategorie zeigt?

1000 Dank!

Folgende Sache habe ich ansatzweise mal probiert, bin aber zwischen drin schon gescheitert und ist also nicht als wirklich relevant anzusehen.

Code: Alles auswählen

$metaNav1 = new rex_nav();
$metaNav1->setStartCategoryId(2);
$metaNav1->setLevelCount(1);
$metaNav1->setShowAll(false);
$metaNav1->setIgnoreOfflines(true);
$metaNav1->setHideWebsiteStartArticle(true);
$metaNav1->setCustomLink(function($cat, $depth){
// Hier nur mal ein Test um irgendwie zu ermitteln wie viele Items im Array sind, um dann später damit arbeiten zu können und eine Limitierung zu erwirken.... In der Kategorie (2) sind 8 Unterkategorien drin, aber sizeof oder auch count sagt mir nur 6....
    $items = OOCategory::getRootCategories($cat);
    return sizeof($items);
});

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 12:43

Hi :)
1. Wie kann ich diese Limitierung erwirken das mir nur eine X Anzahl ausgegeben wird?
Hmm, warum fasst deine Footer Kat denn mehr als 8? Du könntest doch die zusätzlichen in eine Unterkatageorie packen oder in eine 2. Footerkat?
2. Wie bekomme ich dann den (Mehr)link noch ins return bei (setCustomLink) mit rein der dann auf die Hauptkategorie zeigt?
Hier paar Ansätze (ungetestet):
- Mehr link als Artikel und per SEO42 die Url manipulieren nach Wunsch.
- Der Simple HTML Dom Parser ist bei dem Addon mit am Start. D.h. du könntest darüber jQuery Artik deine UL die rex_nav ausspuckt nachbearbeiten und ein Li noch dranhängen.
- Oder Quick and Dirty per String Replace der </ul> (wird dann mit <li>hier mehr link<li></ul> ersetzt) ;)

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 14:10

Danke für dein Feedback!
Den obigen Code habe ich 4 mal und lese jeweils eine andere Hauptkategorie aus. Jede der Root Kategorien sitzt im Footer in einem Foundation Grid Block. So das ich im Footer die ersten Child Kategorien der jeweiligen 4 Hauptkategorien anzeigen kann. Da es aber Hauptkategorien gibt die ca 15 Unterkategorien haben will ich das Limitieren und dann einen Mehr button einbauen. Das war mein Hintergrund.

Evtl wäre im Plugin eine Option sehr gut der man sagen kann wie viele Links man ausgeben will.

Zu 1. Ich will ja nicht die Struktur der allgemeinen Seiten ändern, denn in der Sidebar und im Mobile Menu soll ja schon die komplette Struktur zu sehen sein.

Zu 2. Ja das ist eine gute Idee mit dem Mehr link und SEO42, das teste ich aus. Und die Idee mit JQuery das ganze zu manipulieren wäre auch keine schlechte Idee, das gehe ich gleich mal an. OK klar mit Strgreplace könnte ich auch mal noch probieren, wobei ich glaube das es dann mit Jquery besser ist und einfacher ist die einzelnen LI's zu zählen und alle anderen aus dem Markup raus zu löschen.

Natürlich könnte ich auch einfach mit setHideIds die jeweiligen Kategorien einfach ausblenden. Jedoch wäre das dann nicht dynamisch wenn neue Links hinzukommen würden.

Vielen Dank für die Ansätze (y)
Wie ich es letzt endlich gemacht habe schreibe ich dann hier, damit es auch andere die das selbe machen wollen einen Ansatz bekommen. Wobei eine Option/Variable im Plugin wäre dennoch mal zu überlegen ;-)

Wünsche dir einen guten Rutsch ins neue Jahr 2016
LG, PIerre

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 15:21

Hey,

ja das wäre noch ein Ansatz. Zuerst ermitteln welche der Artikel nicht vorkommen sollen (per OOCategory etc.) dann damit setHideIds füttern. Wäre dann dynamisch.

Guten Rutsch und alles Gute für 2016 (an alle!!!)
RexDude

P.s: JQuery meinte ich nicht sonder den Simple DOM Parser. jquery geht aber auch natürlich aber ist dann von ausserhalb.

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 15:31

OK ich hab es jetzt mit replace und Jquery in Kombination gemacht.
1. Der Morebutton wird dirty über php replace angehangen.
2. Die Limitierung der LI Elemente mache ich über Jquery. Hierzu habe ich in der rex_nav() entsprechende Klassen hinzugefügt. Inkl einer hide klasse.

1.

Code: Alles auswählen

#########################################################################################
### META NAV (1) GET ROOT CATEGORY ID AND THE THE PAGE NAME/TITLE #######################
#########################################################################################
$metaNav1_catId = 2;
$metaNav1_getCatName = OOCategory::getCategoryById($metaNav1_catId);
$metaNav1_catName = $metaNav1_getCatName->getName();
$metaNav1_catUrl = $metaNav1_getCatName->getUrl();
#########################################################################################
### META NAV (1) GET ALL SECOND LEVEL CATEGORY ##########################################
#########################################################################################
$metaNav1 = new rex_nav();
$metaNav1->setStartCategoryId($metaNav1_catId); // beginnt bei der startkategorie 2
$metaNav1->setLevelCount(1); // anzahl der ausgegeben level: 1 level
$metaNav1->setShowAll(false); // alle unterebenen werden angezeigt
$metaNav1->setIgnoreOfflines(true); // offline artikel werden nicht angezeigt
$metaNav1->setHideWebsiteStartArticle(true); // startartikel der website wird ausgeblendet
$metaNav1->setListClass('rex-metanav-1', 1); // erste ul klasse 'sf-menu'
$metaNav1->setListItemClass('rex-list-item rex-list-js-hide'); // li klasse 'list-item'
$metaNav1 = $metaNav1->getNavigation();
#########################################################################################
### META NAV (1) CREATE MORE LINK #######################################################
### INFO: DIE AUSGABE WIRD ÜBER JQUERY AUF 6 LI'S LIMITIERT #############################
#########################################################################################
$metaNav1morelink = '<li><a href="'.$metaNav1_catUrl.'">Mehr...</a></li></ul>';
$metaNav1 = str_replace('</ul>', $metaNav1morelink, $metaNav1);
2.

Code: Alles auswählen

// ###############################################################
// REDAXO (FOOTER META NAVIGATION FACTORY) DO THIS DO THAT #######
// ###############################################################
var redaxoFoometaNav = function(){
    $(".rex-metanav-1").each(function (){
        $(".rex-metanav-1 li.rex-list-js-hide").hide();
        $(this).find("li.rex-list-item:lt(6)").show();
    });
}
$(function(){
    // Call once on initial load
    redaxoFoometaNav();
});

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Navigation Factory - Anzahl der Ausgabe beschränken

30. Dez 2015, 17:09

Im Html verlinkt wirds aber dann trotzdem noch = Searchbots werden den Links folgen.

PXDemon
Beiträge: 147
Registriert: 26. Jul 2007, 14:25

Re: Navigation Factory - Anzahl der Ausgabe beschränken

31. Dez 2015, 11:27

Ja das ist leider richtig. Aber das ist soweit ja ok, hier war es eher eine optische Sache, das die Links in der Footerbar nicht alle angezeigt werden.

Zurück zu „Allgemeines [R4]“