Δημιουργία Wordpress Plugin για το βιογραφικό των συντακτών.

11 Μαΐ 2010 | Wordpress

Δεν επιτρέπονται τα σχόλια.


Wordpress

Πολλά από τα σημερινά ιστολόγια συγγράφονται από πολλά άτομα. Σε αυτό το άρθρο θα δημιουργήσουμε ένα απλό Plugin για το WordPress που θα μας επιτρέπει να προσθέτουμε το βιογραφικό του συγγραφέα στο τέλος κάθε άρθρου.

1 – Ετοιμάστε ένα βιογραφικό

Αν δεν έχετε ακόμα κάποιο βιογραφικό σημείωμα στο λογαριασμό σας τότε δημιουργήστε ένα πηγαίνοντας στο “Μέλη” και στη συνέχεια επιλέγοντας το όνομα σας από τον πίνακα ελέγχου του WordPress.

Βιογραφικό

2 – Δημιουργία των απαραίτητων αρχείων

Θα χρειαστεί να δημιουργήσουμε ένα αρχείο που θα περιέχει όλη τη λειτουργικότητα του Plugin. Μέσα στο φάκελο wp-content/plugins/ δημιουργήστε ένα αρχείο με όνομα authorbio.php. Για να μπορέσει το WordPress να αναγνωρίσει το αρχείο μας ως Plugin, θα πρέπει να εισάγουμε μια σύντομη επικεφαλίδα με σχόλια στην αρχή του αρχείου μας. Επικολλήστε τον κώδικα που ακολουθεί μέσα στο αρχείο σας.

<?php
/*
Plugin Name: Βιογραφικό συντακτών
Plugin URI: //www.web-resources.eu/
Description: Αυτό το plugin, εισάγει το βιογραφικό των συντακτών στα άρθρα τους
Author: Web Resources.eu
Version: 1.0
Author URI: //www.web-resources.eu/
*/
?>

3 – Συναρτήσεις και ενέργειες

Στη συνέχεια θα δημιουργήσουμε τη βάση για το Plugin μας. Αντιγράψτε και στη συνέχεια επικολλήστε τον ακόλουθο κώδικα μετά τα σχόλια της επικεφαλίδας στο αρχείο του Plugin.

function author_bio_display($content)
{
	// εδώ θα μπει ο κώδικα που θα προβάλει το βιογραφικό στο άρθρο
}

function author_bio_style()
{
	// εδώ θα μορφοποιήσουμε το πλαίσιο στο οποίο θα εμφανίζετε το βιογραφικό
}

function author_bio_settings()
{
	// εδώ θα εμφανίζουμε τις επιλογές διαχείρισης
}

function author_bio_admin_menu()
{
	// εδώ θα εισάγουμε το plugin μας στο μενού του διαχειριστή.
}

add_action('the_content', 'author_bio_display');
add_action('admin_menu', 'author_bio_admin_menu');
add_action('wp_head', 'author_bio_style');

Παραπάνω δημιουργήσαμε τέσσερις συναρτήσεις τις οποίες το Plugin μας απαιτεί για να λειτουργήσει κανονικά. Κάθε συνάρτηση έχει ένα συγκεκριμένο σκοπό, καθώς επίσης, κάθε συνάρτηση έχει συνδεθεί με μια ενέργεια (εκτός από τη συνάρτηση author_bio_settings η οποία θα κληθεί από άλλη συνάρτηση)

Όταν κατασκευάσουμε Plugins, είναι σημαντικό να κατανοούμε τι είναι ένα άγκιστρο. Ένα άγκιστρο είναι ένα σημείο στο χρόνο εκτέλεσης στο οποίο μπορούμε να αγκιστρώσουμε μια συνάρτηση πάνω στο WordPress. Για παράδειγμα το άγκιστρο που χρησιμοποιούμε παραπάνω, για τη συνάρτηση author_bio_display είναι το the_content, και αυτό σημαίνει πως όταν το WordPress χρησιμοποιεί το the_content (εκτελείτε όταν προβάλετε το κεντρικό περιεχόμενο ενός άρθρου ή σελίδας), πρώτα θα εκτελέσει τη συνάρτηση που του δώσαμε και μετά θα συνεχήσει.

4 – Η συνάρτηση προβολής

