Razrez izgleda bloga moramo povezati z Wordpress CMS sistemom, ki nam omogoča urejanje vsebine preko spletnega brskalnika. V 3. delu vam bom razložil osnovno strukturo Wordpress sistema, potrebne funkcije in končno uporabo.
Potrebno je osnovno poznavanje programskega jezika PHP, priporočam branje:
* PHP @ Wikipedia
* PHP Tečaj @ Stamcar.com
* PHP Tutorial
* PHP Freaks
Kot sem že omenil je Wordpress CMS (Content Management System) – platforma za upravljanje vsebine v brskalniku, v osnovi namenjena pisanju blogov – dodajanju vsebine v bazo ter njen izpis. Wordpress sicer ne uporablja naprednega template sistema (PHP koda ločena od HTML kode), a ustvarjalcu ponuja kar lepo število funkcij za izpis vsebine.
Spletno stran urejamo v administraciji, izpis vsebine pa z t.i. preoblekami (srajčkami, izgledi, itd.). V osnovi za izpis potrebujemo par PHP datotek, seveda pa je vse odvisno od naših želja in potreb. V članku vam bom prikazal izdelavo osnovnega izpisa z osnovnimi funkcijami.
Za začetek namestite različico Wordpress CMS sistema. Namestitveni postopek je opisal Jonas v zapisu “Namestitev žnevnikarskega programja“, postopek pa si lahko preberete tudi na strani Getting Started with WordPress.
Po uspešni namestitvi lahko začnemo s postopno izdelavo naše preobleke. V /wp-content/themes/ ustvarimo novo mapo z poljubnim naslovom – v našem primeru wp_srajcka (/wp-content/themes/wp_srajcka).
Preobleka je lahko sestavljena iz neštetega števila PHP datotek, sam pa sem stvar poenostavil, ter kodo razdelil na dve:
* index.php – prva stran, statične strani, stranski meni, glava & noga, rezultati iskanja
* comments.php – izpis komentarjev in obrazec za komentiranje
A gremo lepo po vrsti – prva stran je identična strani z zapisom, rezultati iskanja in statični strani, edina razlika je le v številu prikazanih zapisov. Stranski meni se prikazuje povsod enako, zato je ločevanje v posebno datoteko nesmiselno, prav tako ločevanje glave in noge. Izpis komentarjev se pojavlja le na specifičnih straneh, vsebuje nekaj dodatnih parametrov, zato je ločevanje od celotne strukture, ki jo ustvarja sam avtor bloga, smiselna.
Wordpress nam za izpis ponuja nekaj funkcij, katere lahko razdelimo na manjše delčke. Osnovne so:
* bloginfo() – osnovni podatki, ki jih potrebujemo za normalno delovanje bloga, uporaba: bloginfo(‘ime_elementa’). Elementi:
name – ime bloga (določimo na strani /wp-admin/options-general.php),
description – opis bloga
url – spletni naslov bloga
rdf_url – spletni naslov RDF/RSS 1.0 feeda
rss_url – spletni naslov RSS 0.92 feeda
rss2_url – spletni naslov RSS 2.0 feeda
atom_url – spletni naslov Atom feeda
comments_rss2_url – spletni naslov RSS 2.0 feeda z komentarji
pingback_url – spletni naslov za Pingback (XML-RPC datoteka)
admin_email – elektronski naslov administratorja spletnega mesta
charset – nabor znakov
version – različica Wordpress CMS sistema
html_type – “Content-type”, vrsta vsebine
wpurl – spletni naslov za Wordpress namestitev
template_url – spletni naslov aktualne (trenutno izbrane) preobleke
template_directory – mapa, v kateri se nahaja aktualna preobleka
stylesheet_url – spletni naslov do CSS datoteke style.css aktualne preobleke (npr. http://naslov/wp-content/themes/+ ime preobleke +/style.css)
stylesheet_directory – mapa v kateri se nahaja glavna CSS datoteka aktualne preobleke
* the_post() – funkcijo uporabljamo v zanki, priporočam branje The Loop. V našem primeru nam omogoča uporabo “podfunkcij”:
the_title() – naslov zapisa bloga
the_content() – vsebina bloga
the_time() – datum in čas nastanka zapisa (uporaba date() formata)
the_category() – izpis povezav do kategorij povezanih z zapisom
comments_popup_link() – izpis števila komentarjev
* have_posts() – preverimo, če nam sistem za izpis vrne zapise.
* comments_template() – v stran vstavimo datoteko /comments.php
* posts_nav_link() – navigacija po straneh zapisov (naprej, nazaj)
* list_cats() – v stranskem meniju izpišemo kategorije, ki jih uporabljamo na blogu
* wp_get_archives() – izpis arhiva zapisov, določimo lahko tip izpisa, število izpisov in format. Uporaba: wp_get_archives(‘podatek=možnost’), primer: wp_get_archives(‘type=yearly’).
type – tip izpisa. Uporaba:
yearly – združitev zapisov glede na leto nastanka
monthly – združitev zapisov glede na mesec nastanka (privzeto)
daily – združitev zapisov glede na dan nastanka
weekly – združitev zapisov glede na teden nastanka
postbypost – brez združitve zapisov
limit – število izpisov (privzeto – brez omejitve)
format – način izpisa arhiva
html – navaden HTML list <li></li> (privzeto)
option – v dropdown meniju
link – znotraj <link> tagov
custom – znotraj tagov, ki jih določimo po želji
Po vrsti, od <html> do </html>, bom razložil vrstice, kamor vstavimo posamezno PHP funkcijo ter kako in zakaj jo uporabljamo. Povezavo do celotne index.php in comments.php lahko najdete na dnu zapisa.
@ index.php
<title><?php bloginfo('sitename'); ?></title>
Izpišemo ime bloga / spletne strani, ki se bom prikazalo v naslovni vrstici uporabnikovega brskalnika.
<meta http-equiv="Content-Type" content="text/html; charset=<?php bloginfo('charset'); ?>">
Nabor znakov, ki jih uporabljamo pri vpisu v bazo, v bazi in pri izpisu. Izberemo ga na strani /wp-admin/options-reading.php.
<style type="text/css" media="screen,projection">
@import "<?php bloginfo('stylesheet_url'); ?>";
</style>
V stran vstavimo CSS datoteko, ki se nahaja v mapi naše preobleke, imenuje se style.css.
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php wp_get_archives('type=monthly&format=link'); ?>
Vstavimo povezave do raznoraznih RSS feedov, ki obiskovalcem omogočajo naročanje na vsebino preko RSS odjemalcev, prijavo na agregate, itd. Z funkcijo wp_get_archives() pa izpišemo še celoten arhiv, ki “botom” raznoraznih spletni iskalnikov (Google, Najdi.si, ..) omogoča lažje in boljše indeksiranje vsebine.
<a href="<?php bloginfo('siteurl'); ?>">
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/img_toplogo.jpg" /></a>
Na logotip v glavi položimo povezavo, ki uporabnikom omogoča povratek na prvo stran spletne strani.
<?php if(have_posts()) : while (have_posts()) : the_post(); ?>
ÄŒe v bazi obstajajo izbrani zapisi, jih izpišemo – kar preverjamo z if(have_posts()) : (odprt pogoj moramo zapreti z endif;). Z while(have_posts()) : odpremo zanko (zanko moramo zapreti z endwhile;), v kateri izpišemo zapise, ki jih, glede na določene pogoje, sistem vrne. Funkcija the_post(); pa le pripravi zapis znotraj while() zanke za izpis.
<div class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></div>
Znotraj while() zanke izpišemo povezavo in naslov zapisa.
<div class="entry"> <?php the_content(); ?></div>
Znotraj while() zanke izpišemo vsebino zapisa.
<div class="meta">
<?php the_time('d. F Y'); ?> |
Kategorije: <?php the_category(','); ?> |
<?php comments_popup_link('Komentarji (0)', $comments_img_link . 'Komentar (1)', $comments_img_link . 'Komentarji (%)'); ?>
<?php trackback_rdf(); ?>
<?php comments_template(); ?>
</div>
Znotraj while() zanke izpišemo podrobnosti o izbranemu zapisu. S the_time() funkcijo in formatom PHP funkcije date() izpišemo datum in čas nastanka zapisa. Funkcija the_category() nam omogoča izpis kategorij, povezanih z zapisom. Med posamezne povezave lahko po želji vstavimo znake – v našem primeru vejico (npr. the_category(‘,’)).
Za izpis povezave in števila komentarjev po Wordpress logiki stvar malenkost zakompliciramo. Funkcijo comments_popup_link() uporabljamo po načinu (‘nič komentarjev’,'en komentar’,'več komentarjev’). Priporočam branje obširne razlage omenjene funkcije.
<?php endwhile; endif; ?>
Zaključimo zanko, ki smo jo malce višje začeli z while(), ter zapremo pogoj if(), s katerim smo preverili, če nam sistem vrne zapise.
<?php posts_nav_link(' €” ', __('« Prejsnja stran'), __('Naslednja stran »')); ?>
ÄŒe nam sistem vrne večje število zapisov, kot smo jih izbrali na strani /wp-admin/options-reading.php, nam zapise razdeli na posamezne strani (liste). Za navigacijo po teh uporabimo funkcijo posts_nav_link(). Priporočam branje obširne razlage funkcije. ÄŒe želimo, lahko izpis prilagodimo želji z nastavitvami v zaporedju (‘tekst med izbirama’,'ime povezave za prejšnjo stran’,'ime povezave za naslednjo stran’).
<div class="tab">
<span>Kategorije</span>
<?php list_cats(0, '', 'name', 'asc', '', 1, 0, 1, 1, 1, 1, 0,'','','','','') ?>
</div>
V stranskem meniju lahko izpišemo seznam kategorij, ki jih uporabljamo na blogu ter število zapisov vezanih na določeno kategorijo. Priporočam branje obširne razlage funkcije. V primeru sem izbral izpis imena kategorije ter sortiranje le-teh po abecednem redu.
<div class="tab">
<span>Arhiv zapisov</span>
<?php wp_get_archives('type=monthly'); ?>
</div>
Z funkcijo wp_get_archive() na stran izpišemo arhiv zapisov na blogu. Razlago nastavitev si lahko preberete višje v zapisu.
@ comments.php
<?php if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
if (!empty($post->post_password)) {
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { ?>
<p class="nocomments">
<?php _e("This post is password protected. Enter the password to view comments."); ?>
<p>
<?php return; } } ?>
Sistem Wordpress preveri na kateri strani se nahajamo (komentarjev in obrazca ne prikaže na prvi strani). Ali je pred ogledom zapisa potrebno vpisati geslo preverimo s funkcijo $post->post_password -, če ima obiskovalec na svojem računalniku piškot (cookie) z imenom wp-postpass_UniqueID, mu zapis prikaže, v nasprotnem primeru pa prikaže obrazec za vnos gesla.
Zgornjih vrstic ni potrebno urejati, priporočljivo pa je, da jih vstavite v comments.php datoteko.
<?php if($comments) : ?>
ÄŒe nam sistem vrne komentarje, jih izpišemo (pogoj je potrebno zaključiti z endif;).
<?php foreach($comments as $comment) : ?>
<div id="comment-<?php comment_ID(); ?>">
Z foreach() odpremo zanko, s katero izpišemo komentarje (zanko je potrebno zaključiti z endforeach;). Dodaten DIV z UniqueID komentarja ustvarimo za lažje oziroma neposredno povezovanje.
<strong><?php comment_author_link(); ?></strong>
@ <strong><?php comment_date('j.m.y'); ?></strong>
Funkcija comment_author_link() izpiše povezavo oziroma le uporabniško ime, comment_date() pa datum nastanka komentarja (po date() formatu).
<?php endforeach; endif;
if($post->comment_status == 'open') : ?>
Zapremo zanko in pogoj, ter preverimo, če je za zapis omogočeno (odprto) komentiranje.
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p> Morate biti <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">
prijavljeni </a> za komentiranje. </p>
<?php else : ?>
S funkcija get_option() preverimo nastavitve v bazi – če je za komentiranje potrebna predhodna registracija/prijava v sistem. ÄŒe pa je uporabnik že prijavljen (obstaja $user_id), mu opozorila ne prikaže.
<?php if ( $user_ID ) : ?>
<p> Prijavljen kot <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php">
<?php echo $user_identity; ?></a>.
<a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('IzpiÃ…¡i se') ?>">
Odjavi se » </a> </p>
<?php else : ?>
ÄŒe je obiskovalec prijavljen (obstaja $user_id) mu ni potrebno vpisovati imena, elektronskega naslova in spletne strani. Omogočimo mu tudi odjavo iz sistema.
<?php do_action('comment_form', $post->ID); ?>
Omogoča prikaz predogleda ter oddajo komentarja.
–
Datoteke:
* index.php
* comments.php
–
Vsebina mape /wp-content/themes/wp_srajcka:
./images
./images/* (slike)
./index.php
./comments.php
./style.css
–
Na strani /wp-admin/themes.php le še poiščemo preobleko z imenom mape (npr. wp_srajcka) ter jo s klikom na naslov izberemo.
ÄŒe želimo olepšati izbiro preobleke, lahko ustvarimo še “screenshot” in podatke o preobleki (ime, avtor, povezave, ..).
* Screenshot (slika preobleke)
Ustvarite sliko preobleke, sliko pomanjšate na maksimalno 250px širine in 200px višine ter jo z imenom screenshot.png shranite v mapo preobleke (poleg datoteke index.php, comments.php, ..).
* Podatki o preobleki
Wordpress črpa podatke o posamezni preobleki iz CSS datoteke style.css, ki se nahaja v mapi preobleke. Na vrh omenjene datoteke dodamo:
/*
Theme Name: Ime preobleke
Theme URI: http://spletna_stran_preobleke
Description: Opis preobleke
Version: Različica preobleke
Author: Avtor preobleke
Author URI: http://avtorjeva_spletna_stran
*/
–
Preobleko “wp_srajcka” si lahko na računalnik prenesete s spodnjega naslova.
http://www.delavec.net/clanek-srajcka/wp_srajcka.tar
Primer delovanja:
http://www.delavec.net/clanek-srajcka/wordpress/
–
Naredimo Wordpress srajčko:
* 1. del – Oblikovanje
* 2. del – Razrez (HTML & CSS)
* 3. del – Programiranje (PHP)
Kakršnakoli vprašanja glede članka napišite kot komentar k delu članka, na katerega se vprašanje nanaša.