Anton Niklasson

Jag bara måste dela med mig av det här. Så enkelt men användbart. I terminalen vill jag ibland öppna den aktuella mappen i ett nytt Finderföntster. Såhär gör man:

open .

That’s it.

Python

Jag tänkte att det vore kul att lära sig något nytt, så nu kör jag igång med lite pythonprogrammering. Vore najs att kunna lite mer än bara PHP.

Ta bort 3px ”buggpadding” på bilder!

Jag har stött på ett litet, men väldigt irriterande och konstigt, problem på vissa hemsidor jag jobbat med. Bilder får en konstig padding vid botten. Det kan väldigt enkelt förstöra en layout. Visst, det kanske inte är världens grej. Men när man väl upptäckt det förstoras mellanrummet något brutalt.

Lösningen till den här buggen, som jag nog får lov att kalla det, är väldigt enkel. Ge bilden, eller img-taggen för att vara mer exakt, följande CSS-kod så är problemet ur världen:

[crayon]
img { display: block; }
[/crayon]

HTML i Email Är Svårt och Omständigt

Att vi får snygga och ”korrekta” emails är inte något som är särskilt konsigt. Men få vet nog hur mycket jobb som faktiskt ligger t ex ett nyhetsbrev ifrån PC För Alla. För det första tolkas ingenting som finns i head-taggar. För det andra är CSS inom <style> inte att lita på. Och för det tredje så fungerar inte de moderna tekniker med divar, floats osv.

För att applicera CSS i HTML-email krävs att du ger varje tagg sin egen style. Vilket är mycket tidskrävande.

Chris Coyier har en screencast i sitt videoarkiv som förklarar där han pratar om varför det är som det är, och vad vi kan göra för att få det hela att fungera. Mycket sevärt!

Slumpa Fram En Bild Med PHP

I temat White som jag jobbar med just nu bestämde jag mig för att slumpmässigt välja det foto som visas i headern. Jag valde också att göra det via PHP istället för javascript. På så vis är det optimerat för så många användare som möjligt. Om jag istället använt javascript, eller motsvarande, är det en del internetanvändare som inte kan se bilderna.

Den här lilla ”processen” görs i ett par steg vilka är dessa:

  1. Lokalisera och precisera den mapp du valt att placera bilderna i.
  2. Ange vilka format som ”sökningen” ska inkludera. I mitt fall är det jpg-, png- och gif-bilder.
  3. Lägg alla hittade bilder i en vektor
  4. Slumpa fram en av bilderna
  5. Visa bilden med passande html-kod

Jag tänkte göra det här så enkelt som möjligt. Såhär ser min kod ut:

$path = ”wp-content/themes/white/imgs/header/”;
$images = glob($path.”*.{jpg,png,gif}”, GLOB_BRACE);
shuffle($images);

echo "<img src='".$images[0]."'>";

Det är koden i sin helhet. Enkelt, eller hur? Men för er som inte riktigt hänger med tar jag det rad för rad.

På rad 1 lägger vi hel sökvägen till mappen med bilderna i en variabel med namnet path. Ligger koden i samma mapp som bilderna: sätt path till ingenting, dvs “”. Ligger koden i mappen ovanför blir det “images/” osv.

Rad 2 är själva kärnan i det här, och där händer det en hel del. Variabeln images tilldelas resultat av anropet till funktionen glob(). I det här fallet är det en vektor. Den första parametern vi skickar till glob() är vår path tillsammans med "*.{jpg,png,gif}". Den här koden betyder: Hitta filer med ändelserna jpg, png och gif. Stjärnan (*) visar att vi inte har några “filter” på filernas namn. Parameter nummer två är en så kalllad flagga. Det ger oss möjlighet att berätta för funktionen att vi vill göra något lite annat än vad som förväntas. GLOB_BRACE berättar att vi vill bryta upp allting inom { och } och tolka det som tre olika "sökningar".

Nu har vi alltså alla bilder ifrån mappen i vår vektor images. Nu ska vi välja ut en av dem. Funktionen shuffle() gör precis vad det låter som. Precis som shuffle-funktionen i din iPod så blandas hela listan, eller vektorn. Det första elementet i vektorn är nu alltså slumpmässigt utvalt.