Η ποιο σημαντική συνάρτηση στο Plugin μας είναι η συνάρτηση author_bio_display, η οποία θα αναλάβει τη διαδικασία να προβάλει το βιογραφικό μετά το περιεχόμενο. Πριν αρχίσουμε, είναι σημαντικό να σημειωθεί πως αυτή η συνάρτηση δέχεται μια παράμετρο, που ονομάζετε $content. Αυτό σημαίνει πως το περιεχόμενο του άρθρου ή της σελίδας μεταφέρετε μέσα στη συνάρτηση μας, οπότε μπορούμε να εισάγουμε το βιογραφικό του συντάκτη σε αυτό.

Ας αρχίσουμε με ένα απλό τύπο if / else

function author_bio_display($content)
{
	// εδώ θα μπει ο κώδικα που θα προβάλει το βιογραφικό στο άρθρο
	if(is_single() || is_page())
	{
		$bio_box = '';
		return $content . $bio_box;
	}
	else
	{
		return $content;
	}
}

Στον κώδικα που μόλις είδαμε, κάνουμε ένα έλεγχο για να δούμε αν το περιεχόμενο προβάλετε σε ένα άρθρο με τη χρήση της is_single() ή σε μια σελίδα με τη χρήση της is_page(). Αν ο έλεγχος επιστρέφει true τότε μπορούμε να προσθέσουμε το πλαίσιο με το βιογραφικό του συντάκτη στο άρθρο το οποίο είναι αποθηκευμένο στη μεταβλητή $bio_box. Διαφορετικά, αν ο χρήστης είναι σε κάποια άλλη σελίδα, όπως για παράδειγμα στο αρχείο ή στην πρώτη σελίδα, μπορούμε απλά να επιστρέψουμε το περιεχόμενο χωρίς επεξεργασία.

Τώρα πρέπει να βάλουμε τον κώδικα μας τις εντολές για το πλαίσιο που θα εμφανιστεί σε κάθε άρθρο. Αντικαταστήστε τα κενά εισαγωγικά της μεταβλητής $bio_box με τον κώδικα που ακολουθεί.

$bio_box =
'<div id="author-bio-box">
	'.get_avatar( get_the_author_meta('user_email'), '80' ).'
	<span class="author-name">'.get_the_author_meta('display_name').'</span>
	<p>'.get_the_author_meta('description').'</p>
	<div class="spacer"></div>
</div>';

Το στιλ φυσικά μπορεί να αλλάξει αργότερα και να προσαρμοστεί στο δικό σας ιστολόγιο. Για τώρα θα χρησιμοποιήσουμε ένα απλό πλαίσιο και θα προσθέσουμε λίγο CSS για να κάνουμε πολύ βασική μορφοποίηση.

Παραπάνω χρησιμοποιήσαμε μερικές συναρτήσεις για να ανακτήσουμε τα δεδομένα που είναι απαραίτητα. Η συνάρτηση get_avatar() είναι ενσωματωμένη στο WordPress και εμφανίζει το gravatar του χρήστη, αν αυτό βέβαια υπάρχει. Στη συνάρτηση get_avatar() περνάμε δυο παραμέτρους, το e-mail του συγγραφέα και το μέγεθος του avatar (80 x 80 στην περίπτωση μας).

Η συνάρτηση get_the_user_meta() μπορεί να ανακτήσει κάθε πληροφορία για κάθε εγγεγραμμένο χρήστη του WordPress. Η πλήρης λίστα με τα στοιχεία που μπορείτε να ανακτήσετε με αυτή τη συνάρτηση μπορεί να βρεθεί στο WordPress Codex.

Αν τώρα εκτελέσουμε το Plugin, θα πρέπει να δούμε κάτι σαν αυτό. :

Βιογραφικό

5 – Ας το κάνουμε λίγο ποιο όμορφο

Αν είστε σχεδιαστής, εδώ έχετε την ευκαιρία να αλλάξετε την εμφάνιση του Plugin για να το κάνετε να μοιάζει όπως εσείς θέλετε. Ο κώδικας που ακολουθεί είναι αρκετός για να κάνει το πλαίσιο να μοιάζει καθαρό και απλό. Για να πάρετε μια ιδέα για το πως λειτουργεί το άγκιστρο wp_head(), θα εισάγουμε το CSS για το πλαίσιο μας μέσα στην ετικέτα head του εγγράφου μας. Το ιδανικό όμως είναι να εισάγουμε το CSS μέσα στο αρχείο με όλα τα στιλ.

