aide pour une option de trie supplémentaire dans un template

More
16 years 2 months ago #2305 by micker
Hello a tous voila j'ai 2 idée je suis nule en prog mais je me lance :
idée 1
je voudrais mettre une option de trie en fonction du mois. Un tableau qui m'affiche les article du mois en cour avec en bas un pagination vers le mois suivant précédent

idée 2
je voudrais mettre une option de trie des article en cours. c'est à dire comparer la date du serveur avec celle de fin de publication des articles avec un certain nombre.

pour l'idée 1 je sais pas comment attaquer du tout :oops: :oops:


pour l'idée 2

Voici l'idée de code (puiser à droite à gauche)
1 définir une variable de condition_avenir
2 récuperer la date
$now = $now = date("Y-m-d");
3 $condition_avenir = '';
if ($type_tri == '0') {
$trier_par = " a.created DESC";
}elseif ($type_tri == '1'){
$trier_par = " a.hits DESC";
}elseif ($type_tri == '2') {
$trier_par = " RAND()";
}elseif ($type_tri == '3') {
$trier_par = " a.created ASC";
$condition_avenir = "\n AND a.publish_down >= '$now'

apres on fait un trie avec cette condition vous pensez vous que c'est possible ?
voici le code de mon template
Code:
<?php /** * @version 1.5 beta 5 $Id: blog_items.php 85 2009-10-10 13:48:04Z vistamedia $ * @package Joomla * @subpackage FLEXIcontent * @copyright (C) 2009 Emmanuel Danan - www.vistamedia.fr * @license GNU/GPL v2 * * FLEXIcontent is a derivative work of the excellent QuickFAQ component * @copyright (C) 2008 Christoph Lukes * see www.schlu.net for more information * * FLEXIcontent is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ defined( '_JEXEC' ) or die( 'Restricted access' ); // first define the template name $tmpl = $this->tmpl; ?> <?php if ((($this->params->get('use_filters', 0)) && $this->filters) || ($this->params->get('use_search')) || ($this->params->get('show_alpha', 1))) : ?> <form action="<?php echo $this->action; ?>" method="post" id="adminForm"> <?php if ((($this->params->get('use_filters', 0)) && $this->filters) || ($this->params->get('use_search'))) : ?> <div id="fc_filter" class="floattext"> <?php if ($this->params->get('use_search')) : ?> <div class="fc_fleft"> <input type="text" name="filter" id="filter" value="<?php echo $this->lists['filter'];?>" class="text_area" onchange="document.getElementById('adminForm').submit();" /> <button onclick="document.getElementById('adminForm').submit();"><?php echo JText::_( 'FLEXI_GO' ); ?></button> <button onclick="document.getElementById('filter').value='';document.getElementById('adminForm').submit();"><?php echo JText::_( 'FLEXI_RESET' ); ?></button> </div> <?php endif; ?> <?php if (($this->params->get('use_filters', 0)) && $this->filters) : ?> <div class="fc_fright"> <?php /* echo '<span class="filter">'; echo 'Saison: ' . $this->filters['field24']->html; echo '</span>'; */ foreach ($this->filters as $filt) : echo '<span class="filter">'; echo $filt->html; echo '</span>'; endforeach; ?> </div> <?php endif; ?> </div> <?php endif; ?> <?php if ($this->params->get('show_alpha', 1)) : echo $this->loadTemplate('alpha'); endif; ?> <input type="hidden" name="option" value="com_flexicontent" /> <input type="hidden" name="filter_order" value="<?php echo $this->lists['filter_order']; ?>" /> <input type="hidden" name="filter_order_Dir" value="" /> <input type="hidden" name="view" value="category" /> <input type="hidden" name="letter" value="" id="alpha_index" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="id" value="<?php echo $this->category->id; ?>" /> </form> <?php endif; ?> <?php $items = $this->items; $count = count($items); if ($count) : ?> <div class="content"> <?php $leadnum = $this->params->get('lead_num', 2); $leadnum = ($leadnum >= $count) ? $count : $leadnum; if ($this->limitstart == 0) : ?> <ul class="leadingblock"> <?php for ($i=0; $i<$leadnum; $i++) : ?> <li> <div style="overflow: hidden;"> <?php if ($this->params->get('show_title', 1)) : ?> <h2 class="contentheading"> <?php if ($this->params->get('link_titles', 0)) : ?> [url=<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($items[$i]->slug, $this->category->slug)); ?>]<?php echo $this->escape($items[$i]->title); ?>[/url] <?php else : echo $this->escape($items[$i]->title); endif; ?> </h2> <?php endif; ?> <?php if ($this->params->get('lead_use_image', 1)) : if ($this->params->get('lead_image')) : if (isset($items[$i]->fields[$this->params->get('lead_image')]->value[0])) : $dir{$i} = $items[$i]->fields[$this->params->get('lead_image')]->parameters->get('dir'); $value{$i} = unserialize($items[$i]->fields[$this->params->get('lead_image')]->value[0]); $image{$i} = $value{$i}['originalname']; $scr{$i} = $dir{$i}.($this->params->get('lead_image_size') ? '/'.$this->params->get('lead_image_size').'_' : '/l_').$image{$i}; else : $scr{$i} = ''; endif; $src = $scr{$i}; else : $src = flexicontent_html::extractimagesrc($items[$i]); endif; $w = '&w=' . $this->params->get('lead_width', 200); $h = '&h=' . $this->params->get('lead_height', 200); $aoe = '&aoe=1'; $q = '&q=95'; $zc = $this->params->get('lead_method') ? '&zc=' . $this->params->get('lead_method') : ''; $conf = $w . $h . $aoe . $q . $zc; if (!$this->params->get('lead_image_size')) : $thumb = JURI::base().'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src='.JURI::base(true).'/'.$src.$conf; else : $thumb = $src; endif; if ($src) : // case source ?> <div class="image<?php echo $this->params->get('lead_position') ? ' right' : ' left'; ?>"> <?php if ($this->params->get('lead_link_image', 1)) : ?> <a href="<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($items[$i]->slug, $this->category->slug)); ?>" class="hasTip" title="<?php echo JText::_( 'FLEXI_READ_MORE_ABOUT' ) . '::' . $this->escape($items[$i]->title); ?>"> <img src="<?php echo $thumb; ?>" alt="<?php echo $this->escape($items[$i]->title); ?>" /> <?php else : ?> <img src="<?php echo $thumb; ?>" alt="<?php echo $this->escape($items[$i]->title); ?>" /> <?php endif; ?> <div class="clear"></div> </div> <?php endif; // case source endif; ?> <!-- BOF date block --> <?php if (isset($items[$i]->positions['date'])) : ?> <div class="date"> <?php foreach ($items[$i]->positions['date'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF date block --> <!-- BOF tarif block --> <?php if (isset($items[$i]->positions['tarif'])) : ?> <div class="tarif"> <?php foreach ($items[$i]->positions['tarif'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF tarif block --> <p> <?php if ($this->params->get('lead_strip_html', 1)) : echo flexicontent_html::striptagsandcut( $items[$i]->introtext, $this->params->get('lead_cut_text', 400) ); else : echo $items[$i]->introtext; endif; ?> </p> <!-- BOF mp3 block --> <?php if (isset($items[$i]->positions['mp3'])) : ?> <div class="mp3"> <?php foreach ($items[$i]->positions['mp3'] as $field) : ?> <span class="element"> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF mp3 block --> <!-- BOF fnac block --> <?php if (isset($items[$i]->positions['fnac'])) : ?> <div id="fnac"> <?php foreach ($items[$i]->positions['fnac'] as $field) : ?> <span class="element"> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> </div> </li> <?php endfor; ?> </ul> <?php endif; if ($count > $leadnum || $this->limitstart != 0) : ?> <ul class="introblock <?php echo ($this->params->get('intro_cols', 2) == 1) ? 'one' : 'two'; ?>"> <?php for ($i=($this->limitstart == 0 ? $leadnum : 0 ); $i<$count; $i++) : ?> <li class="<?php echo (($this->limitstart == 0) ? ($i+$leadnum)%2 : $i%2) ? 'even' : 'odd'; ?>"> <div style="overflow: hidden;"> <?php if ($this->params->get('show_title', 1)) : ?> <h2 class="contentheading"> <?php if ($this->params->get('link_titles', 0)) : ?> [url=<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($items[$i]->slug, $this->category->slug)); ?>]<?php echo $this->escape($items[$i]->title); ?>[/url] <?php else : echo $this->escape($items[$i]->title); endif; ?> </h2> <?php endif; ?> <?php if ($this->params->get('intro_use_image', 1)) : if ($this->params->get('intro_image')) : if (isset($items[$i]->fields[$this->params->get('intro_image')]->value[0])) : $dir{$i} = $items[$i]->fields[$this->params->get('intro_image')]->parameters->get('dir'); $value{$i} = unserialize($items[$i]->fields[$this->params->get('intro_image')]->value[0]); $image{$i} = $value{$i}['originalname']; $scr{$i} = $dir{$i}.($this->params->get('intro_image_size') ? '/'.$this->params->get('intro_image_size').'_' : '/l_').$image{$i}; else : $scr{$i} = ''; endif; $src = $scr{$i}; else : $src = flexicontent_html::extractimagesrc($items[$i]); endif; $w = '&w=' . $this->params->get('intro_width', 200); $h = '&h=' . $this->params->get('intro_height', 200); $aoe = '&aoe=1'; $q = '&q=95'; $zc = $this->params->get('intro_method') ? '&zc=' . $this->params->get('intro_method') : ''; $conf = $w . $h . $aoe . $q . $zc; if (!$this->params->get('intro_image_size')) : $thumb = JURI::base().'components/com_flexicontent/librairies/phpthumb/phpThumb.php?src='.JURI::base(true).'/'.$src.$conf; else : $thumb = $src; endif; if ($src) : // case source ?> <div class="image<?php echo $this->params->get('intro_position') ? ' right' : ' left'; ?>"> <?php if ($this->params->get('intro_link_image', 1)) : ?> <a href="<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($items[$i]->slug, $this->category->slug)); ?>" class="hasTip" title="<?php echo JText::_( 'FLEXI_READ_MORE_ABOUT' ) . '::' . $this->escape($items[$i]->title); ?>"> <img src="<?php echo $thumb; ?>" alt="<?php echo $this->escape($items[$i]->title); ?>" /> <?php else : ?> <img src="<?php echo $thumb; ?>" alt="<?php echo $this->escape($items[$i]->title); ?>" /> <?php endif; ?> <div class="clear"></div> </div> <?php endif; // case source endif; ?> <!-- BOF date block --> <?php if (isset($items[$i]->positions['date'])) : ?> <div class="date"> <?php foreach ($items[$i]->positions['date'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF above-description-line1 block --> <p> <?php if ($this->params->get('lead_strip_html', 1)) : echo flexicontent_html::striptagsandcut( $items[$i]->introtext, $this->params->get('lead_cut_text', 400) ); else : echo $items[$i]->introtext; endif; ?> </p> <!-- BOF mp3 block --> <?php if (isset($items[$i]->positions['mp3'])) : ?> <div class="mp3"> <?php foreach ($items[$i]->positions['mp3'] as $field) : ?> <span class="element"> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF mp3 block --> <!-- BOF tarif block --> <?php if (isset($items[$i]->positions['tarif'])) : ?> <div class="tarif"> <?php foreach ($items[$i]->positions['tarif'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?> <!-- EOF tarif block --> <!-- BOF fnac block --> <?php if (isset($items[$i]->positions['fnac'])) : ?> <div class="fnac"> <?php foreach ($items[$i]->positions['fnac'] as $field) : ?> <span class="element"> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?></span> </span> <?php endforeach; ?> <?php if ($this->params->get('show_readmore', 1)) : ?> <span class="readmore"> <a href="<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($items[$i]->slug, $this->category->slug)); ?>" class="readon"> <?php if ($items[$i]->params->get('readmore')) : echo ' ' . $items[$i]->params->get('readmore'); else : echo ' ' . JText::sprintf('FLEXI_READ_MORE', $items[$i]->title); endif; ?> </span> <?php endif; ?> </div> <?php endif; ?> </div> </li> <?php endfor; ?> </ul> <?php endif; ?> </div> <?php else : ?> <div class="noitems"><?php echo JText::_( 'FLEXI_NO_ITEMS_CAT' ); ?></div> <?php endif; ?>
qqun serait pret à m'aider à la mettre ?

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2308 by yopyop001
Salut,

