Flera teman på samma Wordpress-installation

Tråden skapades och har fått 10 svar. Det senaste inlägget skrevs .
1

Tjena,

Antar att hjälten Kalle W dyker upp här inom kort och bjuder på sedvanlig nyttig information. Men frågan är följande:

På min sida är skrivs både nyheter och bloggar. Problemet är att utseendet för dessa är lika och därmed svårt för läsaren att urskilja. Det ska så vitt jag vet gå att använda olika templates för olika kategorier?

Det jag eftersöker är att blogginläggen som publiceras på startsidan ska leta till "hela" bloggen. Det vill säga att man kan läsa både det senaste inlägget, men kunna scrolla vidare till tidigare inlägg.

Mvh

  • Medlem
  • Bollnäs
  • 2010-09-28 20:56

Jag är inte riktigt hundra på exakt hur du vill få slutresultatet, men du har ju alltid möjlighet att använda olika php-mallar för olika avdelningar på sajten. På det viset kan du även ha olika utseende genom att modifiera HTML och CSS:en mot de olika mallarna, alternativt länka in ytterligare CSS:er. Kolla även på body_class på Codex

Låt säga att du publicerar bloggen i sajten.se/blogg/ och nyheter i sajten.se/nyheter/ och vill ha olika struktur eller utseende på de olika avdelningarna. Då kan du ha en mall (förutom index.php) som heter category-blogg.php och en som heter category-nyheter.php som då visar respektive avdelnings sammanställning – oftast de tio senast publicerade artiklarna. Mer info på Codex.

För de enskilda artikelvisningarna måste du använda conditional tags i single.php för att separera olika categorys. Bäst då är att använda in_category('blogg') och in_category('nyheter') som då returnerar true för respektive artiklar. Mer info på Codex

Det borde fixa biffen.

Har svårigheter med den sistnämnda. Det finns idag cirka 5 bloggare på sidan. Alla dessa behöver inte ha en helt egen mall, men ändock vill jag ha en stor Byline-bild ovanför rubriken på varje inlägg. Måste jag göra flera kopior av mallen då, med annan länkning till bilden?

Av det jag förstår av in_category så kan jag bara använda mig av två olika mallar?

Att bygga unika artikelmallar känns lite knepigare än att bygga category-templates.

  • Medlem
  • Bollnäs
  • 2010-10-05 11:08

Nej, det behöver du inte. Ska du bara ha en byline så kan du göra en fråga på användar-ID och använda antingen Gravatar för bilden via get_avatar() eller göra en egen funktion för att hämta bilden som är kopplad till användaren. Sen kan du använda get_userdata(), get_usermeta() eller the_author_description() och the_author() för att hämta beskrivning, namn osv och skriva ut det.

Mer på Codex

Jag har gjort precis en sån funktion på Macbloggen i slutet på varje artikel, och överst i sammanställningen för alla artiklar den användaren skrivit. Där använder jag Gravatar för bilden.

Börjar greppa det här nu. Har förstått hur man bygger "om" single.php till att leta efter olika mallar om de finns:

<?php $post = $wp_query->post; if ( in_category('2') ) { include(TEMPLATEPATH . '/single-blog.php'); } elseif ( in_category('15') ) { include(TEMPLATEPATH . '/single-nyheter.php'); } elseif ( in_category('18') ) { include(TEMPLATEPATH . '/single-video.php'); } else { include(TEMPLATEPATH . '/single-default.php'); } ?>

Men för att få signle-blog.php att så ut som jag vill har jag inte riktigt luskat ut. Jag vill alltså att den ska fungera som en egen separat blogg. Det vill säga att man kan läsa det senaste inlägget längst upp, sedan scrolla ner för tidigare inlägg. En klassisk bloggmall helt enkelt.

  • Medlem
  • Bollnäs
  • 2010-10-12 19:41

Då skulle jag föreslå dubbla loop:ar via antingen query_posts() eller wp_query(). Mer på codex.

Kan detta lösas med någon slags funktion för att hämta 10 senaste inläggen från aktiv category tro?

Om jag läser blogginlägget "Godis är gott" som är placerad i kategorin "Tips/Godis". längst ner i inlägget visas "mina senaste inlägg" och en listning på 10 stycken sorterat efter datum.

Detta skulle automatisera själva skapandet av single.php template då den endast hämtar inlägg beroende på vilken kategori bloggen är placerad i.

<?php
	global $post;
	if(is_category() || is_single()){
	foreach(get_the_category() as $category)
	{
	$current = $category->cat_ID;
	$current_name = $category->cat_name;

	//query_posts("cat=". $current);

	$myposts = get_posts(array('category__in' => array($current)));

	//$myposts = get_posts('numberposts=50&category='.$current); 

	//query_posts(array('category__in' => array(11)));
		}
	}

	foreach($myposts as $post) :
	setup_postdata($post); 

	?>
	<li>
	<a href="<?php the_permalink(); ?>">
	<?php the_title(); ?></a>
	</li>

	<?php endforeach; ?>
			<?php } ?>

Verkar fungera precis som jag eftersökte.

  • Medlem
  • Bollnäs
  • 2010-10-27 23:18

Det ser väl omständligt ut det där. Så här skulle jag gjort.

<?php if(is_category() || is_single()) : ?>
<ul>
<?php $current_category = get_the_category(); 
$latest_query = new WP_Query('cat='.$current_category[0]->cat_ID.'&showposts=10');
while ($latest_query->have_posts()) : $latest_query->the_post();
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>

Du kan ändra värdet på showposts till antalet länkar som ska visas. Om en post är kopplad till flera categories kommer bara posts från den första (lägsta ID) att visas.

Senast redigerat 2010-10-27 23:48

Ska testa din variant. Låt säga att inlägget är kopplat till "Bloggar"/"bloggnamn" och "Featured". Om Featured har ID 6, Bloggar (parent) ID8 och Bloggnamn (child) ID11. Då skulle den visa senaste från "Featured" eller "Bloggar", menar du?

Jag vill bara att den visar från aktuell child.

  • Medlem
  • Bollnäs
  • 2010-10-28 21:09

I ditt exempel skulle enbart artiklar kopplade till "Featured" listas.

get_the_category() returnerar en array med alla artikelgrupper aktuell artikel är kopplad till. Eftersom jag enbart hämtar cat_ID från den första i array:en så blir det endast en grupp som visas, och då den med lägst ID.

Det går naturligtvis att göra en foreach och hämta ID från samtliga för att sedan använda dem som ett kommaseparerat värde eller en array när man bygger parametrarna för WP_Query().

1
Bevaka tråden