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

More
14 years 3 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
14 years 3 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
14 years 3 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
14 years 3 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
14 years 3 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
14 years 3 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.

Moderators: vistamediajoomlacornerggppdk
Time to create page: 0.316 seconds
Save
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