WordPress Nybörjare till Master, Del 2

I hela denna sexdelade nybörjare till mästarserien använder vi avancerade funktioner i WordPress för att skapa vår egen portfölj och blogg, komplett med en options sida, flera stilar och stöd för de nya WordPress 2.7-funktionerna. Idag skapar vi vår hemsida layout.


Finns även i serien:

  1. WordPress: Nybörjare till Master, Del 1
  2. WordPress: Nybörjare till Master, Del 2
  3. WordPress: Nybörjare till Master, Del 3
  4. WordPress: Nybörjare till Master, Del 4
  5. WordPress: Nybörjare till Master, Del 5
  6. WordPress: Nybörjare till Master, Del 6

Hoppa till ett avsnitt

  • Komma igång
  •   - Översikt
  • header.php
  •   -
  •   - Färgscheman & Stylesheets
  •   - div # huvud
  •   - div # nav
  • Stilar i rubriken
  •   - Allmänna stilar
  •   - Header Styling
  •   - Navigation Styling
  •   - Något färg
  • Portföljinlägg
  • Hemsidan
  •   - Skönhetsbehandling
  • Widgetised Area
  • sidfot
  • Sammanfattning

Komma igång

I den här delen kommer vi att skapa framsidan för vår portfölj, använda vår options sida och hantera anpassade fält i inlägg. Innan du börjar, skapa följande filer och mappar inuti / Wp-innehåll / teman /innovation/ mapp du skapade tidigare:

  • / Inc /
    • / Cache /
  • header.php
  • footer.php
  • sidebar.php

Spara också detta TimThumb PHP Image Resizer-skript som thumb.php inuti / Inc / mapp. TimThumb är ett "smart" PHP image resizer script av Darren Hoyt.

Översikt

Nedan följer en översikt över hur vår startsida kommer att se ut:


Vår header.php filen kommer att innehålla #huvud och #nav sektioner - inklusive öppningsetiketter för #slå in, #innehåll och .contentwrap.

footer.php kommer då att innehålla #footer avsnittet och stängningskoderna för #innehåll och det sista avsnittet ovanför (detta kan antingen vara .contentwrap, .extraswrap eller #sidebar beroende på sidan).

De .contentwrap Området kommer att innehålla de två senaste inläggen från vår Portfolio kategori, och .extraswrap kommer att vara ett widget-färdigt område där vi kan lägga widgets från instrumentpanelen.


header.php

På toppen av header.php fil, inkludera följande kod.

  >   <?php wp_title('«', true, 'right'); ?> <?php bloginfo('name'); ?>

Som du kan se är det huvudsakligen koden som du skulle inkludera längst upp i något xHTML-strängt dokument. Vi har bara ersatt vissa avsnitt med en WordPress-funktion som kommer att mata ut lämplig kod beroende på vilket språk WordPress körs

I slutet av koden är vår titel tagg, som igen använder WordPress funktioner för att få namnet på den aktuella sidan och namnet på webbplatsen.

Färgscheman & Stylesheets

Nästa, vi inkluderar vår style.css fil med WordPress bloginfo (); fungera. Det är viktigt att använda den här funktionen för att inkludera huvudformatarket, istället för att direkt ange filbanan.

 

Då är koden för att ta tag i det korrekta färgscheman stilarket valt från alternativen som vi skapade i föregående del:

    

I tabellen nedan förklaras vad ovanstående kod gör:


Vi kontrollerar om vårt alternativ för färgschema ($ ts_colourscheme) existerar från alternativsidan och att den har ställts in korrekt (dvs. inte kvar som "Välj ett färgschema:"). Om alternativet inte är korrekt inställt eller inte existerar det som standard att använda deepblue.css färgschema; Annars använder vi stilarket som det valdes från alternativsidan.

Fortsätt med, vi inkluderar våra RSS- och Atom-flöden, och öppnar kroppstaggen:

      

#huvud


Nästa kod är mycket mer straight-foward än föregående avsnitt. Som framgår av bilden ovan använder vi fler WordPress-funktioner för att hämta information från WordPress-databasen:

 

De bloginfo ( 'name'); och bloginfo ( 'beskrivning'); funktioner hämtar relevanta inställningar från sidan "Allmänna inställningar" i WordPress instrumentpanel:


#nav


Att hämta en lista med sidor från databasen är också mycket lätt. Vi använder wp_list_pages (); fungera. Observera att vi också inkluderar a title_li = arguement. Det här är att stoppa funktionen från att skapa ett extra listobjekt som heter "Navigation:" innan du listar sidorna.

 