Pour tes dates, tu utilises un champs de type 'Date'?
Si oui, la fonction de filtre par date n'est pas encore implémentée dans cette version de Flexicontent; elle ne doit d'ailleurs pas être évidente à développer car j'imagine qu'il serait intéressant de pouvoir définir des intervalles,...
bref à suivre.

Pour l'idée 1, une bidouille temporaire éventuelle : si pour tes contenus, tu crées un champs de type select multiple avec les mois comme valeurs. Tu le mets en filtre, et l'utilisateur pourra utiliser le filtre par mois pour naviguer... Ca t'oblige à remettre à jour tous les contenus, mais ça évite de développer une fonctionnalité qui deviendra sans doute rapidement obsolète.
Ce n'est pas forcément satisfaisant comme solution, mais temporairement, ça peut dépanner.

Pour l'idée 2, je ne suis pas sûr d'avoir compris :

je voudrais mettre une option de trie des article en cours. c'est à dire comparer la date du serveur avec celle de fin de publication des articles avec un certain nombre.

Tu voudrais dans les paramètres des catégories, pour la liste déroulante 'Ordre primaire', ajouter une valeur 'Le plus proche de la fin de publication'?

A plus tard

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2310 by micker
hello
pour l'idée 1 c'est pas mal ton idée mais on pourrait pas regarder le mois de la date de début
genre on lui explique 01=janvier 02=février etc et si il prend la date de création on fait le trie !