Då behöver vi bara visa bilden med passande html-kod. Jag har valt att skriva ut koden direkt, men det självklart lika bra att returnera koden.

echo “<img src=’”.$images[0].”’>”;

Där har du det, enkelt men effektivt: Hur man slumpar fram en bild med PHP.

Använd get_the_content() Och Behåll Formateringen

I WordPress finns det en funktion som heter the_content. Den skriver ut, inte helt oväntat, den aktuella postens innehåll. För att kunna använda själva innehållet i kod måste du därför använda funktionen get_the_content, som i sin tur inte skriver ut innehållet. Den returnerar istället innehållet. Något som är en aning krångligt med get_the_content, och som jag inte riktigt förstår poäng av, är att alla html-formatering försvinner vid returneringen.

Såhär gör du för att behålla all formatering:

  1. Öppna (eller skapa) functions.php
  2. Klistra in följande kod:

function get_the_content_with_formatting ($more_link_text = ‘(more…)’, $stripteaser = 0, $more_file = ”)
{
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters(‘the_content’, $content);
$content = str_replace(‘]]>’, ‘]]&gt;’, $content);

return $content;
}

 

Sim-sala-bim! Nu kan du hämta det formaterade innehållet i din kod via get_the_content_with_formatting()!

Hur Använder Jag More-taggen I En Custom Post Types?

Under tiden jag byggde om den här sidan för att köra WordPress stötte jag på ett problem. Ett problem som jag är helt säker på att många andra också brottats med.

Problemet uppstod när jag ville bryta av en post m h a more-taggen. I WordPress egna standardposter är det inga som helst problem, där fungerar det utmärkt. Men när jag skapat en posttyp, en custom post type, blir det knasigt. Det är precis som att WordPress inte ser more-taggen, som faktiskt ligger där.

Upplägget ser ut såhär: Mina referenser, och mina downloads, är egna posttyper. Och på respektive sida vill jag kunna bestämma vad som visas i ”flödet” av downloads och referenser. Jag visar en utdrag m h a funktionen the_excerpt() och låter sedan användaren klicka sig in i varje posts singelsida. Där visas sedan hela inlägget via the_content(). Problemet är nu att the_excerpt() plockar ut en förutbestämd längd av hela innehållet, istället för att ta allting som ligger före min more-tagg. Jag har för mig att det är 50 första orden. Visst, det går att låta WordPress plocka ut ett utdrag, men det blir inte alltid så bra som man skulle vilja ha det.
Det är precis som att WordPress inte ser den more-tagg som jag lagt in för att visa vad jag vill ha som utdrag.

Såhär löser du problemet:

  1. Öppna den fil som innehåller loopen som krånglar. I mitt fall ligger den dels i page-downloads.php och dels i page-referenser.php
  2. Hitta den del i loopen som ser ut som följande: <? the_excerpt() ?>
  3. Klistra in följande på raden precis ovanför: <? global $more; $more = 0; ?>

Tips: Som en parameter i the_excerpt() kan du välja att skicka med länktexten som läggs till efter utdraget. Jag brukar använda t ex the_excerpt(‘Läs mer’)

Sådär, då var problemet löst! Är det några som helst problem med det här – kommentera det här inlägget så ska jag göra mitt bästa för att hjälpa dig!

Enkel Kod Gör Bilden Till Favicon

För att få en liten bild på din servar att agera favicon krävs det inte mycket. Endast en kort liten kodsnutt. Den ska helt enkelt in i head-taggen, och det enda du behöver tänka på är vart du gjort av bildfilen.

Kodsnutten ser ut såhär:

<link rel="shortcut icon" href="images/favicon.ico">

Den här koden går in i mappen images och hämtar favicon.ico, och sätter den som sidans favicon. Simpelt.