Vi har också öppnat relevanta div och wrappers för nästa avsnitt.


Stilar i rubriken

Om du går till din WordPress-installation nu kommer det att se ut så här:


Kom ihåg att vi kommer att inkludera alla färgstilar inuti deepblue.css så att vi lätt kan skapa olika färgscheman senare. Allt annat kommer att gå in style.css.

Allmänna stilar

Det första jag alltid tar med i mitt stilark är en återställning av webbläsaren, följt av grundläggande styling för stycken, listor, rubriker och länkar.

 * padding: 0; margin: 0; body font-family: Arial, Helvetica, sans-serif;  p font-size: 0.9em; linjehöjd: 1.5em; marginal-botten: 10px;  ul, ol marginal: 0 0 10px 10px;  li font-size: 0.9em; linjehöjd: 1.5em; lista-stil-position: inuti; marginal-botten: 3px;  img border: none;  h1, h2, h3, h4, h5, h6 font-vikt: normal;  h3, h4 marginal: 15px 0 2px 0;  h4, h5, h6 font-weight: bold;  a: länk, a: besökte text-decoration: none;  a: svävar, a: aktiv, a: fokus text-decoration: underline; kontur: ingen; 

Detta borde se väldigt rakt fram för alla med grundläggande förståelse för HTML och CSS. Vi har ställt in marginaler och vadderingar för alla (*) -elementen till 0 för att överdriva standardstilarna varje webbläsare gäller för en sida. Vi inkluderar sedan nya marginaler, teckensnittstorlekar och rader för de viktigaste elementen för att öka läsbarheten bland dem.

Header Styling

Därefter skapar vi lite av en layout:

#wrap margin: 0 auto; bredd: 980px;  #head margin: 25px 0; överflöde: gömd;  #head h1 float: left; marginal-vänster: 20px;  #head h3 font-family: Georgia, "Times New Roman", Times, serif; typsnittstorlek: 0,8em; typsnittstyp: kursiv; float: right; linjehöjd: 1,7em; textjustera: höger; marginal: 0 20px 0 0; bredd: 500px; 

De #slå in elementet är behållaren som rymmer allt. Vi använder en bredd på 980px (det här är ungefär lika högt som vi kan gå och ändå hålla sig till 1024x768 resolutioner). Och vi har använt marginal: 0 auto; att centrera den i webbläsaren.

Titeln och tagline (h1 och h3 respektive) floats därefter till vardera sidan av behållaren.

#huvud har en egendom av överflöde: gömd; så att den håller de flytande elementen korrekt. Vanligtvis kommer en div inte att vikla runt några flytande barn (som vi har här). Se bilden nedan som ett exempel (den gula representerar den marginal som tilldelats #huvud):


Navigation Styling

 #nav gränsen till vänstra radien: 15px; gränsen till höger-radie: 15px; -moz-border-radius-topleft: 15px; -moz-border-radius-topright: 15px; -webkit-gränsen-övre-vänstra radien: 15px; -webkit-gräns-topp-högra radie: 15px; gränsbotten: ingen; klara: båda; vaddering: 0 20px; bredd: 939px; 

Ta en titt på förhandsgranskningsbilderna längst upp i handledningen, och du märker att vi använder rundade hörn längst upp i navigeringsdelen. I stället för att uppnå denna effekt genom ett gäng bilder och extra HTML-taggar, kommer vi att använda den nya CSS3 border-radius egenskap för att ge en 15px radie till båda övre hörnen.

Nuvarande webbläsare stöder dock inte denna egenskap, men Mozilla och Webkit-baserade webbläsare har sina egna -moz-border-radius och -webkit-border-radius egenskaper som vi också kan använda för att få de rundade hörnen att fungera i Firefox 3, Safari och Chrome. Internet Explorer och Opera använder helt enkelt en kvadraterad gräns tills de stöder border-radius.

Obs! Att använda dessa leverantörsspecifika egenskaper i din CSS stoppar att ditt stilark inte valideras. Men eftersom det bara kommer att vara dessa som stoppar valideringen - vem bryr sig?

Fortsätt på, vi stämmer listobjekten i navigeringen för att visa inline (horisontellt):

 #nav ul marginal: 0;  #nav ul li display: inline; typsnittstorlek: 1em; linjehöjd: 1,3em; marginal-höger: 25px;  #nav ul li a: länk, #nav ul li a: besökte display: -moz-inline-stack; display: inline-block; font-weight: bold; text-dekoration: ingen; vaddering: 20px 10px;  #nav ul li a: sväva, #nav ul li a: aktiv, #nav ul li a: fokus disposition: none; 

