bonjour à tous je viens de finir mon site motorisé avec
Flexicontent !
Je vais vous expliquer l'approche et les différentes étapes de réalisations.
Déjà on commence par le site
www.le-bijou.net/
objectif :
c'est un site pour une salle de concert à Toulouse.
3 concerts de moyenne par semaine
le but étant d'avoir plusieurs vues à partir d'une unité concert.
Chaque article est un concert.
[img]http://www.le-bijou.net/bijou-projet/pres-concert.jpg/img]
Avec un [i]cas particulier pour certain concert[/i] sont des auditions (mise en page particulière)
Il doit y avoir [i]une vue mensuelle des concerts[/i]
[img]http://www.le-bijou.net/bijou-projet/pres-prog.jpg[/img]
Il doit y avoir
en première page les concerts de la semaine.
Une gestion des archives sur 20 ans.
Avec une contrainte :
le plus automatiser possible !
contexte :
un site en joomla 1.0.15
avec 1 article = concert
la vue mensuelle fait à la main avec un tableau
pas de vue semaine
problème de gestion des archives (env 1000 articles)
PASSAGE vers la 1.5.18 et flexicontent
1 création de la structure
J'ai d'abord commencer par la mise en place de la structure des catégories.
* Pour les archives
1 catégorie archive
|_x sous catégorie par l'affichage par année (2010-2009-etc...)
1 catégorie concert
|_1 sous catégorie audition
1 catégorie page-accueil pour la vue semaine de la première page
2 création des différents type de contenu
* concert qui vas afficher :
le nom du groupe
la date (en format texte)
le type de chanson
l'heure (en format texte)
la description du groupe
les liens web (myspace et site perso)
un player mp3
le prix du concert
un bouton pour acheter via la fnac boutique
* audition qui vas afficher :
le nom de l'audition
la date (en format texte)
le type de l'audition
l'heure (en format texte)
la description
et un tableau avec le nom / la description / le site web / l'heure de passage de chaque groupe
3 création des champs
Pour les concerts
le nom du groupe = titre de l'item
la date (en format texte) = champ texte avec valeur par defaut de la date de base "du X au X"
le type de chanson = champ texte avec valeur par defaut le type de base "chanson"
l'heure (en format texte) = champ texte avec valeur par defaut l'heure de base "21h30 précise"
la description du groupe = description de l'item
l'image = champ image avec une redirection des dossier vers des emplacements plus simple (images/stories/etc ..) et des réglages de taille c'est à dire les thumbs 90*90 (cela me servira pour le module de la premiere page) 300*300 pour les articles et 800*600 pour les popups.
les liens web (myspace et site perso) = champ web link avec valeur multiple
un player mp3 = une liste déroulant avec une requête sql pour lister les mp3 charger via flexicontent et l'activation du plugin mp3. Préfix
Code:
{play}images/stories/media/
pour le début de mon plugin et suffix
La requette SQL
Code:
SELECT id AS value, filename AS text FROM #__flexicontent_files WHERE ext = 'mp3'
le prix du concert = liste déroulante des différents tarifs
un bouton pour acheter via la fnac boutique = un champ texte. Les liens vers les boutiques FNAC sont simple
Code:
http://lienboutiquefnac....=TFOUL
, TFOUL étant un code de 4 lettres identifiant les différents évènements. Pour que ce lien soit bon il suffit de rentrer le bon code à 4 chiffres. Donc le début de ce champs c'est Préfix
Code:
<a href="http://lebijou.fnacspectacles.com/ficheManifestation.do?codman=
le suffix c'est
Code:
" target="_blank"><img alt="" src="images/stories/command-fnac.gif" mce_src="images/stories/command-fnac.gif" border="0" width="100" height="30">
pour afficher le bouton. il ne restera plus qu'à l'utilisateur de mettre les 4 chiffres.
Pour les auditions
le nom de l'audition = titre de l'item
la date (en format texte) = champ texte avec valeur par defaut de la date de base "du X au X"
le type de chanson = champ texte avec valeur par defaut le type de base "chanson"
l'heure (en format texte) = champ texte avec valeur par defaut l'heure de base "21h30 précise"
6 champ nom de groupe = champ texte
6 description du groupe = description de l'item
6 les liens web (myspace et site perso) = champ web link avec valeur multiple
6 heure de passage = champ texte pré-remplie pour chaque tranches horaires
1 champ pause = champ texte pour l'horaire de la pause
4 Réalisation des templates
Item concert :
Pour l'affichage des concerts
1 j'ai dupliquer un template par défaut puis appeler concert.
2 dans le dossier
Code:
components/com_flexicontent/templates/concert
éditer
item.xml pour créer les positions 1 pour chaques zones
Code:
<fieldgroups>
<group>date-heure</group>
<group>type</group>
<group>description</group>
<group>image</group>
<group>site-web</group>
<group>prix</group>
<group>fnac</group>
<group>bottom</group>
</fieldgroups>
<cssitem>
<file>css/item.css</file>
</cssitem>
3 Dans le fichier item.php (même dossier)
Code:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
// first define the template name
$tmpl = $this->tmpl;
?>
<div id="flexicontent" class="flexicontent item<?php echo $this->item->id; ?> type<?php echo $this->item->type_id; ?>">
<!-- BOF buttons -->
<p class="buttons">
<?php echo flexicontent_html::pdfbutton( $this->item, $this->params ); ?>
<?php echo flexicontent_html::mailbutton( 'items', $this->params, null , $this->item->slug ); ?>
<?php echo flexicontent_html::printbutton( $this->print_link, $this->params ); ?>
</p>
<!-- EOF buttons -->
<!-- BOF page title -->
<?php if ($this->params->get( 'show_page_title', 1 ) && $this->params->get('page_title') != $this->item->title) : ?>
<h1 class="componentheading">
<?php echo $this->params->get('page_title'); ?>
</h1>
<?php endif; ?>
<!-- EOF page title -->
<!-- BOF item title -->
<?php if ($this->params->get('show_title', 1)) : ?>
<h2 class="contentheading flexicontent">
<?php echo $this->escape($this->item->title); ?>
</h2>
<?php endif; ?>
<!-- EOF item title -->
<div class="clear"></div>
<div class="concert">
<span class="imagebijou"><?php echo $this->fields['imageg']->display; ?></span><span class="dateheure"><?php echo $this->fields['date_texte']->display; ?> <?php echo $this->fields->heure->display; ?></span><br />
<span class="type"><?php echo $this->fields['type_chanson']->display; ?></span><br /><br />
<?php echo $this->fields['text']->display; ?> <br /><br />
<?php echo $this->fields['site_web']->display; ?> <br /><br />
<?php echo $this->fields['mp3']->display; ?><?php echo $this->fields['mp3-externe']->display; ?><br /><br />
<span class="prix"><?php echo $this->fields['prix']->display; ?></span><br />
<?php echo $this->fields['fnac']->display; ?><br />
</div>
<div class="clear"></div>
</div>
pour chaque valeur je charge un champ avec des déclaration de div ou de class pour le item.css
Code:
<?php echo $this->fields['MONCHAMP']->display; ?>
4 utilisation du fichier item.css pour la customisation de l'affichage.
En cour de rédaction !!