Den här enkla koden kan du absolut nöja dig med, men det finns faktiskt ett sätt att ta det här ett steg längre. Webbläsaren Internet Explorer stödjer inte några än filtyper än .ico som favicons, men det gör så gott som alla andra läsare. Vad är då fördelen med att använda något annat än .ico? Låt säga att våra logga inte täcker varje pixel i bilden, då måste vi sätta en bakgrundsfärg. Och gör vi inte det själva så görs det automatiskt i konverteringen till .ico. Det brukar i dessa fall bli vitt. Om vi däremot får möjligheten att använda png-filer dyker det upp nya möjligheter! Png-formatet stödjer transparens, det vill säga genomskinlighet. Vi kan alltså välja att sätta vissa pixlar till att visa det som ligger bakom bilden, vilket gör att loggan i sig slipper en fast bakgrundsfärg.

Men hur blir det då med kodsnutten ovan? Den hämtar ju en .ico-bild. I HTML kan vi utnyttja något som heter conditional comments. Det är en liten funktion som gör att du kan avgöra om användaren kör med Internet Explorer eller inte. Om det nu skulle vara så att hen gör det så vill vi hämta .ico-bilden. Annars kör vi på vår png-bild. Koden ska då se ut såhär:


<link rel="shortcut icon" href="images/favicon.png">
<!--[if IE]>
<link rel="shortcut icon" href="images/favicon_ie.ico">
<![endif]-->

Kom Igång Med JQuery!

Att komma igång med jQuery är inte svårt över huvudtaget. Allt du behöver veta är egentligen vad du vill göra. Sen kan det även hjälpa om du kan formulera din idé, för att kunna söka upp andra som gjort samma sak tidigare. Mentaliteten kring programmering i största allmänhet är att man delar med sig av sin kod, och det gäller även i jQuery-samhället.

Enkel installation och implemention

För att du ska kunna komma igång och skriva din egen jQuery-kod behöver du inte göra särskilt mycket. Jag tänkte ta ett väldigt enkelt exempel. Vi ska markera varannat element i en lista. Något som kan vara väldigt omständigt med klasser, php-loopar och annat tjafs.

1. HTML

Vi börjar med en simpel html-uppmärkning, allt vi behöver är en lista med ett par exempelelement, vilket ser ut som följande:


<html>
<head></head>
<body>
<ul>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
</ul>
</body>
</html>

Låt säga att vi nu vill sätta en ljsugul bakgrund på vartannat li-element, enbart för användarens bekvämlighet. Ofta så markeras tabeller och “datagrids” upp för att underlätta ögats vandring mellan raderna, och det vill vi självklart göra även i det här exemplet.

I det här inlägget tänker jag inte gå in närmare på CSS och klasser i HTML, det kommer senare. Men det vi vill göra är att, genom jQuery, sätta en klass som vi döpt till odd. Det jQuery gör åt oss är då att den applicerar odd på vartannat element, hur lång listan än är.

2. Inkludera jQuery-biblioteket

För att få tillgång till hela härligheten måste vi berätta för vår webbläsare vart jQuery finns att hämta. I det här exemplet tänkte jag att vi länkar till jQuery.com’s egen version. Vilket de själva tycker är helt okej, det underlättar och förenklar för oss användare.

Allt du behöver göra är att klistra in en enkel rad. Den ska ligga i head-taggen enligt följande:

<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
</head>

Det här betyder ungefär: inkludera ett javascript-script, hämta det på den här adressen.

3. Komponera koden

Nu är allting klart, allting förutom själva jQuery-koden iallafall.

Som jag skrev tidigare så ska vi markera vartannat element, och sätta klassen odd på de valda raderna. För att koden ska veta vilket html-element som vi vill sätta klassen på så måste vi specificera det.

Det här görs genom CSS-selectors. Man skulle kunna kalla det för en sökning. Om jag t ex skriver in ”p”, som min selector så kommer alla paragrafer att väljas. Vilket i det här fallat (ovan) inte väljer någonting. Hypotetiskt så väljs alla paragraf-element i dokumentet. Skriver vi istället ”ul li” väljer vi alla li’s som ligger i ett ul-element. ”Div#post” väljer alla div-taggar med ett id satt till post. Svårare än så är det inte.