Η συνάρτηση author_bio_style() επιστρέφει ένα απλό σύνολο από εντολές CSS.

function author_bio_style()
{
	// εδώ θα μορφοποιήσουμε το πλαίσιο στο οποίο θα εμφανίζετε το βιογραφικό
	echo '<style type=\'text/css\'>
	#author-bio-box {
		border: 1px solid #bbb;
		background: #eee;
		padding: 5px;
	}

	#author-bio-box img {
		float: left;
		margin-right: 10px;
	}

	#author-bio-box .author-name {
		font-weight: bold;
		margin: 0px;
		font-size: 14px;
	}

	#author-bio-box p {
		font-size: 10px;
		line-height: 14px;
		font-style: italic;
	}

	.spacer { display: block; clear: both; }
	</style>';
}

Αυτός ο κώδικας δεν χρειάζεται και ιδιαίτερη επεξήγηση, το CSS δεν είναι το θέμα αυτού του άρθρου. Σε γενικές γραμμές αυτό που κάνουμε είναι να δημιουργήσουμε ένα πλαίσιο με περίγραμμα και floating την φωτογραφία αριστερά. Τέλος προσθέτουμε διαστήματα για να βεβαιωθούμε ότι το πλαίσιο είναι αρκετά μεγάλο για να χωρέσει την φωτογραφία και το βιογραφικό του συντάκτη.

Τώρα το πλαίσιο θα πρέπει να μοιάζει κάπως έτσι :

Βιογραφικό

6 – Δημιουργία της σελίδας ρυθμίσεων

Πριν ξεκινήσουμε, ας ρίξουμε μια ματιά στην προσθήκη σελίδας ρυθμίσεων στον πίνακα διαχείρισης για το Plugin μας. Τα περισσότερα Plugins, έχουν ένα τμήμα για ρυθμίσεις, για να παρέχουν επιπλέον ευελιξία χωρίς να πρέπει ο χρήστης να επέμβει στον κώδικα.

Υπάρχει πληθώρα ρυθμίσεων που μπορούμε να προσθέσουμε, όπως, που να εμφανίζετε το πλαίσιο (στην κορυφή, στο τέλος), τα χρώματα που χρησιμοποιούνται, αποκλεισμό κάποιων χρηστών, και άλλα πολλά. Για αυτό το άρθρο, επέλεξα να ορίζει ο χρήστης αν το Plugin μπορεί να εμφανίζετε μόνο σε σελίδες, μόνο σε άρθρα ή και στα δυο. Αυτό νομίζω πως θα είναι αρκετό για να σας δώσει να καταλάβετε πως προσθέτουμε ρυθμίσεις για τα Plugins, και αν χρειαστεί να το επεκτείνετε αργότερα.

Δημιουργία της σελίδας

Χρειάζεται να δημιουργήσουμε μια σελίδα στον πίνακα ελέγχου του διαχειριστή. Για να το κάνουμε αυτό θα πρέπει να πούμε στο WordPress τι πρέπει να κάνει όταν η ενέργεια admin_menu ενεργοποιείτε. Για να του πούμε τι θα κάνει θα πρέπει να επεξεργαστούμε τη συνάρτηση author-bio-admin-menu() ώστε να μοιάζει με την παρακάτω.

function author_bio_admin_menu()
{
	// εδώ θα εισάγουμε το plugin μας στο μενού του διαχειριστή.
	add_options_page('Βιογραφικό συντακτών', 'Βιογραφικό συντακτών', 9, basename(__FILE__), 'author_bio_settings');
}

Ο κώδικας αυτός δημιουργεί μια επιλογή στο μενού για τη σελίδα ρυθμίσεων του πίνακα ελέγχου, και μεταβιβάζει τις ακόλουθες παραμέτρους:

  • Το όνομα του μενού (Βιογραφικό συντακτών)
  • Τίτλος της σελίδας (Βιογραφικό συντακτών)
  • Δικαιώματα πρόσβασης (9 ή πρόσβαση μόνο από τον διαχειριστή)
  • Διαχειριστή
  • Τη συνάρτηση που θα διαχειριστή τις ρυθμίσεις

Στη συνέχεια θα πρέπει να τροφοδοτήσουμε τη σελίδα με περιεχόμενο. Η σελίδα μας θα είναι στη συνάρτηση author_bio_settings().

