1NT3RN3T

Professionelle amatørhjemmesider

Søg

PHP ZipArchive

Jeg har netop skrevet en funktion, der zip’er en række filer og sender dem til browseren. Det gav anledning til et problem, hvor zip-filen fik den rigtige størrelse, men den blev ugyldig (invalid).

Problemet skyldes at jeg startede med at angive placeringen i zip-filen med en ‘/’. Så snart jeg ændrede det var der ingen problemer.

Resten af koden kan findes her: http://akrabat.com/creating-a-zip-file-with-phps-ziparchive/.

Tilpas menuer i WordPress med wp_nav_menu

Menusystemet på Herlev Gymnasium og HFs hjemmeside var tidligere et plugin, jeg havde skrevet før WordPress kom med deres menusystem i form af wp_nav_menu. Jeg tænkte at det var på tide at skifte til WordPress’ eget system fordi det både er hurtigere og langt nemmere at tilpasse end mit eget.

Mit eget menusystem havde dog en masse finetunet tilpasning, som ikke umiddelbart var nemt at få med over i menusystemet i WordPress. Fx skulle alle indlæg fremstå i menuen som om den aktive side er Nyheder og alle billedgallerier (som åbner på deres egen side), skulle se ud som om siden Billedgalleri var den aktive side.

Løsningen blev at jeg tilføjede denne kode til min functions.php fil i temaet.

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
global $post;

//Sørger for at alle billedgallerier har Billedgalleriet som aktiv side i menuen
if( $post->post_parent == "2" && ($item->object_id == "2" || $item->title == "Skolens liv") ){
array_push($classes, 'current-menu-item');
}

//Sørger for at alle nyhederne har Nyheder som aktiv side i menuen
if( $post->post_type == "post" && ($item->object_id == "151" || $item->title == "Skolens liv") ){
array_push($classes, 'current-menu-item');
}

//Sørger for at alle de øverste menupunkter får class top
if($item->post_parent == "0"){
array_push($classes, 'top');
}

//Sørger for at markere det øverste menu-valg
if(get_the_title($post->post_parent) == $item->title){
array_push($classes, 'current-menu-item');
}

return $classes;

}

Filter bliver gennemløbet for alle menupunkter i menuen. Så er det bare at tjekke egenskaberne for den side som brugeren er på (ved hjælp at $post) og holde det op mod menupunktets egenskaber (ved hjælp af $item). En meget elegant løsning, når jeg selv skal sige det :)

Menupunkter med forskellige farver

Herlev Gymnasium og HFs hjemmeside gav jeg CSS koden en overhaling. I den forbindelse slog det mig, at CSS koden til menuen i toppen ikke var lavet helt hensigtsmæssigt.

Problemet var, at de fem forskellige farver var knyttet til hver af de fem menupunkters id – men i virkeligheden skulle de være knyttet til menupunktets placering. Hvis jeg byttede om på rækkefølgen, så Undervisning kom før Information, så skulle Undervisning og Information også bytte farve.

Løsningen blev at knytte det til placeringen ved hjælp af CSS3 koden nth-child(X), hvor X angiver hvilket nummer i rækkefølgen der er tale om. Dermed kom CSS koden til at se ud nogenlunde som den nedenstående:

#dropline li:nth-child(1) a {background-color:rgb(92,46,144);width:111px;}
#dropline li:nth-child(2) a {background-color:rgb(127,181,57);width:119px;}
#dropline li:nth-child(3) a {background-color: rgb(228,149,26);width:98px;}
#dropline li:nth-child(4) a {background-color: rgb(9,109,184);width:137px;}
#dropline li:nth-child(5) a {background-color: rgb(27,27,27);width:78px;}