pour l'idée 2
oui c'est tout a fait ca
la l'idée serait de comparer la date du serveur comparer à la date de fin de publication.
A suivre

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2313 by yopyop001
Re,

Je te fais une réponse très rapide, car je dois filer, je pourrai regarder un peu plus en détails demain et pendant le WE.

Pour l'idée 2 :
Le problème c'est que les modifications seront sans doute effacées lors des MAJ de Flexicontent, mais je vois deux fichiers à modifier :
- administrator/components/com_flexicontent/models/category.xml
Ligne 76 :
Ajouter
Code:
<option value="mickerorder">Date d'expiration ASC</option> <option value="rmickerorder">Date d'expiration DESC</option>

Puis dans le fichier components/com_flexicontent/models/category.php
Ligne 244 :
Code:
case 'mikerorder' : $filter_order = 'i.publish_down'; $filter_order_dir= 'ASC'; break; case 'rmikerorder' : $filter_order = 'i.publish_down'; $filter_order_dir = 'DESC'; break;

J'ai pas eu le temps de tester du tout, mais c'est une piste.

Je suis vraiment trop en retard. On se tient au courant.

A plus

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2343 by micker
c'est pas possible de le faire dans le category du template directement ? car il les duplique aussi ...
comme ca même après mise à jour c'est ok non ?
Merci pour ton aide !

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2367 by yopyop001
Salut