Η συνάρτηση ρυθμίσεων

Αυτή η συνάρτηση θα προβάλει μια φόρμα με τις ρυθμίσεις. Επίσης πρέπει να ελέγχει αν η φόρμα έχει υποβληθεί, και αν έχει υποβληθεί να αποθηκεύσει της αλλαγές στη βάση δεδομένων. Για αρχή ας συγκεντρωθούμε στη δημιουργία της φόρμας.

function author_bio_settings()
{
	// εδώ θα εμφανίζουμε τις επιλογές διαχείρισης

	$options['page'] = get_option('bio_on_page');
	$options['post'] = get_option('bio_on_post');

	echo '
	<div class="wrap">
		'.$message.'
		<div id="icon-options-general" class="icon32"><br /></div>
		<h2>Ρυθμίσεις βιογραφικού συντακτών</h2>

		<form method="post" action="">
		<input type="hidden" name="action" value="update" />

		<h3>Που να εμφανίζετε το βιογραφικό των συντακτών</h3>
		<input name="show_pages" type="checkbox" id="show_pages" '.$options['page'].' /> Στις σελίδες<br />
		<input name="show_posts" type="checkbox" id="show_posts" '.$options['post'].' /> Στα άρθρα<br />
		<br />
		<input type="submit" class="button-primary" value="Αποθήκευση αλλαγών" />
		</form>

';
}

Αρχίζουμε παίρνοντας μερικές παραμέτρους από τη βάση δεδομένων. Φυσικά, δεν έχουμε ακόμα για να ορίζουμε τις παραμέτρους, οπότε θα είναι κενές για την ώρα. Στη συνέχεια εμφανίζουμε τη φόρμα, η οποία εμφανίζετε με το εξ ορισμού στιλ του WordPress. Θα έχετε παρατηρήσει πως χρησιμοποιούμε την μεταβλητή $message που δεν έχει δηλωθεί πουθενά ακόμα. Με αυτή τη μεταβλητή θα μπορούμε να ενημερώνουμε τον χρήστη για το αν οι ρυθμίσεις του αποθηκεύτηκαν ή αν υπήρξε πρόβλημα κατά την αποθήκευση.

Τέλος εμφανίζουμε τις επιλογές που έχει ο χρήστης στο τέλος της φόρμας. Αν ο χρήστης επιλέξει μια ρύθμιση θα πρέπει να την αποθηκεύσουμε στη βάση δεδομένων ως επιλεγμένη για να έχουμε το checkbox επιλεγμένο. Οι συναρτήσεις που χρησιμοποιούμε για να παίρνουμε και να ορίζουμε ρυθμίσεις είναι οι get_option() και update_option() αντίστοιχα. Η συνάρτηση get_option() χρειάζεται μόνο το όνομα της ρύθμισης (για αυτό θα πρέπει να είναι και μοναδική), ενώ η συνάρτηση update_option() χρειάζεται το όνομα της ρύθμισης και την τιμή της. Αν η συνάρτηση update_option() δεν βρει το όνομα της ρύθμισης στη βάση δεδομένων απλά τη δημιουργεί.

Τώρα η σελίδα σας θα πρέπει να μοιάζει κάπως έτσι :

Βιογραφικό

Τώρα ας προσθέσουμε τον κώδικα που θα παίρνει τις τιμές που στάλθηκαν από τη φόρμα, και να αναβαθμίσουμε τις ρυθμίσεις στη βάση δεδομένων. Η φόρμα έχει ένα κρυφό πεδίο με όνομα action με τιμή update. Θα ελέγξουμε αν αυτή η τιμή έχει οριστεί και αν είναι αληθής θα αναβαθμίσουμε τις ρυθμίσεις μας. Ο κώδικας που ακολουθεί θα πρέπει να τοποθετηθεί στην κορυφή της συνάρτησης author_bio_settings().

if ($_POST['action'] == 'update')
{
	$_POST['show_pages'] == 'on' ? update_option('bio_on_page', 'checked') : update_option('bio_on_page', '');
	$_POST['show_posts'] == 'on' ? update_option('bio_on_post', 'checked') : update_option('bio_on_post', '');
	$message = '<div id="message" class="updated fade"><p><strong>Οι ρυθμίσεις αποθηκεύτηκαν</strong></p></div>';
}

