<< προηγούμενο: Δημιουργία template (μέρος 4º)
Τα views είναι διάφορα ξεχωριστά υποσέλιδα που μπορούμε να έχουμε για μια συγκεκριμένη Ενότητα (section). Για παράδειγμα για την Ενότητα ΑΡΘΡΑ (articles), είναι απαραίτητα τρία τουλάχιστον views, το list, το node και το search.
Το view είναι το αρχείο που παράγει τον html κώδικα που θα υπάρχει μέσα στο div με id="content". Είναι με λίγα λόγια το τμήμα της κάθε σελίδας όπου παρουσιάζεται το εκάστοτε περιεχόμενο που θα ζητήσει ο χρήστης.
Στην αρχή κάθε αρχείου view, πρέπει να υπάρχει ως ελάχιστο προαπαιτούμενο ο ακόλουθος κώδικας:
<?php
/*
Odyssey view file
Valid Filename: "view_sectionName.php"
Reference to controller variable: $this->varName
*/
// *****************************************************************************
$autoView = false; // Warning! You need to set this to false in order to use your custom view below
// *****************************************************************************
if($autoView){ // you may change this above, setting it as false in order to use your default view starting below
include("view.php");
}else{ // you custom layout starts here!!!
global $langID;
$section = $this->section;
$sectionID = $this->sectionID;
// εμφάνιση τυχόν system messages που έχει ορίσει ο controller
$messages->printSystemMessages();
}
?>
Σε περίπτωση που ορίσουμε την μεταβλητή $autoView σε true, δεν χρειάζεται να κάνουμε κάτι άλλο αφού το view θα δημιουργηθεί αυτόματα. Διαφορετικά προχωράμε στην δημιουργία δικού μας View.
Με τον τρόπο αυτό θα έχουμε στην διάθεσή μας, τρεις πολύ σημαντικές μεταβλητές. Την $langID που καθορίζει την γλώσσα (1 = ελληνικά), την $section που περιέχει το system name της Ενότητας (πχ articles) και στην $sectionID το ID της ενότητας το οποίο μας χρειάζεται ως όρισμα σε πολλές functions που θα χρειαστεί να καλούμε όπως θα δούμε παρακάτω...
Το πρώτο view που χρειάζεται να δημιουργήσουμε έχει τυποποιημένο όνομα και πρέπει να το ονομάζουμε view_odyssey_index.php. Πρόκειται για το view που είναι υπεύθυνο για την εμφάνιση του περιεχομένου της αρχικής σελίδας του site μας.
Το Odyssey είναι πολύ ευέλικτο στον τομέα αυτό, αφού μας προσφέρει τρεις εναλλακτικούς τρόπους να εισάγουμε περιεχόμενο αρχικής σελίδας:
- Μπορούμε να εμφανίσουμε τα περιεχόμενα μιας ειδικής ενότητας του Odyssey που ονομάζεται ΑΡΧΙΚΗ ΣΕΛΙΔΑ. Πρόκειται για μικρά ολοκληρωμένα άρθρα που παρουσιάζονται αυτόνομα και μπορούν να περιέχουν μεταξύ άλλων και links για τις εσωτερικές μας σελίδες.
Μόνο ένα τέτοιο άρθρο μπορεί να εμφανίζεται κάθε φορά στην αρχική σελίδα!
- Μπορούμε να εισάγουμε custom κώδικα (PHP ή/και HTML) μέσα στο view_odyssey_index.php.
- Τέλος μπορούμε να δημιουργήσουμε ένα slot με όνομα homepage και να αντιστοιχίσουμε σ' αυτό, όσα widgets επιθυμούμε.
Στα ανωτέρω μπορεί φυσικά να γίνει και συνδυαστική χρήση.
Για να μπορέσουμε να εκμεταλλευτούμε την ενότητα ΑΡΧΙΚΗ ΣΕΛΙΔΑ θα πρέπει στο σημείο που θέλουμε να εμφανίσουμε το περιεχόμενό της, να εισάγουμε τον ακόλουθο κώδικα συμπεριλαμβάνοντας και τον κώδικα στον οποίο αναφερθήκαμε στην αρχή:
<?php
/*
Odyssey view file
Filename must be like "view_sectionName_viewName.php"
Reference to controller variables must be in form $this->varName
*/
global $langID;
$section = $this->section;
$sectionID = $this->sectionID;
$item = $this->items[0]; // only the first record will be used
$messages->importSessionMessages();
$messages->printSystemMessages();
$articleID = $item->id;
$_REQUEST['id'] = $articleID; // for use from related content modules
$title = $item->title;
$description = $item->description;
$defaultImage = $content->getImage($section, $articleID, $langID, 'default');
$imgDescription = $content->getImageDescription($defaultImage, $articleID, $sectionID, $langID);
$imgDim = GetImageSize("mediabank/medium/medium_".$defaultImage);
$w = $imgDim[0];
$h = $imgDim[1];
if($title != "empty"){
?>
<?php echo $title;?>
<?php
}
if($defaultImage != "."){ // if a default image exists for this record
?>
<br>
<a href="mediabank/images/<?php echo $defaultImage;?>" data-rel="fb" title="<?php echo $imgDescription;?>" rel="fb-<?php echo $articleID;?>"><img src="mediabank/medium/medium_<?php echo $defaultImage;?>" width="<?php echo $w;?>" height="<?php echo $h;?>" class="zoomable" alt="<?php echo $imgDescription;?>" title="<?php echo $imgDescription." - ".t('Κάντε κλικ για μεγέθυνση');?>" /></a>
<?php
}
?>
<br>
<?php echo $content->richText($description);?>
<br>
<?php
$this->includeModules("related_images");
$this->includeModules("video_gallery");
$this->includeModules("related_files");
?>
<div style="height:30px"></div>
<?php
// αν θέλουμε προσθέτουμε κάποιο τίτλο για τα ενθέματα που θα συμπεριλάβουμε στην αρχική σελίδα
// πχ echo t("ΠΡΟΣΦΑΤΕΣ ΔΗΜΟΣΙΕΥΣΕΙΣ");
$this->includeModules("homepage");
?>
Το μόνο που χρειάζεται να κάνετε, είναι να προσθέσετε το styling που επιθυμείτε στο ανωτέρω markup ώστε να το εναρμονίσετε στο template σας.
Κάτω κάτω όπως βλέπετε μπορείτε να προσθέσετε και το:
<?php $this->includeModules("homepage"); ?>
Ώστε να συμπεριλάβετε και όσα widgets οριστούν για την αρχική σελίδα.