En effet tu as raison, j'avais pas vu que c'était récupéré dans les fichiers du template :

Il va falloir travailler sur le fichier category_items.php de ton template. et définir deux valeurs juste après la fonction javascript tableOrdering:
Code:
$this->lists['filter_order']="i.publish_down"; $this->lists['filter_order_Dir']="DESC"; (ou ASC)

et rappeller dans les champs 'hidden' du formulaire :
Code:
<input type="hidden" name="filter_order_Dir" value="<?php echo $this->lists['filter_order_Dir']; ?>" />

Bon, j'espère que c'est ça, j'avoue que entre les caches de FireFox, de Flexicontent, je me suis un peu embrouillé dans mes tests.


Pour l'idée1 :
Il faut voir que si tu as un événement à cheval sur deux mois, cela va poser un souci, alors que la liste multiple permet de l'éviter.

Est-ce que tu utilises des champs de type 'date' pour tes dates de début et de fin?

A suivre.

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2542 by micker
non j'uitlise les dates de publications et de creation
a+

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2735 by micker
hello je repasse par la pour continuer notre histoire ?
déjà 1 er infos pour les dates c'est pas mal de prendre les date systèmes de joomla comme ca ca reste compatible avec des modules de news sans devoir tout refaire ....

pour le tableau mensuelle
je penser que trier par rapport à la date de création
qui 10-05-2010
0 on définis les équivalent mois 01=janvier ... etc
1 on récupere la valeur date-creation
2 on explose cette date pour ne garder que 05
3 on fait le trie de tout les articles ayant ce mois
4 on affiche le nom du mois en haut du tableau puis le tableau par ordre de date croissant
5 on fait un liens mois+1 et mois -1 en base de page
qu'en penses tu ?