Eneste problem der nu var tilbage, var at menuen ikke længere havde farver i IE7 og IE8… :(

Det kunne Lisa fra CCS-Snippets heldigvis klare! Hun forklarer hvordan man med li+li kan give menupunkter forskellige farver i ældre browsere. Dermed kom den nye kode til at se således ud:

#dropline li a {background-color:rgb(92,46,144);width:111px;}
#dropline li+li a {background-color:rgb(127,181,57);width:119px;}
#dropline li+li+li a {background-color: rgb(228,149,26);width:98px;}
#dropline li+li+li+li a {background-color: rgb(9,109,184);width:137px;}
#dropline li+li+li+li+li a {background-color: rgb(27,27,27);width:78px;}

Hvis jeg nu finder på at bytte om på nogle menupunkter, så forbliver farverækkefølgen den samme.

Web host

Spørgsmålet er vel – nærmest – lige så gammelt som internettet… :) Hvor skal man have sin hjemmeside hostet?

Mine egne sider ligger hos Gigahost. De udmærker sig ved rigtig god oppetid, rimelig mange valgfriheder og ikke mindst at man for en yderst rimelig pris kan have lige så mange domæner hostet, som man kan forestille sig. Med en årlig pris på kun 350,- er det helt sikkert i den billige ende og med 15 GB server plads, så skulle det nødigt blive problemet…
Slet ingen problemer med Gigahost… Jo, der er to væsentlige kritikpunkter, nemlig at det ikke går alt for hurtigt på deres servere – loadetiden på hjemmesiden bliver forsinket af hosten (se nedenfor hvor det kan gøres hurtigere) og deres support skulle ikke være alt for hurtigt til at svare på spørgsmål – men hvis der overhovedet er support til den pris, så er jeg imponeret.

Jeg har tidligere haft mine egne hjemmesider hos Cliche og hos Web10. Det er snart længe siden, jeg var hos Cliche, så meget kan være ændret siden da, men problemerne dengang var for meget nedetid og kun mulighed for et domæne pr. konto. Dermed kunne det hurtigt blive dyrt, når man som jeg havde brug for at få hostet flere domæner. Udover mine egne domæner hos Web10, så havde vi en periode også min arbejdshjemmeside hostet hos Web10 på deres erhvervsløsning – det endte som en lidt af en farce. Først og fremmest havde de ALT for meget nedetid. Oftest var deres egen hovedside også nede sammen med vores egen side, så der var bestemt ikke tvivl om, at de havde et alvorlig server problem. Desuden var vi på en server, der kørte gamle versioner af både PHP og MySQL – dermed kunne vi ikke opdatere vores WordPress-installation til nyeste fordi det krævede nyere software på serverne. Vi fik en mail om at alle automatisk ville blive overflyttet til nyere servere, men flere måneder efter den annoncerede dato var der stadig ikke sket noget… For at toppe det hele, så lavede de i øvrigt en lille svinestreg, da vi skiftede til en anden udbyder (til trods for at vi stadig havde et halvt år tilbage af den periode vi havde betalt for) – da vi sendte anmodningen om at skifte DNS, så slettede de med det samme vores DNS opslag på deres server. Det betød at vores side var nede i op til et døgn – noget der kunne være undgået, hvis bare de havde ventet 24 timer med sletningen, så havde overgangen til en anden host gået helt uden nedetid. Det synes jeg faktisk ikke er i orden.

Vi flyttede arbejdshjemmesiden til Blanye. Det har indtil videre været en meget positiv oplevelse. Prisen er bestemt ikke i top med kun 100,- om måneden – det er deres support til gengæld (altså i top), der er nu noget svært tilfredsstillende ved at sende en mail til support kl. 21.45 og så få et personligt svar en time senere :) Hastigheden på deres servere er klart bedre end alle de udbydere jeg har prøvet før – og nedentid har indtil nu været ikke-eksisterende. Så Blanye har min varmeste anbefaling (jeg skal nok opdatere indlægget, hvis jeg ændrer meningen…)

1NT3RN3T i luften

Mine projekter på nettet fylder nu så meget, at jeg har givet dem deres egen side – nemlig 1nt3rn3t.dk. Navngivningen er helt i tråd med tidligere udvidelser, hvor mine fotoprojekter fik deres egen side, f0t0.dk. Jeg havde tidligere det hele samlet på bredsig.dk, men den side vil for fremtiden i højere grad være dedikeret til private ting.

Det er ambitionen, at denne side jævnligt bliver opdateret med gode råd og vink til at bruge WordPress og alt der omkring.