Zobrazovanie článkov z určitej kategórie ako stránky v menu z Pages – tvorba vlastného templatu stránky
21. April 2010Ak si chcete vytvoriť stránku tak, aby sa v menu, ktoré vytvoríte cez Pages zobrazovali články z určitej kategórie vytvorenej cez Posts, je nutné si na to vytvoriť vlastnú šablónu/template danej stránky a ten následne priradiť danej stránke.
Ako konkrétny príklad uvediem stránku Novinky na tomto blogu.
V adresári vášho templatu si vytvorte nový .php súbor, v mojom prípade categories.php. V tomto súbore sa potom môžu doplniť takto rôzne stránky z kategórií, pričom na to bude stačiť jeden template.
Je nutné si pozrieť číslo danej kategórie, ktorej články chcete priraďovať stránke a tiež číslo stránky – ID, na ktorej sa majú články zobrazovať. Tie si zobrazíte po rozklinutí danej kategórie, alebo stránky – hore v url je vidieť ID.
Názov templatu priradíte nasledovne – vo vytvorenom súbore categories.php vložte na začiatku tento kód:
/**
-- nazov templatu
* Template Name: Stranky z kategorii
*/
Následne treba vytvoriť konkrétny template, ako iné – začína vložením headru a samotným obsahom konkrétnej stránky.
<?php get_header(); ?> <div id="content"> <?php include (TEMPLATEPATH . '/header_bar.php'); // určím si kategórie a stránky, ktoré sa kde majú zobrazovať if ( is_page('73') ) { // 73 = ID stránky novinky $cat = array(96); // 96 = ID kategórie novinky /* nutné odkomentovať, ak chcete aj iné kategórie } elseif ( is_page('37') ) { //napr. ina stránka a iné kategórie článkov $cat = array(42); */ } else { $cat = ''; } $showposts = -1; // -1 zobrazí všetky články $do_not_show_stickies = 1; // 0 zobrazí stickies $args=array( 'category__in' => $cat, 'showposts' => $showposts, 'caller_get_posts' => $do_not_show_stickies ); $my_query = new WP_Query($args); ?> <?php // potom vytvoríme samotné zobrazovanie príspevkov if( $my_query->have_posts() ) : ?> while ($my_query->have_posts()) : $my_query->the_post(); //necessary to show the tags global $wp_query; $wp_query->in_the_loop = true; ?> <h1>NOVINKY</h1> <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <small><?php the_time('j. F Y') ?></small> <div> <?php the_content('Read the rest of this entry \»'); ?> </div> <p> <?php the_tags(__('Tags: ','wind-cries'), ', ', '<br />'); ?> <?php _e('Posted in ','wind-cries') ?> <?php the_category(', ') ?> | <?php edit_post_link(__('Edit','wind-cries'), '', ' | '); ?> <?php comments_popup_link(__('No Comments \»','wind-cries'), __('1 Comment \»','wind-cries'), __('% Comments \»','wind-cries')); ?> </p> </div> <?php endwhile; ?> <?php else : ?> <h2><?php _e('Not Found','wind-cries') ?></h2> <p><?php _e('Sorry, but you are looking for something that isn\'t here.','wind-cries') ?></p> <?php get_search_form(); ?> <?php endif; ?> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
Nakoniec vložíme zobrazenie footeru a tým ukončíme tvorbu šablóny.
Ako posledné je treba stránke Novinky priradiť zobrazovanie podľa vytvorenej šablóny categories.php. To sa určí v zozname stránok, je treba otvoriť editáciu stránky Novinky a priradiť jej template Stranky z kategorii. Po uložení sa stránka zobrazuje podľa novovytvorenej šablóny zobrazovania.
Comments
za ten rok sa toho zmenilo hodne, najmä vyšla nová verzia wordpressu 3.x, ktorá má veľa noviniek, toto by však nemala ovplyvňovať (ale zmenili sa aj niektoré tagy, takže to neviem momentálne potvrdiť na 100%, prípadne pozriem, ako som to riešila na nových wp 3.x)
skús prípadne ešte zmeniť loop z nového wp a pridať tam vlastné query
je tiež možné, že máš niekde chybu v kóde, alebo si nepriradil daný template niektorej zo stránok
Posted by: spiider | August 24th, 2011 12:16
Ahoj. Dik že si sa podujal na spísanie tohto článku. Mám však vážny problém, postupoval som podľa návodu, ale nepodarilo sa mi to. Chcel by som sa ťa spýtať, je to mojou neschpnosťou alebo sa za ten rok zmenila štruktúra WP, vymenili sa nejaké “php tagy” a preto mi to nefunguje?
Posted by: PsychoAstronaut | August 24th, 2011 11:52