Ključne besede – majhen class za delo z njimi
No že dalj časa razmišljam o tem, kako delujejo te ključne besede, s tem ne mislim kako učinkujejo na iskalnike in uporabnike, ampak kako dejansko deluje ozadje. No stvar je lahko zelo preprosta, tako sem si spisal en “noob” class, ki dela to, kar bi sam potreboval za te ključne besede.
No v celem postopku ni vključena kakšna avtomatska generacija ključnih besed, ampak je potrebno te ključne besede vpisati ročno. Ključne besede se loči s pomočjo vejice in se jih nato s pomočjo explode razbije na posamezno besedo. V primeru tudi neke varnostne zanke, ki bi preverjala, da so besede res ločene samo z vejico in ni nekih drugih znakov, ki bi ločevali besede.
Ne bom pisal preveč na dolgo, tako da je spodaj prilepljen kar celoten class.
< ?php
include 'config.php'; // MYSQL POVEZAVA
class tagiranje {
// PROPERTIES
var $tags;
var $besede = array();
var $besedeclean = array();
var $p;
var $poz;
var $arraybesed = array();
var $getbesede = array();
var $maxfont = '50';
var $minfont = '10';
var $out;
// EXPLODE BESED
function get_words($tags) {
$besede = explode(",", $tags);
foreach ($besede as $beseda) {
if (mb_substr($beseda, 0, 1) == " ") {
$besedaclean[] = substr_replace($beseda, "", 0, 1);
}
else {
$besedaclean[] = $beseda;
}
}
$this->arraybesed = $besedaclean;
}
function checkwords() {
$besede = $this->arraybesed;
foreach ($besede as $beseda) {
$query_check = mysql_query("SELECT * FROM tagi WHERE tag='$beseda' LIMIT 1");
$num = mysql_num_rows($query_check);
if ($num == null) {
$query_add_tag = mysql_query("INSERT INTO tagi(tag, vrednost) VALUES('$beseda', '0')");
echo mysql_error();
}
else {
$pod = mysql_fetch_assoc($query_check);
$novavrednost = $pod['vrednost'] + 1;
$query_update_v = mysql_query("UPDATE tagi SET vrednost='$novavrednost' WHERE id='".$pod['id']."'");
echo mysql_error();
}
}
}
function getwords($minfont, $maxfont, $limit) {
$query_get_max = mysql_query("SELECT MAX(vrednost) as maxvrednost FROM tagi");
$tempmax = mysql_fetch_assoc($query_get_max);
$query_get_words = mysql_query("SELECT * FROM tagi ORDER BY vrednost DESC LIMIT $limit");
while ($data = mysql_fetch_assoc($query_get_words)) {
$fontper = round(($maxfont / $tempmax['maxvrednost']) * $data['vrednost']);
if ($data['vrednost'] > 0) {
if ($fontper > $minfont) {
$out[] = array($data['tag'] => $fontper);
}
else {
$out[] = array($data['tag'] => $minfont);
}
}
else {
$out[] = array($data['tag'] => $minfont);
}
}
return $out;
}
}
?>
Ok najprej kot sem že povedal se s pomočjo $tag->get_words($seznambesed); dobi array vpisanih ključnih besed. Nekaj klobase je zaradi začetnih presledkov, ki nastanejo zaradi ločevanja besed, ker pri vpisovanju za vejico ponavadi vstavimo presledek se le ta dodeli besedi za vejico. Seveda zgornja rešitev ni dobra, ker lahko nekdo po pomoti ali pa tudi ne, vpiše dva presledka.
No ko enkrat imamo besede, preverimo $tag->checkwords(); če katera od besed že obstaja, če obstaja ji zvišamo vrednost, nekateri temu rečejo frekvenco, ali kako drugače. No če beseda ne obstaja, jo enostavno vpišemo in dodelimo nično vrednost. Na podlagi vrednosti se nato izračunava velikost fonta glede na pojavnosti.
Kako do prikaza? Sam sem izbral način da se določi število besed, največji font in najmanjši, kar omogoča izračunavanje velikosti fonta glede na besede. Izračunavanje gre po križnem računu, glede na največjo pojavnostjo. Torej tista beseda, ki ima največjo pojavnost je v tem primeru izpisana prva.
Torej za konec še zahtevamo ureditev besed: $tag->getwords(10, 50, 30); . Nastavitve si sledijo: najmanjša velikost fonta, največja velikost fonta in število ključnih besed.
Kot rezultat dobimo več nivojski array, ki ga poljubno izpišemo.
Delujoč primer izpisa lahko najdete tukaj. Na primeru lahko s pomočjo povezave pod ključnimi besedami, sami vnesete ključne besede, po možnosti večkrat.
Še ni komentarjev.
Komentiraj ...

Anketa
Tagi
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.