Observera att vi använder display: -moz-inline-stack; på länkarna. Detta är rent för Firefox 2 och under, vilket (av någon anledning) inte stöder display: inline-block; - även IE6 stöder det!
Vi ger mycket vaddering till länkarna för att öka det klickbara området (i motsats till vaddering av li istället).

Kolla nu på sidan i din webbläsare och det ska se ut så här. Bättre, men behöver nu lite färg!


Något färg

För det första, spara följande bild i / Stilar / deepblue / mapp som bg.jpg.


Och den här bilden i samma mapp som trans.png (det är faktiskt en mörk 1px halvtransparent bild).


Nu öppen /styles/deepblue.css, och skriv:

 / * Innovationsstandardstil - deepblue.css * / body background: url ("deepblue / bg.jpg") no-repeat # 101010 toppcentret fixerat; färg: # 333;  a: länk, en: besökte färg: # 5c6e80;  #head h1 färg: #eee;  #head h3 color: #ddd;  #nav bakgrund: url ("deepblue / trans.png") upprepa; gräns: 1px fast # 111;  #nav ul li a: länk, #nav ul li a: besökte färg: #ddd;  #nav ul li.current_page_item a: länk, #nav ul li.current_page_item a: besökte background: url ("deepblue / trans.png") upprepning; färg: #eee;  #nav ul li a: sväva, #nav ul li a: aktiv, #nav ul li a: fokus färg: #eee; 

Vi har satt den stora bakgrundsbilden till kroppen (och fixat den så att den inte rör sig när du rullar), den transparenta bilden används som bakgrund för navigeringen, och vi ställer också in vissa teckensnittfärger.
Förhandsgranska det, och du har nu något liknande:



Portföljinlägg

Innan vi skapar toppen av vår hemsida där våra två senaste Portfolio-artiklar går, behöver vi några inlägg att testa med. Temat kommer att använda några "Anpassade fält" för att visa extra information för portföljobjekten:

  • datum (det datum då arbetet slutfördes)
  • klient (vem arbetet var för)
  • länk (till en levande version av ditt arbete)
  • förhandsvisning (URL på en 930px breddsbild av ditt jobb)
  • förhandsvisning full (större version av arbetet, kommer att visas i en lightbox)

Skapa ett nytt blogginlägg, med titeln som namnet på projektet (som i bilden ovan) och skriv in något innehåll om arbetet. Sätt in inlägget i din "Portfölj" -kategori.

Innan du sparar inlägget, bläddra ner till avsnittet "Anpassade fält":


Ange här varje av de anpassade fälten som anges ovan. Bara förhandsvisning fältet är obligatoriskt. Du kan använda följande bilder för din förhandsvisning fält om du inte har någon egen (högerklicka och spara):


När du fyllt i fälten kan du publicera posten. Upprepa denna process tills du har minst två inlägg (helst mer).



Hemsidan

Nu har vi alla förutsättningar, vi kan slutligen koda huvuddelen av hemsidan. I page-home.php, skriv följande:

 

Senaste projekt

query_posts (); är en WordPress-funktion för att få specifika inlägg från databasen. Som du kan se i argumenten för funktionen (delarna i parenteserna) berättar vi att WordPress bara får 2 inlägg från kategorin Portfölj ($ ts_portfolio_cat får informationen från alternativsidan vi skapade).

Med medan();, Vi har startat "WordPress Loop". Här kan vi få berätta för WordPress vilken del från varje post vi behöver.

 $ Räknare ++; $ preview = get_post_meta ($ post-> ID, 'preview', true); $ date = get_post_meta ($ post-> ID, 'date', true); ?>

På första raden har vi lagt till en till disken (vi kommer att använda det här inom kort). $ Räknare ++; är kortfattad för skrivning $ counter = $ counter + 1;

Vi använder sedan get_post_meta (); funktioner för att få våra "förhandsgranska" och "datum" anpassade fält från inlägget - som placeras i $ förhandsvisning och $ datum variablerna.

 ">

Ovan har vi skapat en div med en arbete klass för det portföljobjekt som ska hållas i. Men observera att vi också kontrollerar att om vår $ räknare är lika med 2 (vilket betyder att det här är det andra portföljelementet), lägger vi till en annan klass till den div som heter sista. Denna klass kommer att vara till nytta när vi utformar det här avsnittet.