Det vi ska använda är då ”ul li”. Men hur väljer vi vartannat li? Genom att skriva till ”:odd” i slutet förstås! Det blir då alltså ”ul li:odd” (obs: det går även att använda :even).

Nu har vi alltså vår selectorsträng klar, men det saknas fortfarande ett steg. Vi måste sätta klassen odd till de element vi har valt. Det här är väldigt enkelt: vi använder funktionen addClass(). Funktionen tar en parameter, vilket är en textsträng med det namn på klassen som ska appliceras:

addClass(‘odd’);

Syntaxen

Nu har vi alltså vår “sökning” klar, och vi vet även hur man sätter en klass. Det som saknas nu är bara ett par små detaljer. Vi måste till att börja med kontrollera så att allting är färdigladdat på sidan. Alltså ”bromsa” vår kod tills det att sidan är klar och kan hantera jQuery-koden. Om vi kör vår kod innan dess kan vi inte vara 100% säkra på att listan faktiskt har laddats, och i så fall kan koden inte hitta li-elementen.

Ytterligare en detalj som är viktig är att vi måste sätta ihop ”sökningen” och funktionen addClass().
I jQuery, och ett flertal andra programmeringsspråk, skriver man funktioner följande sätt: aktuella-objektet.addClass(‘klassnamn’); Objektet ersätts i syntaxen med t ex ett valt html-element, ett objekt i någon form. I vårt fall skriver vi det såhär: $(‘ul li:odd’). Det här väljer, som ovan nämnt, ut alla udda li-element.

Sammansatt får vi alltså den väldigt enkla kodsnutten:

$(‘ul li:odd’).addClass(‘odd’);

Som jag skrev så måste vi även vänta på “nedladdningen” av sidan. För att göra det här sätter vi vår snutt i en funktion som anropas när den processen är klar. Det ser ut såhär:

$(document).ready(function(){
$(‘ul li:odd’).addClass(‘odd’);
});

Det allra sista vi nu behöver göra är att köra den här koden någonstans. Den här gången väljer vi att köra koden direkt i samma fil som html-koden. Alltså i samma html-fil som vi skrivit listan och inkluderat jQuery-koden ifrån jQuery.com.

För att utföra kod lägger man det i en script-tagg. Såhär:

<script type=”text/javascript”>
$(document).ready(function{
$(‘ul li:odd’).addClass(‘odd’);
});
</script>

Grattis! Du har nu fått till din ett enkelt jQuery-skript! Och svårare än såhär behöver det faktiskt inte vara.

Här kommer all kod tillsammans:


<html>
<head>
<script type=”text/javascript” src=”http://code.jquery.com/jquery-1.4.2.min.js”></script>
<script type=”text/javascript”>
$(document).ready(function(){
$(‘ul li:odd’).addClass(‘odd’);
});
</script>
</head>
<body>
<ul>
<li>Exempel</li>
<li>Exempel</li>

<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
<li>Exempel</li>
</ul>
</body>
</html>

Otroligt Snygg Skapelse I jQuery

CSS-tricks.com är en hemsida som jag faktiskt inte känt till allt för länge. Men av vad jag har sett och läst så är den riktigt pedagogisk och full av tips.

Förutom ett forum, och riktigt bra artiklar, lägger de ner en hel del tid och energi på sina videoguider. Även kallade screencasts. En screencast är en video som låter dig följa exakt vad “läraren” gör i programmet. De visar helt enkelt “lärarens” skärm och vart han trycker osv.

Jag hittade en screencast som jag verkligen fastnade för, och som jag bara måste dela med mig av. Det är en genomgång av en amerikansk artists hemsida, som drivs av jQuery. Han går igenom hur han byggt sidan, hur kravbilden såg ut ifrån kunden och hur han gick tillväga för att lösa de problem som uppstod. Förutom att sidan i sig är grym så måste jag säga att även han som gjort guiden är väldigt “lätt” att lyssna på. Och det känns som att det mesta han pratar om är logiskt, och ganska simpelt.

Här hittar ni filmen!