Αν η φόρμα έχει υποβληθεί, χρησιμοποιούμε τον τριαδικό τελεστή για να ελέγξουμε αν τα checkbox είναι τσεκαρισμένα ή όχι. Αν είναι επιλεγμένα, τότε ορίζουμε την ρύθμιση ως checked, διαφορετικά την ορίζουμε τη ρύθμιση ως κενή. Τέλος ορίζουμε το μήνυμα που ενημερώνει τον χρήστη για την αποθήκευση των αλλαγών.

Αλλάζοντας την εμφάνιση

Τώρα θα πρέπει να είμαστε σε θέση να αλλάζουμε τις ρυθμίσεις και να βλέπουμε το αποτέλεσμα τους στο ιστολόγιο, ωστόσο το Plugin μας δεν είναι ακόμα σε θέση να το κάνει γιατί δεν του έχουμε πει ακόμα πως να το κάνει. Το τελευταίο βήμα στο έργο μας είναι να κάνουμε τη συνάρτηση author_bio_display() να ανταποκρίνεται σε αυτές τις ρυθμίσεις. Στη συνάρτηση author_bio_display() εισάγετε τον κώδικα που ακολουθεί στην αρχή της συνάρτησης, για να πάρετε τις ρυθμίσεις που ορίσατε προηγουμένως.

$options['page'] = get_option('bio_on_page');
$options['post'] = get_option('bio_on_post');

Τώρα που ανακτήσαμε τις ρυθμίσεις από τη βάση δεδομένων, το μόνο που απομένει να κάνουμε είναι να εκτελέσουμε τον κώδικα αν οι ρυθμίσεις έχουν οριστεί. Για να το κάνουμε αυτό αλλάζουμε τον κώδικα ανάλογα.

if ((is_single() && $options['post'] == 'checked') || (is_page() && $options['page'] == 'checked'))

Εδώ έχουμε εφαρμόσει δυο συνθήκες όπου αν είναι αληθείς θα εμφανίζουν το πλαίσιο με το βιογραφικό. Δεν ήταν και τόσο δύσκολο, σωστά;

Εδώ είναι ο κώδικας από όλο το Plugin μας.

<?php
/*
Plugin Name: Βιογραφικό συντακτών
Plugin URI: //www.web-resources.eu/
Description: Αυτό το πρόσθετο, εισάγει το βιογραφικό των συντακτών στα άρθρα τους
Author: Web Resources.eu
Version: 1.0
Author URI: //www.web-resources.eu/
*/

function author_bio_display($content)
{
	// εδώ θα μπει ο κώδικα που θα προβάλει το βιογραφικό στο άρθρο

	$options["page"] = get_option("bio_on_page");
	$options["post"] = get_option("bio_on_post");

	if ((is_single() && $options["post"] == "checked") || (is_page() && $options["page"] == "checked") )
	{
		$bio_box =
		"<div id="author-bio-box">
			".get_avatar( get_the_author_meta("user_email"), "80" )."
			<span class="author-name">".get_the_author_meta("display_name")."</span>
			<p>".get_the_author_meta("description")."</p>
			<div class="spacer"></div>
		</div>";

		return $content . $bio_box;
	} else {
		return $content;
	}
}

function author_bio_style()
{
	// εδώ θα μορφοποιήσουμε το πλαίσιο στο οποίο θα εμφανίζετε το βιογραφικό
	echo
	"<style type=\"text/css\">
	#author-bio-box {
		border: 1px solid #bbb;
		background: #eee;
		padding: 5px;
	}

	#author-bio-box img {
		float: left;
		margin-right: 10px;
	}

	#author-bio-box .author-name {
		font-weight: bold;
		margin: 0px;
		font-size: 14px;
	}

	#author-bio-box p {
		font-size: 10px;
		line-height: 14px;
		font-style: italic;
	}

	.spacer { display: block; clear: both; }
	</style>";
}

