[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Navigation Factory - Anzahl der Ausgabe beschränken
Seite 1 von 1

Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 00:06
von PXDemon
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);
});

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 12:43
von RexDude
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) ;)

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 14:10
von PXDemon
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

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 15:21
von RexDude
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.

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 15:31
von PXDemon
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();
});

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 30. Dez 2015, 17:09
von RexDude
Im Html verlinkt wirds aber dann trotzdem noch = Searchbots werden den Links folgen.

Re: Navigation Factory - Anzahl der Ausgabe beschränken

Verfasst: 31. Dez 2015, 11:27
von PXDemon
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.