Afegides 406 Lletres de Cançons
Lectures: 601En la meva dèria per recuperar el contingut de les antigues versions de La Dragonera, he estat treballant amb les còpies de seguretat que tenia i posats a començar per algun lloc, he recuperat les 406 lletres de cançons que hi havien en la primera versió de la site.
Aquesta ha estat una conta pendent moral durant uns 2 anys, ja que era una de les coses que més m'hi vaig posar i que més oblidades van quedar. Però l'script per fer-ho funcionar ha estat una mica complicat, ja que al estar obert a tot el públic en el passat, la gent ho penjava tal com ho trobava per internet, cosa que fèia que ara tingués un poti poti de formats i fos molt difícil de fer-ho entrar tot en un mateix procès.
En aquest petit article explico els canvis que he hagut de fer, a mode de Històric, tant en els registres com en el propi WordPress per aconseguir quelcom de mínimament acceptable.
Per un costat, he hagut de netejar tot aquest merder en el contingut de l'article, amb una funció marca de la casa que bàsicament neteja els tags HTML conservant només els salts de línia però unificant-los a XHTML:
-
function prepararTexto($texto)
-
{
-
','
-
','
-
');
-
$reemplazar = '[-!!-]';
-
',$texto);
-
return $texto;
-
}
A més, s'ha de tenir en compte que el WordPress el tinc en charset UTF-8, cosa que m'obliga a convertir el contingut a UTF-8. En PHP hi ha una funció que converteix de Latin-1 a UTF-8 (utf8_encode()) però resulta que si el texte ja està en UTF-8 quan s'executi la funció encara la liarà més. Per això vaig haver de construir una funció que determinés si un texte ja estava en UTF-8 o no (trobada a www.php.net):
-
function isUTF8($string)
-
{
-
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
-
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
-
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
-
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
-
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
-
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
-
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
-
)+%xs', $string);
-
}
I llavors, per últim, vaig estar investigant el tema de les URLs. Resulta que tal com tinc configurat el WordPress, aquest construeix els links "amigables", és a dir, agafa el títol del post i ho posa com a link de referència, que sumat a un .htaccess particular, dóna lloc a unes URLs maques que al Google agraden molt. Així que vaig haver d'omplir correctament el camp "post_name" de la taula d'articles del WordPress. Per a fer això, em trobo que haig de netejar el nom del post de caràcters extranys, espais, i tota mena de preparacions. Això ho he fet en part gràcies a les expressions regulars, un tema que encara estic bastant peix però que ajuda bastant.
Primer, una funció per determinar si haig de fer algun canvi al nom del post:
Aquesta funció mira si en el nom del post hi ha algun caràcter que no sigui números del 0 al 9, i lletres netes en majúscules o minúscules, ni guions ni "underscores". A més miro si hi han 2 guions seguits, que tampoc es permet.
Llavors, en cas que es cumpleixi, tenim un nom de post que cal netejar-se, així que aplicarem la següent funció per netejar-lo (es compòn de 2 funcions):
-
function limpiaSpecialChars($texto)
-
{
-
$texto = limpiar_acentos($texto);
-
return $texto;
-
}
-
-
function limpiar_acentos($string)
-
{
-
return strtr($string, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
-
}
La segona és simplement per no tenir-ho tot condensat en una sola funció. Cal tenir en compte que al ser caràcters que depenen directament del charset usat (el nostre és latin-1), cal primer de tot convertir-ho al nostre charset per que la funció funcioni perfectament, i després tornar-ho a convertir altre cop a UTF-8 per evitar problemes.
I ja al final, quan ho he tingut tot fet, he pogut veure que ja m'apareixien els posts correctament en el WordPress, excepte alguna lletra que hauré d'arreglar-la manualment. Però la forma que té el WordPress per mostrar el contingut de les categories no m'agrada en absolut. Així que he hagut d'endinsar-me una mica en el codi i en la documentació per veure que per conseguir un llistat de posts inclosos en una categoria havia de crear-me un arxiu nou (un template) amb el nom "category.php" i allà fer el que em plagui. Així que l'he creat a còpia de la plantilla de l'Arxiu de posts i aplicar el plugin de Llistat de Categories. I bé, el resultat és el que tenim ara.
Ha estat una bona feinada, però ja ho tinc com m'agrada... com a mínim no em desagrada. He perdut una mica de potència al no tenir un camp específic pel títol de la cançó i un altre pel grup, però funciona fins i tot amb les búsquedes. No està mal
Salut!
Home
Tecnologia
Flashos
Humor
Videos
Lletres
Fotos