des idées supplémentaires ?
c'est vraiment nul mais je suis incapable de le coder tout seul ...
Merci pour ton aide

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2762 by yopyop001
Hello, tu fais bien de déterrer ce sujet, j'avais presque oublié ;-)

0 on définis les équivalent mois 01=janvier ... etc

ca, ok, un petit tableau fera l'affaire.
Code:
$mois = array( "01" => "Janvier" , "02" => "Février",...);

1 on récupere la valeur date-creation

ca devrait le faire aussi
Code:
$datecreation = $item->fields['created']->display;

2 on explose cette date pour ne garder que 05

Ok, à adapter selon le format de la date dans l'admin de Flexicontent.

3 on fait le tri de tout les articles ayant ce mois

Argg, ça se complique un peu; du coup dans la boucle qui parcourt les items (fichier category_items.php), il faudra générer une classe pour chaque ligne qui n'est pas dans le mois que l'on consulte pour masquer les lignes du tableau (que l'on affichera avec un javascript)
Il faudrait mieux qu'il soit déjà trié par date de création, comme ça c'est fait, il n'y a plus qu'à découper le tableau en morceau que l'on affichera ou pas.

4 on affiche le nom du mois en haut du tableau puis le tableau par ordre de date croissant

ca, un javascript associé devrait pouvoir le sortir

5 on fait un liens mois+1 et mois -1 en base de page

En effet, des liens avec des fonctions javascript qui masque le calque en cours et affiche le précédent ou le suivant. Ou une liste déroulante avec les mois.

J'ai commencé à tester un peu, il y a moyen de s'en sortir, je ne sais pas trop quand je pourrai m'y remettre, mais je te tiens au courant et je t'enverrai le fichier d'exemple.

Le problème de cette méthode (javascript) c'est que tous tes éléments sont chargés dans la page, s'il y en a beaucoup, ça peut être un peu long... mais je ne vois pas trop comment faire autrement.

A plus

Please Log in or Create an account to join the conversation.

More
16 years 2 months ago #2766 by micker
cool merci !
si je peus t'aider à quoi que ce soit n'hésite pas !
a suivre donc

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

Please Log in or Create an account to join the conversation.

Moderators: vistamediajoomlacornerggppdk
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Essential
These cookies are needed to make the website work correctly. You can not disable them.
Display
Accept
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline
Save