Wordpress - Vise poster fra forskjellige kategorier på enkeltsider

Mr Vest

Sjefen over alle sjefer!
Dette kan jeg gjerne forklare for deg - Men for at jeg skal kunne gi en forklaring som ikke gjør det hele vanskelig og teit må jeg faktisk be om at du legger ut hele page.php som finnes i themets mappe. Løsninga jeg har gjør at dette kun funker i det ene themet du har gjort det for. Om themet endres må det gjøres også for det nye themet.
 

Tonny Kluften

Administrator
poster fra forskjellige kategorier på enkeltsider - Wordpress

Du mener index.php :D

Supert, here we go.

Kode:
<?php get_header(); ?>
<div class="contentLayout">

<div class="content">

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="Post">
    <div class="Post-tl"></div>
    <div class="Post-tr"></div>
    <div class="Post-bl"></div>
    <div class="Post-br"></div>
    <div class="Post-tc"></div>
    <div class="Post-bc"></div>
    <div class="Post-cl"></div>
    <div class="Post-cr"></div>
    <div class="Post-cc"></div>
    <div class="Post-body">
<div class="Post-inner article">
<h2 class="PostHeaderIcon-wrapper">
<span class="PostHeader"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>">
<?php the_title(); ?>
</a></span>
</h2>
<?php ob_start(); ?>
<?php $icons = array(); ?>
<?php if (!is_page()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostDateIcon.png" width="12" height="15" alt="PostDateIcon" />
<?php the_time(__('j-m-Y', 'kubrick')) ?>

<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (!is_page()): ?><?php ob_start(); ?>


<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (0 != count($icons)): ?>
<div class="PostHeaderIcons metadata-icons">
<?php echo implode(' | ', $icons); ?>

</div>
<?php endif; ?>
<?php $metadataContent = ob_get_clean(); ?>
<?php if (trim($metadataContent) != ''): ?>
<div class="PostMetadataHeader">
<?php echo $metadataContent; ?>

</div>
<?php endif; ?>
<div class="PostContent">
<?php if (is_search()) the_excerpt(); else the_content(__('Read the rest of this entry &raquo;', 'kubrick')); ?>

</div>
<div class="cleared"></div>
<?php ob_start(); ?>
<?php $icons = array(); ?>
<?php if (!is_page()): ?><?php ob_start(); ?>


<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (!is_page() && get_the_tags()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostTagIcon.png" width="18" height="18" alt="PostTagIcon" />
<?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', ' '); ?>
<?php $icons[] = ob_get_clean(); ?><?php endif; ?><?php if (!is_page() && !is_single()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostCommentsIcon.png" width="18" height="18" alt="PostCommentsIcon" />
<?php comments_popup_link(__('Ingen kommentarer »', 'kubrick'), __('1 kommentar »', 'kubrick'), __('% kommentarer »', 'kubrick'), '', __('Stengt for kommentarer', 'kubrick') ); ?>
<?php $icons[] = ob_get_clean(); ?><?php endif; ?><?php if (0 != count($icons)): ?>
<div class="PostFooterIcons metadata-icons">
<?php echo implode(' | ', $icons); ?>

</div>
<?php endif; ?>
<?php $metadataContent = ob_get_clean(); ?>
<?php if (trim($metadataContent) != ''): ?>
<div class="PostMetadataFooter">
<?php echo $metadataContent; ?>

</div>
<?php endif; ?>

</div>

    </div>
</div>

<?php endwhile; ?>
<?php
$prev_link = get_previous_posts_link(__('Newer Entries &raquo;', 'kubrick'));
$next_link = get_next_posts_link(__('&laquo; Older Entries', 'kubrick'));
?>
<?php if ($prev_link || $next_link): ?>
<div class="Post">
    <div class="Post-tl"></div>
    <div class="Post-tr"></div>
    <div class="Post-bl"></div>
    <div class="Post-br"></div>
    <div class="Post-tc"></div>
    <div class="Post-bc"></div>
    <div class="Post-cl"></div>
    <div class="Post-cr"></div>
    <div class="Post-cc"></div>
    <div class="Post-body">
<div class="Post-inner article">

<div class="PostContent">

<div class="navigation">
	<div class="alignleft"><?php echo $next_link; ?></div>
	<div class="alignright"><?php echo $prev_link; ?></div>
</div>

</div>
<div class="cleared"></div>


</div>

    </div>
</div>

<?php endif; ?>
<?php else : ?>
<h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2>
<p class="center"><?php _e('Sorry, but you are looking for something that isn’t here.', 'kubrick'); ?></p>
<?php if(function_exists('get_search_form')) get_search_form(); ?>
<?php endif; ?>

</div>
<div class="sidebar2">
<?php include (TEMPLATEPATH . '/sidebar2.php'); ?>
</div>

</div>
<div class="cleared"></div>

<?php get_footer(); ?>
 
Sist redigert:

Mr Vest

Sjefen over alle sjefer!
Auu, steike. Den fila var litt sånn noenlunde mer stor enn hva jeg trodde den skulle være. Derfor fant jeg en litt anderledes løsning enn den jeg først så for meg her nå som burde fungere veldig greit. Om du tar følgende kode - kopierer den inn i f.eks Notepad og lagrer den som f.eks "artikler.php" (du bestemmer selv) - og deretter laster filen opp til themets mappe skal du være ganske ferdig.

Kode:
<?php
/*
Template Name: Artikler
*/
?>

<?php get_header(); ?>
<div class="contentLayout">

<div class="content">

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<?php if (!in_category('1')) continue; ?> <!-- HER SKRIVER VI INN ID PÅ KATEGORIEN SOM DET SKAL HENTES POSTER FRA. -->

<div class="Post">
    <div class="Post-tl"></div>
    <div class="Post-tr"></div>
    <div class="Post-bl"></div>
    <div class="Post-br"></div>
    <div class="Post-tc"></div>
    <div class="Post-bc"></div>
    <div class="Post-cl"></div>
    <div class="Post-cr"></div>
    <div class="Post-cc"></div>
    <div class="Post-body">
<div class="Post-inner article">
<h2 class="PostHeaderIcon-wrapper">
<span class="PostHeader"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>">
<?php the_title(); ?>
</a></span>
</h2>
<?php ob_start(); ?>
<?php $icons = array(); ?>
<?php if (!is_page()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostDateIcon.png" width="12" height="15" alt="PostDateIcon" />
<?php the_time(__('j-m-Y', 'kubrick')) ?>

<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (!is_page()): ?><?php ob_start(); ?>


<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (0 != count($icons)): ?>
<div class="PostHeaderIcons metadata-icons">
<?php echo implode(' | ', $icons); ?>

</div>
<?php endif; ?>
<?php $metadataContent = ob_get_clean(); ?>
<?php if (trim($metadataContent) != ''): ?>
<div class="PostMetadataHeader">
<?php echo $metadataContent; ?>

</div>
<?php endif; ?>
<div class="PostContent">
<?php if (is_search()) the_excerpt(); else the_content(__('Read the rest of this entry &raquo;', 'kubrick')); ?>

</div>
<div class="cleared"></div>
<?php ob_start(); ?>
<?php $icons = array(); ?>
<?php if (!is_page()): ?><?php ob_start(); ?>


<?php $icons[] = ob_get_clean(); ?><?php endif; ?>
<?php if (!is_page() && get_the_tags()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostTagIcon.png" width="18" height="18" alt="PostTagIcon" />
<?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', ' '); ?>
<?php $icons[] = ob_get_clean(); ?><?php endif; ?><?php if (!is_page() && !is_single()): ?><?php ob_start(); ?><img src="<?php bloginfo('template_url'); ?>/images/PostCommentsIcon.png" width="18" height="18" alt="PostCommentsIcon" />
<?php comments_popup_link(__('Ingen kommentarer »', 'kubrick'), __('1 kommentar »', 'kubrick'), __('% kommentarer »', 'kubrick'), '', __('Stengt for kommentarer', 'kubrick') ); ?>
<?php $icons[] = ob_get_clean(); ?><?php endif; ?><?php if (0 != count($icons)): ?>
<div class="PostFooterIcons metadata-icons">
<?php echo implode(' | ', $icons); ?>

</div>
<?php endif; ?>
<?php $metadataContent = ob_get_clean(); ?>
<?php if (trim($metadataContent) != ''): ?>
<div class="PostMetadataFooter">
<?php echo $metadataContent; ?>

</div>
<?php endif; ?>

</div>

    </div>
</div>

<?php endwhile; ?>
<?php
$prev_link = get_previous_posts_link(__('Newer Entries &raquo;', 'kubrick'));
$next_link = get_next_posts_link(__('&laquo; Older Entries', 'kubrick'));
?>
<?php if ($prev_link || $next_link): ?>
<div class="Post">
    <div class="Post-tl"></div>
    <div class="Post-tr"></div>
    <div class="Post-bl"></div>
    <div class="Post-br"></div>
    <div class="Post-tc"></div>
    <div class="Post-bc"></div>
    <div class="Post-cl"></div>
    <div class="Post-cr"></div>
    <div class="Post-cc"></div>
    <div class="Post-body">
<div class="Post-inner article">

<div class="PostContent">

<div class="navigation">
	<div class="alignleft"><?php echo $next_link; ?></div>
	<div class="alignright"><?php echo $prev_link; ?></div>
</div>

</div>
<div class="cleared"></div>


</div>

    </div>
</div>

<?php endif; ?>




<?php else : ?>
<h2 class="center"><?php _e('Not Found', 'kubrick'); ?></h2>
<p class="center"><?php _e('Sorry, but you are looking for something that isn’t here.', 'kubrick'); ?></p>
<?php if(function_exists('get_search_form')) get_search_form(); ?>
<?php endif; ?>

</div>
<div class="sidebar2">
<?php include (TEMPLATEPATH . '/sidebar2.php'); ?>
</div>

</div>
<div class="cleared"></div>

<?php get_footer(); ?>

Her kan du legge merke til 2 ting.

1: Linje 15 - Her må du spesifisere ID på kategorien du vil vise poster fra. ID finner du tilgjengelig i administrasjonspanelet.

2: Helt i toppen har jeg lagt til noe som heter "Template Header." Her finner du "Template Name: Artikler" . Dette betyr altså at straks etter denne er lastet opp til themets mappe, da kan du forsøke å opprette en ny page fra site admin. Når du oppretter en ny page kan du velge "Page Template" for den du oppretter, og der hvor du da kan velge Page Template skal du nå finne noe som heter "Artikler." Det heter da "Artikler" fordi det er dette som står i toppen på denne filen jeg har lagt ut over. Dette kan endres til hva som helst.

Det eneste jeg har gjort her er altså å legge til denne helt øverst, og samtidig også den ene linja hvor du skriver inn ID på kategorien du vil hente poster fra. Resten er ren kopi fra Index.php som du la ut i posten din.

Jeg vil også legge til at du kan lage så mange slike filer som dette du vil. Eneste er at du må forandre denne "Template Name: Artikler" helt i toppen, og helt klart også filnavnet.

Denne kodesnutten over er neppe til mye hjelp for mange andre. Denne funker kun for themet du Tonny bruker - Mens på andre themes vil det ikke fungere å bare kopiere den koden over til en egen fil. (da var det nå sagt det også dersom noen skulle undre.)

- Håper den funker da Tonny. Jeg forsøkte delvis her hos meg og alt så bra ut. :)
 

Tonny Kluften

Administrator
Herlig Atle. Tusen takk. Ja, fila er stor, masse runde hjørner og jåleri i designen som gjør det :D

Jeg satt akkurat og plundret litt til med dette og fant en løsning 2 min. etter at du postet.

Fant via denne siden: Template Tags/query posts « WordPress Codex

Løsningen er den samme, lage template ved navn artikler. Men så sette inn query_posts('cat=3'); slik:

<?php query_posts('cat=3'); if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

Til evt. andre interesserte vil det i Wordpress default theme se slik ut:
<?php query_posts('cat=3'); if (have_posts()) : while (have_posts()) : the_post(); ?>
 

Mr Vest

Sjefen over alle sjefer!
<?php query_posts('cat=3'); if (have_posts()) : ?> var jeg faktisk ikke klar over selv. Det er faktisk en mye bedre løsning å bruke den du kom med der fremfor <?php if (!in_category('1')) continue; ?> som jeg kom med i mitt innlegg. Den jeg kom med kan vel faktisk bidra til at bloggen laster treigt når antallet poster blir høøøøyt.. (Minst 3-400stk) :)
 
Topp