Därefter utför vi förhandsgranskningsbilden:

 

Om en förhandsgranskningsbild finns finns vi ...

 "> <?php the_title(); ?>  

De the_permalink (); funktionen används för att utmata länken till det aktuella inlägget.

Sedan utmatar vi förhandsgranskningsbilden. Men Vi kör det också genom TimThumb resizer för att ändra storlek på bilden till 450px i bredd och 210px i höjd (från den 930px bilden det faktiskt är). Notera hur vi använder bloginfo ( 'template_directory'); för att säkerställa att WordPress checkar in i vår temmapp (det är en likvärdig av TEMPLATEPATH vi använde i föregående del i serien).

Vi behöver nu bara mata ut texten som ligger under bilden (titeln och datumet):

 

"> ($ Datum)";?>

Detta är relativt rakt framåt. Vi använder the_permalink (); igen för att få länken till det aktuella inlägget. titeln(); används för att få den aktuella inläggets titel.

Vi kontrollerar då om ett "datum" anpassat fält har angetts (i $ datum variabel) för detta inlägg. Om så är fallet matar vi ut det.

 

Slutligen stänger vi nuvarande arbete div, stäng WordPress Loop med EndWhile; och stäng contentwrap div som skapades i rubriken.

Skönhetsbehandling

Ta en titt på hemsidan i din webbläsare för att se detta underbara mästerverk:


Ok, kanske inte men inget lite CSS kan inte fixa upp. Lägg till följande i style.css:

 #content -moz-border-radius-bottomleft: 5px; -moz-gräns-radie-bottomright: 5px; -webkit-border-bottom-left-radius: 5px; -webkit-gräns-botten-högra radie: 5px; gränsen längst ner till vänster: 5px; gränsbotten-högra radie: 5px; flyta till vänster; vaddering: 19px 19px 30px 0; marginal-botten: 5px; överflöde: gömd; bredd: 960px;  .contentwrap padding-left: 19px; överflöde: gömd;  #innehåll h2 font-weight: bold; brevavstånd: -1px; marginal-botten: 10px; 

#innehåll är omslaget att hålla hela huvudinnehållet. Vi har lagt avrundade gränser till botten av det, med samma metod som vi använde i navigeringen.

Inuti deepblue.css lägg till följande för att lägga till en ljus bakgrundsfärg till #innehåll, samt definiera gränsvärgen:

 #content bakgrundsfärg: # f9f9f3; gräns: 1px fast # 111; border-top: none; 

Visst måste föremålen visas inline (sida vid sida). Vi gör det genom att helt enkelt ställa in flyta till vänster; till båda tillsammans med några marginaler inuti style.css:


 .arbete float: left; marginal: 0 20px 40px 0; bredd: 460px;  .work a outline: none;  .work p font-size: 0.9em; font-weight: bold; marginal: 8px 0 10px 0;  .worksingle p font-weight: normal;  .work span font-size: 0.8em; typsnitt: normal; 

Förhandsgranska det, och du kommer märka att objekten fortfarande visas under varandra. En snabb kontroll med Firebug avslöjar att det är nere till det andra objektet som inte har tillräckligt med utrymme för rätt marginal.
Det är här den räknaren lägger till class = "sista" till det andra objektet kommer in:

 .sista margin-right: 0! important; 

Vi är inte helt färdiga än. Ta en närmare titt på vår slutprodukts bild, och du kommer märka att vi också måste ställa in en gräns runt portföljbilden, vilket ändrar färg på svävaren.
Lägg till följande färgstilar till deepblue.css:

 .arbeta a: länk img, .work a: besökte img border: 5px solid # e3e8ed;  .work a: sväva img, .work a: aktiv img, .work a: fokus img border: 5px solid # 5c6e80;  .work a: länk, .work a: besökte färg: # 333; 


Widgetised Area

De .extraswrap område på hemsidan är widget-ready (3 widgets max) - vilket innebär att vi kan lägga till och hantera dem direkt från WordPress Dashboard - precis som du skulle för en breddbar sidovägg:


