Nu, tā kā wasted nepieteicās, tad nācās to vien darīt pašam. :) Kaut kādā veidā ierakstu kategorizēšana manā žūrnālā ir iespējama un darbojas. Varat paskatīties. Nekā sarežģīta, tikai tagad, katru reizi rakstot kādu pukstu, jāatceras pielipināt dažus liekus vārdus.
Tātad – kā tas viss darbojas? Tālāk paskaidrošu, kā es to izdarīju, taču galvenais jau ir ideja, ne izpildījums. Manā žūrnālā, lai ierakstus varētu dalīt pa tēmām, tiek izmantoti dažādi fona attēli, taču tas ir tikai viens veids. Man tā patika labāk, taču pilnīgi mierīgi to var izdarīt citā veidā – izvadīt kādu tekstu vai vēl ko.
Manā stilā katrs ieraksts ir savā <div /> tagā ar klasi "ieraksta_teksts", lai to formatētu, kā vajag. Tad, lūk, šim tagam arī tiek pievienota vēl viena klase, kas ir saistīta ar manis izvēlēto kategoriju katram ierakstam. Ja kādu interesē CSS, paskatieties mana žūrnāla HTML kodu. Piemēram lietošu divas kategorijas – "e-music" un "e-fun" ("e" no "entry"), taču to ir vairāk. Nav nekādu grūtību noteikt, cik un kādas vajag.
Kādai kategorijai ieraksts pieder? Es vienkārši katra ieraksta sākumā pierakstu <span class="e-music"></span>. Tas piemēram. Tā kā šis elements ir tukšs un <span /> neko nenozīmē, tad draugu lapās tas izskatās kā parasti. Tālāk, pirms katra ieraksta izvadīšanas, tiek pārbaudīts, kādai kategorijai tas pieder. To dara šī funkcija:
function categorization(string text) : string "Nosaka ieraksta kategoriju" { var string category = ""; if ($text->contains("<span class=\"e-music\">")) { $category = " cat-music"; } elseif ($text->contains("<span class=\"e-fun\">")) { $category = " cat-fun"; } else { $category = ""; } return $category; }
Tur viss elementāri. (Patiesībā tā pārbauda arī, vai klase nav apostrofos,
taču noīsināju, lai saprotamāks.) Ja ieraksts satur vajadzīgo frāzi, tad tiek
atgriezta atbilstoša CSS klase, kas arī nosaka formatējumu – "e-music" -> "cat-music".
Pēc tam šī funkcija tiek izsaukta, piemēram, no funkcijas Page::print_entry(Entry e)
apmēram šādi:
var string kategorija = categorization($e.text); """<div class="ieraksta_teksts$kategorija" id="e$e.itemid">\n""";
Īsumā. Funkcija, izvadot ierakstu, pārbauda, vai tas satur kādu noteiktu frāzi, un atgriež CSS klases nosaukumu, kurš tad tiek pielipināts attiecīgā ieraksta konteinerim. Un uiss. :) Man ir doma par elementāru filtrēšanu, bet tad jau redzēs. Vēl īsti nav, ko filtrēt.
pirmais teikums man patika, nudien :] mans rakstīšanas stils nav īsti piemērojams dažādām kategorijām, tāpēc man tāda kategorizēšana nav aktuāla, taču šī ideja ir hm.. ar plašu vērienu vai augstu lidojumu.
nē, ideja ir patiešām plaša, ar atlasīšanām un statistikām, par kuru tēmu visvairāk rakstīts utt. būtu bijis vērtīgi vispirms ievietot žurnālī aptauju, cik daudzi patiešām lasa Tavus ierakstus ne caur draugu listēm, jo diez vai kas kļūs skaidrāks tiem, kas to nedara.