gibts eine Möglichkeit bei wp_list_categories
zur Parent Kategorie eine css class hinzuzufügen.
alles hat eine eigene , aber nicht die Parents (Benachteiligung der Eltern ;) )
wenn ja wie ?
:oops:
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmeldenHier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellen
gibts eine Möglichkeit bei wp_list_categories
zur Parent Kategorie eine css class hinzuzufügen.
alles hat eine eigene , aber nicht die Parents (Benachteiligung der Eltern ;) )
wenn ja wie ?
:oops:
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
ausser einer eigenen funktion als ersatz fällt mir auf anhieb nichts ein.
reicht es nicht, die stufen der parent-child-verbindung über die verschachtelung anzusprechen?
also:
ul {
mach hübsch;
}
ul ul {
mach noch hübscher;
}
ul li {
allen eltern einen gruss;
}
ul ul li {
den kindern ein hurra;
}
bzw. die liste einfach für die parents gestalten und dies bei den definierten child-klassen wieder aufzuheben.
edit: also ich kann mir atm nichts vorstellen, was mit dem gegebenen konstrukt nicht ginge.
Mod.: bitte mal lesen: http://forum.wordpress-deutschland.org/plugins-und-wi…-den-posts.html
edit MOd: ich kann es nicht leiden, wenn man meine posts editiert. die nicht-verwendung der code-tags war hier absicht.
es liegt nicht in meinem interesse, dass irgendwer dinge wie "mach hübsch" in seinen quelltext pastet.
nein via css geht gar nichts, weil es gibt ja auch Kagegorien, die keine Kinder haben ;)
und man kann "rückwirkend" keine css class ansprechen,
es muss ein filter gebaut werden, aber all meine Versuche führten ins Nirwana,
bei wp_list_pages gehts bei wp_list_categories tut sich einfach 0 nada niente nix , daher meine Frage ... und suche
ok, wenn es um die differenzierung geht, ob ein punkt kinder hat oder nicht, geht es natürlich rein mit css nicht.
da hilft in meinen augen nur eine eigene funktion zur listung.
ob es bereits so etwas bspw. als plugin gibt, weiss ich nicht, da ich wordpress gerade erst kennengelernt habe.
also: -> selbermachen
edit: wenn sich bis dahin noch nichts ergeben hat, kann ich das nächste woche mal machen, falls es hilft.
als plugin oder als funktion für die functions.php / die templates?
.......
edit: wenn sich bis dahin noch nichts ergeben hat, kann ich das nächste woche mal machen, falls es hilft.
...............als funktion für die functions.php / die templates?
ich weiß definitiv , dass es ihm mir bekannten wordpress web sowas nicht gibt, ---- mehr als wochenlange suche bei den verrücktesten links brachte nichts zu tage, außer die Frage danach ;)
ich warte sehr geduldig .... und wäre... (hach)mehr als glücklichst ...;)
:mrgreen:
'nabend
eine möglichkeit wäre gewesen, eine ganz eigene funktion als ersatz für wp_list_categories zu schreiben.
um das ganze aber möglichst kompatibel zu halten habe ich einen wrapper erstellt, der die originalfunktion von wordpress verwendet.
dabei habe ich es jetzt erst einmal ganz einfach gehalten, da ich den speziellen anwendungsfall nicht kenne.
was macht die funktion also?
es wird nahezu der original-output von wp verwendet und nur alle list-elemente mit "kindern" um die css-klasse: 'parent' erweitert.
alle argumente der original-wp-funktion lassen sich verwenden und werden mit durchgeschleust.
für die functions.php:
function cg_list_categories($args = '') {
$r = wp_parse_args($args);
$echo = true;
if (isset($r['echo']) && !$r['echo']) { $echo = false; }
$r['echo'] = 0;
$output = wp_list_categories($r);
$output = preg_replace('/(<li class="cat-item .*)(">.*<ul class=["|\']children["|\']>)/isU', '$1 parent$2', $output);
if ($echo) {
echo $output;
} else {
return $output;
}
}
Alles anzeigen
beispielanwendung im template (sidebar.php):
also genau wie zuvor; nur "cg_" statt "wp_".
beispiel-css, das ich zum testen verwendet hatte:
aus original (wp_list_categories)
wird also (cg_list_categories)
wenn "kinder" vorhanden sind.
alles ausprobiert im standard-de-theme, aber nicht ausgiebig getestet.
wenn es jetzt darum geht, wirklich individuelle navigationen zu erstellen (horizontal, dropdown, spezielleres styling, angepasst für dynamische javascript-menüs, etc.) würde ich dazu übergehen eine komplett eigene funktion zu schreiben, bzw. im nächsten schritt dann ein plugin.
reicht dir das?
edit: sehe gerade, da stimmt irgendwas am regulären ausdruch noch nicht.
sind die kategorien etwas mehr verschachtelt läuft da was nicht. schaue ich mir die tage noch mal an.
das parent steht bei einer einzigen Kategorie dabei und die hat aber keine Kinder ich zeig mal den Quellcode
<ul class="cat">
<li class="cat-item cat-item-11 parent"><a href="/category/kontakte/" title="Mitglieder des Vereines Muster aus Musterhausen im Mustertal, gleich Links hinterm Mond.">Kontakte</a>
</li>
<li class="cat-item cat-item-7"><a href="/category/news/" title="Alle unter News abgelegten Beiträge ansehen">News</a>
</li>
<li class="cat-item cat-item-13"><a href="/category/termine/" title="Hier findest Du alle wichtigen Termine">Termine</a>
</li>
<li class="cat-item cat-item-1 aberdaisteinParent"><a href="/category/uncategorized/" title="Alle unter Uncategorized abgelegten Beiträge ansehen">Uncategorized</a>
<ul class='children'>
<li class="cat-item cat-item-9"><a href="/category/uncategorized/unterkategorie/" title="Alle unter Unterkategorie abgelegten Beiträge ansehen">Unterkategorie</a>
</li>
</ul>
Alles anzeigen
;) diese Funktion ist hartnäckigst
ich korrigiere das die tage noch mal.
meine testfälle waren zu einfach gestrickt, so dass ich ein paar sachen übersehen hatte.
ich korrigiere das die tage noch mal.
meine testfälle waren zu einfach gestrickt, so dass ich ein paar sachen übersehen hatte.
ich danke Dir :-)
lg
antwort kommt noch ... habe es nicht vergessen ... nur beim zweiten drübersehen festgestellt, dass man da nicht einfach so mit den regexpressions drübergehen kann.
muss mir da noch einen trick einfallen lassen.
würde ungern eine neue wp_list_categories erstellen. da ist so ein "category walker" drin für die rekursion. das anzufassen sieht nach arbeit aus ... :)
antwort kommt noch ... habe es nicht vergessen ... nur beim zweiten drübersehen festgestellt, dass man da nicht einfach so mit den regexpressions drübergehen kann.
muss mir da noch einen trick einfallen lassen.
würde ungern eine neue wp_list_categories erstellen. da ist so ein "category walker" drin für die rekursion. das anzufassen sieht nach arbeit aus ... :)
ich versteh dabei nur, dass es meine Sicht der Dinge bestätigt, und ich -gott sei dank-nicht total doof war es hinzubekommen, denn ich gebe zu ich bin in php bei leibe nicht so firm wie in css ......:oops:
somir danke ich Dir für Dein Bemühen und warte unendlichst geduldig ...
;)
mit den möglichkeiten des umgangs mit kategorien bin ich auch nicht zufrieden. über kurz oder lang werde ich da mal zeit investieren müssen.
ich hatte mir das navt-plugin angesehen. da sind allerdings etliche fehler im code, der output unschön und es werden mengen unnötiger css-klassen gesetzt.
naja, zum hier genannten; mein nächster ansatz ist:
1.
den output-string von wp_list_catogories invertieren, um von hinten den ersten li-tag nach dem child-ul zu erwischen.
da man sonst das gierige verhalten der regexpressions nicht in den griff bekommt.
oder 2.
mir die hilfsfunktionen in /wp-include/category.php und category-template.php ansehen, um daraus etwas brauchbares zu bauen.
falls also jemand schneller ist oder einen besseren einfall hat ... bitte gerne :)
ok, habe es jetzt ziemlich schnell hinbekommen.
sind nur zwei zeilen :)
allerdings mit einer modifikation der class Walker_Category in /wp_includes/classes.php.
ich schaue dann mal, wie ich das in die functions.php bekomme, so dass der core unangetastet bleibt. den ganzen kram duplizieren ist irgendwie aber auch unschön ...
also, falls du es testen möchtest, in der /wp_includes/classes.php nach zeile 637 ($class = 'cat-item cat-item-'.$category->term_id; ) folgendes ergänzen:
bevor ich ins wohlverdiente wochenende gehe eine kurze zwischenmeldung.
im ansinnen ist dies ja nicht so kompliziert (bzw. oben ja auch schon gelöst).
das eigentlich aufwändige ist nämlich, die gewünschte funktion so zu integrieren, dass das ganze upgrade-fähig bleibt und kein "reinbasteln" ist.
daher dauert es von meiner seite auch etwas länger, weil ich mich erst einmal mehr mit dem aufbau der programmierung von wordpress auseinandersetze (plugins, hooks, etc.).
in den grundzügen ist mir dies mittlerweile klar, ich brauche einfach mal eine ruhige stunde zeit, um es fertig zu machen.
ziel ist also: ein plugin, das zusätzlich zur wp_list_categories eine funktion cg_list_categories verfügbar macht, mit kenntlichmachung per parent-class für kategorien mit unterkategorien.
die verzögerung resultiert also daraus, dass ich als neuling in wordpress mich erst einmal noch mit der dahinterliegenden struktur vertraut mache.
stay tuned ...
.....
stay tuned ...
:-D aber immer ....
frohe ostertage!
im anhang ein plugin für dieses anliegen.
verwendung im template:
<?php
if (function_exists('cg_list_categories')) {
cg_list_categories('show_count=1&title_li=<h2>Kategorien</h2>');
} else { // do this if plugin is not active
wp_list_categories('show_count=1&title_li=<h2>Kategorien</h2>');
}
?>
beispiel-css (für style.css) als test im standard de-theme:
plugin-ordner entpacken, verzeichnis hochladen in /wp-content/plugins/, plugin über die admin aktivieren.
dann ist die funktion cg_list_categories als ersatz zu wp_list_categories verwendbar mit gleichem funktionsumfang.
siehe: Template Tags/wp list categories « WordPress Codex
einziger unterschied: parent-kategorien erhalten eine zusätzliche css-klasse "parent".
getestet mit wordpress 2.3.3, 2.5 RC1 und 2.5 beta (aktuelle entwicklerversion), allerdings nur oberflächlich.
bisher macht das nicht allzuviel; mal schauen, ob es für deinen zweck ausreicht.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!