function author_bio_settings()
{
	// εδώ θα εμφανίζουμε τις επιλογές διαχείρισης
	if ($_POST["action"] == "update")
	{
		$_POST["show_pages"] == "on" ? update_option("bio_on_page", "checked") : update_option("bio_on_page", "");
		$_POST["show_posts"] == "on" ? update_option("bio_on_post", "checked") : update_option("bio_on_post", "");
		$message = "<div id="message" class="updated fade"><p><strong>Options Saved</strong></p></div>";
	}

	$options["page"] = get_option("bio_on_page");
	$options["post"] = get_option("bio_on_post");

	echo "
	<div class="wrap">
		".$message."
		<div id="icon-options-general" class="icon32"><br /></div>
		<h2>Author Bio Settings</h2>

		<form method="post" action="">
		<input type="hidden" name="action" value="update" />

		<h3>When to Display Author Bio</h3>
		<input name="show_pages" type="checkbox" id="show_pages" ".$options["page"]." /> Pages<br />
		<input name="show_posts" type="checkbox" id="show_posts" ".$options["post"]." /> Posts<br />
		<br />
		<input type="submit" class="button-primary" value="Save Changes" />
		</form>

	</div>";
}

function author_bio_admin_menu()
{
	// εδώ θα εισάγουμε το plugin μας στο μενού του διαχειριστή.
	add_options_page("Author Bio", "Author Bio", 9, basename(__FILE__), "author_bio_settings");
}

add_action("the_content", "author_bio_display");
add_action("admin_menu", "author_bio_admin_menu");
add_action("wp_head", "author_bio_style");

?>

Επίλογος

Αν τα ολοκληρώσατε όλα τα βήματα όπως σας τα παρουσιάσαμε θα πρέπει τώρα να έχετε ένα Plugin που λειτουργεί κανονικά και που εμφανίζει ένα πλαισιο με το βιογραφικό του συντάκτη στο τέλος από κάθε άρθρο η σελίδα. Επιπλέον έχετε μια σελίδα για να αλλάζετε τις ρυθμίσεις απο τον πίνακα ελέγχου, την οποία μπορείτε να επεκτείνετε για να κάνετε το Plugin σας ποιο ευέλικτο.

Περισσότερα για τον CorfuGmr

CorfuGmr

Ονομάζομαι Νίκος και ασχολούμαι με το internet και την κατασκευή ιστοσελίδων από το 1998. Σήμερα, μετά από 12 χρόνια γεμάτα με ενημέρωση, εκπαίδευση και εξάσκηση έχω ανεβάσει σε ένα άλλο επίπεδο τις γνώσεις μου και τις τεχνικές μου. Στα άρθρα μου προσπαθώ να σας δείξω τα μικρά, αλλά σημαντικά πράγματα που με έχουν ανεβάσει σε αυτό το επίπεδο.








Σχόλια



12 Μαΐου 2010

[…] This post was mentioned on Twitter by Web Resoures.eu, Web Resoures.eu. Web Resoures.eu said: Δημιουργία πρόσθετου για το WordPress για να προσθέσετε τις βιογραφίες των συντακτών σας σε κάθε άρθρο -> http://tinyurl.com/25ujs4o […]




Agio Patio Furniture

12 Ιουλίου 2011

The information mentioned in the article are some of the best available ……




4 Δεκεμβρίου 2011

Καλησπέρα όταν ενεργοποιώ το plugin μου βγάζει το εξής error
«Parse error: syntax error, unexpected T_LNUMBER in /Applica
tions/MAMP/wordpress/wp-content/plugins/authorbio/authorbio.php on line 19»




5 Δεκεμβρίου 2011

καλημέρα Haris.

Μπορείς σε παρακαλώ πολύ να κάνεις επικόλληση των κώδικα σου στο http://pastebin.com/ για να δω τι μπορεί να είναι λάθος.

Βασικά το μήνυμα που μου δείχνεις λέει πως έχεις κάνει ένα συντακτικό λάθος. Στην γραμμή 19 του αρχείου authorbio.php έχεις δώσει κάποιο αριθμό εκεί που το σύστημα περιμένει κάτι άλλο.

Αν είναι αυτό που φαντάζομαι, στη συνάρτηση get_avatar(), έχεις βάλει το δεύτερο όρισμα ως ακέραιο και όχι ως κείμενο. Αν είναι αυτό το πρόβλημα, θα πρέπει να αλλάξεις το δεύτερο όρισμα σε κείμενο απλά περικλείοντας το σε μονά ή διπλά εισαγωγικά.

Αν και πάλι αυτό δεν είναι το πρόβλημα, τότε κάνε σε παρακαλώ τον κόπο και κάνε επικόλληση τον κώδικα σου στο PasteBin για να εντοπίσω το σφάλμα και να σε βοηθήσω να το λύσεις.


Συγνώμη, τα σχόλια για αυτό το άρθρο είναι κλειστά.



^
Top
css.php