seitenzuweisung ueber page id:
das wird zu lang fuer hier, daher: http://wordpress.pastebin.com/kLC0Dskx
hoffentlich geht das so :mrgreen:
Beiträge von alchymyth
-
-
ich schreib den code heute um, und verwende die page ids fuer die zuordnung. das sollte dann hoffentlich eindeutig die current seiten zuweisen, usw.
ich werde das hier posten, sobald es fertig ist. -
die 'page-slug' kann beim bearbeiten der Seiten unterhalb des seitentitels gefunden werden: bild [COLOR=#0066cc]http://img690.imageshack.us/img690/8490/pageslugedit.jpg[/COLOR]
der code ist ok, und wenn die kategorie mit der 'page-slug' uebereinstimmt, sollte das eigentlich so gehen. -
erstmal - das gute ist, dass es mit den anderen seiten (fast) geht.
ich werde sehen, ob ich das noch auf die unterseiten ausweiten kann, dass die die class 'current_page_item' bekommen.
ich vermute, dass die anderen seiten die kategorien 'referenzen' und 'ausland' haben; und alles basiert auf der idee, dass der kunde das system nicht selber ausweiten kann (?).
kannst du den code mit den letzten ergaenzungen in einen http://wordpress.pastebin.com/ kopieren und den link dazu hier angeben? -
mit der kenntnis der kategorien sollte das hier gehen:
PHP
Alles anzeigenwp_reset_query(); // code zur zuordnung der hauptseiten, wenn artikel der entsprechenden kategorie angezeigt werden if(is_single()) { if(in_category('vermietung')) { $page_name = 'vermietung'; // das muss der page-slug der seite 'Vermietung' sein $page_name_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$page_name."'"); } elseif(in_category('verkauf')) { $page_name = 'verkauf'; // das muss der page-slug der seite 'Verkauf' sein $page_name_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$page_name."'"); } } // ende der ersten erweiterung // a page list with standard top level pages, and sublevel children only of the active page $args = array( 'title_li' => '', 'depth' => 1, 'echo' => 0 ); // top level pages $pagelist = wp_list_pages( $args ); // zweite erweiterung: seite beim single post festlegen, entsprechend der hauptkategorie if(is_single()) { $needle = 'page-item-'.$page_name_id.'"'; $replace = 'page-item-'.$page_name_id.' current_page_item"'; $pagelist = str_replace($needle,$replace,$pagelist); } // ende der zweiten erweiterung $page_array = explode('</li>',$pagelist); foreach($page_array as $page_item) : if(strlen($page_item)>2) { if(strpos($page_item,'current_page')) { // check current page (incl ancestors) // .current_page_item , .current_page_parent , .current_page_ancestor $pg = explode('page-item-',$page_item,2); $pageid = preg_replace("/[^0-9]/", '', $pg[1], 20); // extract the page number $args = array( 'title_li' => '', 'depth' => 0, 'echo' => 0, 'child_of' => $pageid ); $sub_pagelist = wp_list_pages( $args ); if($sub_pagelist) { $page_item = $page_item . '<ul>' . $sub_pagelist . '</ul>'; } // add sublist } // end of check current else { // optional to show a pointer after pege itmes with children $pg = explode('page-item-',$page_item,2); $pageid = preg_replace("/[^0-9]/", '', $pg[1], 20); // extract the page number $args = array( 'title_li' => '', 'depth' => 0, 'echo' => 0, 'child_of' => $pageid ); $sub_pagelist = wp_list_pages( $args ); if($sub_pagelist) { $page_item = $page_item . ' ›'; } // add pointer } // end of optional echo $page_item. '</li>'; } endforeach;
der zusaetzliche code greift nur in der einzelartikelansicht (das ist unabhaengig ob das theme eine single.php hat oder ob das mit der index.php miterledigt wird); sonst laeuft alles wie bisher.
der erste zusatz im obigen code weist je nach kategorie einen seiten-namen zu, und bestimmt danach die seiten ID;PHP
Alles anzeigen// code zur zuordnung der hauptseiten, wenn artikel der entsprechenden kategorie angezeigt werden if(is_single()) { if(in_category('vermietung')) { $page_name = 'vermietung'; // das muss der page-slug der seite 'Vermietung' sein $page_name_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$page_name."'"); } elseif(in_category('verkauf')) { $page_name = 'verkauf'; // das muss der page-slug der seite 'Verkauf' sein $page_name_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$page_name."'"); } } // ende der ersten erweiterung
(das obige hier koennte mit weiteren 'elseif' schritten auf weitere hauptkategorien und hauptseiten erweitert werden.)
der zweite zusatz verwendet die seiten ID, um im seitenmenu wieder die aktuelle hauptseite zuzuweisen.
(nebenbemerkung: dieser ansatz ist nicht allgemein zu verwenden und gezielt nur fuer diese 'string-zauberei' angepasst)
'fingers crossed' (englisch fuer 'daumen druecken'),
hoffen wir's beste.
(ps: muenchen und die wiesn ist zwar im moment nicht geplant, aber vielen dank fuers angebot :grin: ) -
wie ist die kategorien-struktur der artikel?
besteht ein fester zusammenhang zwischen den kategorien und den seiten, in denen die verschiedenen typen (verkauf/vermietung) angezeigt werden?
(anders formuliert: was ist der code der Query in den seiten-templates? ist das mit kategorien gemacht? )
hat zum beispiel ein artikel in 'Vermietung - Wohnung' auch die kategorie 'vermietung' und die unterkategorie 'wohnung' ?
damit waere eine moeglichkeit, ueber die kategorien der artikel dann die seitenanzeige im menu zu steuern; sowas wie:
-
du hast ineressanterweise einmal den link im h2 tag, ohne den link text, und dann etwas weiter unten den link text ohne den link:
HTML<h2><a href="http://www.creysgedanken.de/2010/07/05/alte-bucher/" rel="bookmark" title="Permalink zu Alte Bücher"></a></h2> <small><a href="http://www.creysgedanken.de/category/gedanken/" title="Alle Artikel in Gedanken ansehen" rel="category tag">Gedanken</a> <a href="http://www.creysgedanken.de/category/irland/" title="Alle Artikel in Irland ansehen" rel="category tag">Irland</a></small> <h2><a> Alte Bücher</a></h2>
die zeile im index.php sieht im original default kubrick theme so aus:
-
hast du meine privat-nachricht gelesen und umgesetzt?
- <ul> um den seiten-code;
- einige css anpassungen;
dann sollte das schon etwas besser aussehen;
wenn dann noch eine anpassung notwendig ist, melde dich wieder.
EDIT:
fuer die 'current' styles:
Code
Alles anzeigen#menu .page_item a:hover, #menu .page_item.current_page_item a, #menu .page_item.current_page_item a:link{ color:#373737; text-decoration:underline; letter-spacing:0.06em; font-size:11px; } #menu ul li.page_item.current_page_item a, #menu .page_item.current_page_item a:link{ color:#373737; text-decoration:underline; letter-spacing:0.06em; font-size:11px; } #menu ul li.page_item.current_page_item ul a { text-decoration: none; }
die letzte zeile ist neu, damit unterpunkte einer current page nicht auch als current gestyled werden.
damit sollte das auch gehen.
immer auf die abstaende achten und die punkte dazwischen.
(ist verwirrend, weil im html code zB steht: ' <li class="page_item current_page_item"> ' aber in der css die punkte fuer die class rein muessen: ' li.page_item.current_page_item {...} ' und auch ohne leerzeichen dazwiachen, weil sie zum selben html element gehoeren.
PS: wenn du den 'more-tag' clickst, dann geht der zur single.php und die hat keine ahnung wo der artikel herkommt.
das wird meiner meinung nach viel, viel komplizierter, wenn das mit beruecksichtigt werden muss.
wuerde vieleicht ueber eine korrelation der kategorien/seiten gehen; d.h. ueber eine liste, die beinhaltet, welche seite (page) durch das template welche kategorien anzeigt. -
diese funktion holt die kategorien des artikels:
http://codex.wordpress.org/Function_Refer…et_the_category
der code unten nimmt dann die category id der ersten kategorie des artikels (wenn der srtikel nur eine kategorie hat, geht das auch immer gut) und gibt sie dann so aus wie das andere (fuer einzelartikelansicht):
-
was fuer eine bildschirmgroesse hast du?
bei mir im firefox (1024 px weit) haengt alles weit rechts aus dem bild raus - kein wunder bei einigen deiner paddings:
Code
Alles anzeigenbody { background-color : #ffffff; color : #000000; font-family : Arial, Verdana, sans-serif; font-size : 90%; margin-bottom : 200px; margin-left : 0; margin-top : 0; padding-bottom : 100px; padding-left : 310px; /*sollte 0px sein*/ padding-top : 1px; position : absolute; /*muss weg um die ausrichtung von #wrap zu erlauben*/ }Code
Alles anzeigen#supernav { -x-system-font:none; display:block; font-family:Sans-Serif,Lucida Grande,Arial,Helvetica,Sans-Serif; font-size:19px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; left:50%; /*eher 20% oder so*/ line-height:8px; margin:0 0 0 -915px; /*sollte auch 0 sein, wenn der rest angepasst ist*/ padding:0px 599px; /*sollte auch 0px sein, wenn der rest angepasst ist*/ position:relative; text-align:left; top:-36px; width:1024px; }
frage: wie ist das header-bild eingefuegt?
im moment ist der codeHTML<img src="http://markus-tietje.de/wp-content/header-images/head3.jpg" alt="head3.jpg" title="head3.jpg" />
naemlcih an der falschen stelle - im <head> bereich des header.php.
der code muss nach dem <body> tag erscheinen; und sollte ideal direkt nach dem <div id="wrap"> eingefuegt sein. -
ohne link zur seite geht da nichts.
html ohne css, aus dem zusammenhang genommen, ist keine grundlage fuer irgendwelche vorschlaege. -
-
-
das seitenmenu hat aus irgendeinem grund keine 'current-page-item' class an der aktiven seite;
versuch nochmal mit einer zeile vor dem code den ich vorgeschlagen hatte:
fuege 'wp_reset_query();' hinzu um die seitenlistfunktion an dieser stelle zu erinnern welches die active seite ist:
PHP// a page list with standard top level pages, and sublevel children only of the active page and its anchestors wp_reset_query(); // setzt die original query parameter zurueck $args = array( 'title_li' => '', 'depth' => 1, 'echo' => 0 ); // top level pages $pagelist = wp_list_pages( $args ); $page_array = explode('</li>',$pagelist); ... usw ...
EDIT:
schreib das '[FONT=Courier New][COLOR=#0000bb]wp_reset_query[/COLOR][COLOR=#007700]();[/COLOR][COLOR=black]' [FONT=Verdana]am besten vielleicht generell an den anfang des sidebar.php codes; da auch in deinem anderen seitenmenu die aktiven seiten classes fehlen.[/FONT][/COLOR][/FONT] -
-
-
wenn du keine kategorienliste oder kategorienlinks im artikel hast, werden diese dynamische dateien nicht aufgerufen - erledigt.
es sei denn, dass jemand diesen link per hand in den browser eintippt - unwahrscheinlich, wenn du die kategorien nicht als solche kenntlich machts..
oder bearbeite category.php (wenn die datei nicht existiert, mach eine kopie von archive.php und speicher das unter dem namen category.php) und entferne alles vom loop; oder schreibe einen hinweis anstelle des loops, dass diese datei nicht existiert. -
(es gibt nicht nur computer, strand, oder fussball - ich habe gerade diemeiste zeit meines tages auf einer 'art and craft fair' in Bristol verbracht - dagegen ist computern der reine urlaub :mrgreen:)
wenn ich den code, den du da zitiert hast, richtig interpretiere, wuerde der immer nur die seiten der 'child'-generation anzeigen; unabhaengig ob man auf der elternseite ist, oder auf einer der kinderseiten.
versuch es mit diesem hack:
PHP
Alles anzeigen// a page list with standard top level pages, and sublevel children only of the active page and its anchestors $args = array( 'title_li' => '', 'depth' => 1, 'echo' => 0 ); // top level pages $pagelist = wp_list_pages( $args ); $page_array = explode('</li>',$pagelist); foreach($page_array as $page_item) : if(strlen($page_item)>2) { if(strpos($page_item,'current_page')) { // check current page (incl ancestors) $pg = explode('page-item-',$page_item,2); $pageid = preg_replace("/[^0-9]/", '', $pg[1], 20); // extract the page number $args = array( 'title_li' => '', 'depth' => 0, 'echo' => 0, 'child_of' => $pageid ); $sub_pagelist = wp_list_pages( $args ); if($sub_pagelist) { $page_item = $page_item . '<ul>' . $sub_pagelist . '</ul>'; } // add sublist } // end of check current else { // optional to show a pointer after pege itmes with children $pg = explode('page-item-',$page_item,2); $pageid = preg_replace("/[^0-9]/", '', $pg[1], 20); // extract the page number $args = array( 'title_li' => '', 'depth' => 0, 'echo' => 0, 'child_of' => $pageid ); $sub_pagelist = wp_list_pages( $args ); if($sub_pagelist) { $page_item = $page_item . ' ›'; } // add pointer } // end of optional echo $page_item. '</li>'; } endforeach;
hab ich in meiner testseite probiert, und scheint das zu machen, was du beschrieben hast:
normal nur top-level seiten;
wenn man auf einer seite mit 'kindern' ist, dann auch die kinderseiten dieser seite (und evtl vorhandene enkelkinderseiten); und diese struktur bleibt erhalten, wenn man auf den kinder- und enkelkinder-seiten ist.
versuch macht klug ... :-P -
das geht nicht, ohne die template-dateien zu bearbeiten.
fuer die einzelansicht der posts ist die single.php des themes zustaendig. -
Zitat
Dummerweise steht da jetzt dann erst "Tags" und dann "Schlagwörter"...
kommt auf den exacten code auf an;
das 'schlagwoerter' kommt wohl aus der deutschen sprachdatei.