För det första måste vi berätta för WordPress att skapa ett nytt widgetområde med hjälp av register_sidebar () fungera. Följande kod går i slutet av din functions.php fil:

 om (function_exists ('register_sidebar')) register_sidebar (array ('name' => 'Hemsida Bottom', 'before_widget' => '
',' after_widget '=>'
',' before_title '=>'

',' after_title '=>'

',));

Inuti register_sidebar () Vi skickar en matris som innehåller lite information för vårt widgetområde. De namn används för att identifiera det när vi har flera widget-områden (eller sidor). before_widget och after_widget är koden som används för att pakka in varje enskild widget. Som standard skulle detta vara ett listobjekt; vi använder en div istället.
before_title och after_title är vad som används för att pakka in den enskilda widgetens titel.

Nu, för att inkludera den här widgeten på vår hemsida, lägg till följande på till slutet av page-home.php:

 
 

Vi öppnar först vår förpackningsdel och använder sedan dynamic_sidebar (); funktion - genom vilken vi skickar namnet på widgetområdet som vi tidigare använde när vi registrerade området. Slutligen inkluderar vi vår footer.php fil med hjälp av get_footer () funktion (på samma sätt som vi inkluderade rubriken).

Gå vidare och lägg till tre test widgets till området via Utseende -> Widgets -> 'Hemsida Bottom'.


Och förhandsgranska det:


För att visa dem alla inline, använd följande kod i style.css:

 .extraswrap margin-top: 10px; överflöde: gömd;  .extras float: left; marginal: 0 0 0 20px; bredd: 300px; 

Vi ska också utforma ett Flickr & Twitter-plugin. För det första installera FlickrRSS och Twitter för WordPress plugins.

Från Inställningar -> FlickrRSS, ange ditt Flickr ID-nummer med hjälp av instruktionerna (eller använd min: 31912870 @ N03), sätt det att använda 9 kvadratiska bilder; och för avsnittet HTML Wrapper, använd:
Före bild:


Efter bild:

Detta gör att vi enkelt kan ställa och placera bilderna.

Gå vidare och byt två widgets på hemsidan till Flickr och Twitter (kom ihåg att ange dina Twitter-detaljer under "Redigera" -delen på widgeten).



Skriv in följande styling i style.css:

 / * stil FlickrRSS widget * / .flickr display: inline;  .flickr a: länk img, .flickr a: besökte img margin: 0 10px 10px 9px;  / * stil Twitter widget * / ul.twitter margin: 0;  ul.twitter li.twitter-item -moz-border-radius: 10px; -webkit-gräns-radie: 10px; gränsstråle: 10px; listestil: none; marginalbotten: 20px; vaddering: 8px 10px;  ul.twitter li.twitter-item span abbr border-bottom: none; display: block; typsnittstorlek: 0,8em; typsnittstyp: kursiv; marginal-topp: 3px; 

Flickr-styling visar varje bild inline och anger lämpliga marginaler för att passa tre bilder per rad. I Twitter-stilerna har vi lagt till lite marginal och vadderar för att skilja varje tweet, och vi har också använt border-radius igen.

Lägg även till följande till deepblue.css:

 .flickr a: länk img, .flickr a: besökte img border: 3px solid # e3e8ed;  .flickr a: sväva img, .flickr a: aktiv img, .flick a: fokus img border: 3px solid # 5c6e80;  ul.twitter li.twitter-item bakgrundsfärg: # f6f5ed; gräns: 1px solid # eae9de; 

Varje Flickr-bild har nu en gräns som vi kan sväva över, som vi brukar använda för portföljbilderna.



sidfot

Inuti footer.php sätt in följande kod. Vi stänger lämpliga taggar och inkluderar ett upphovsrättsmeddelande. Ta gärna bort namnet på mig själv & NETTUTS från det, även om det skulle uppskattas om du gav en länk tillbaka till oss på något sätt. Vi inkluderar även Google Analytics-koden från alternativsidan.

 

Copyright © . Design av Dan Harper för NETTUTS. Drivs av WordPress.

Lägg till följande till style.css:

 p.footer clear: both; typsnittstorlek: 0,7em; typsnittstyp: kursiv; vaddering: 5px 20px; 

Och till deepblue.css:

 p.footer färg: #ccc;  p.footer a: länk, p.footer a: besökte färg: #ccc; border-bottom: 1px stupad;  p.footer a: svävar gränsbotten: 1px solid; text-dekoration: ingen; 

Sammanfattning

Det avslutar dag 2 i WordPress Week, och vi blev ganska mycket färdiga! I morgon flyttar vi till sidlayouten "Blog" och lär oss hur vi stilar "enskilda inlägg" olika beroende på vilken kategori de är i.

Del 3 - Styling Bloggen

Koda