/dev/nikc/blog

Kuolleiden purjehduskenkien seura

Aug 30th 2006

Hei, taas me purkataan

19:33

Edit 24.10.2006: Muutoskoodi oli virheellistä. Postaukset jotka olivat kategoriassa jota normaalisti listataan, pysyivät listauksissa mukana, siitä huolimatta että olivat mukana myös poisjätettävissä kategorioissa. Minä en sitä halunnut joten muutin koodia.

Pitipä tämäkin nähdä. Ensimmäinen kirjoitukseni joka koskee koodausta, tavallaan. Enemmänkin tämä on kuitenkin blogimoottorin, tai oikeastaan pluginin, viritystä. Joten jos saat näppylöitä koodauksesta, tai työkalunasi ei ole WordPress, tai et käytä Scott Reillyn Customizable Post Listings-pluginia, voit huoletta jättää tämän lukematta. Kiva kun kävit, nähdään taas.

Ja sitten asiaan. Minua pännii niinkin pieni asia, kuin se että tuossa oikeassa palstassa listattujen viimeisten kirjoitusten listassa oli mukana myös nämä pikkupostaukset, jotka myös Asides-kirjoituksina tunnetaan. CPL-plugin ei oletuksena osannut jättää kategorioita pois, ainoastaan vastaanottaa listan halutuista kategorioista. Eihän semmoinen käy. Jos joskus haluan lisätä blogiini kategorian, pitää minun silloin myös muistaa lisätä se tuohon listaan. Huono, huono, huono.

Sukelletaan siis koodin pariin. Muokataan plugin-hakemistosta löytyvää tiedostoa customizable-post-listings.php, ja tarkemmin vielä funktiota c2c_get_recent_posts (alkaen riviltä 32).

Oletuksena löytyy tämänmoinen pätkä:

if ($categories) {
	$first = 1;
	$sql .= "AND ( ";
	foreach ($cats as $cat) {
		if ($first) $first = 0;
		else $sql .= "OR ";
		$sql .= "$tablepost2cat.category_id = '$cat' ";
	}
	$sql .= ") ";
}

Se tulisi korvata seuraavanlaisella:

if ($categories) {
    $excl   = "";
    $incl   = "";
    
    foreach ($cats as $cat) {
        if ($cat[0] == '-') {
            $excl .= "," . substr($cat, 1);
        } else {
            $incl .= "," . $cat;
        }
    }
    
    if (strlen($excl) > 0) {
        $sql .= "AND (post_id NOT IN (SELECT post_id FROM $tablepost2cat WHERE category_id IN (". substr($excl, 1) .")) ";
    }
    
    if (strlen($incl) > 0) {
        $sql .= "AND ($tablepost2cat.category_id IN (" 
             . substr($incl, 1) . ") ";
    }
    $sql .= ")";
}

Lopputuloksena saadaan haluttu toiminta. Funktion kolmas kutsuparametri jättää nyt pois kategoriat, joiden id-numeron edessä on miinusmerkki (-).

Esim. c2c_get_recent_posts(5, "<li>%post_URL%</li>", '1,2,-3'); noutaisi 5 viimeisintä kirjoitusta jotka löytyy kategoriassa 1 tai 2, mutta ei kategoriassa 3.

Tulipas hiki.

Psst... Samainen muutos tarvinnee tehdä samaisen pluginin muihinkin postauslistausfunktioihin, mikäli samanmoista toimintaa niihin haluaa. Se jääköön kullekin kuitenkin kotiläksyksi, koska minä en tarvitse, joten en tee.

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Meta

Pages

Search blog

Latest comments