hello grâce à doywan voici comment réaliser un tableau de catégorie perso.
1 Voir la partie sur les items pour dupliquer le template defaut
flexicontent.org/forum/index.php
... =viewtopic
pour obtenir
Code:
components
L com_flexicontent
L templates
L default
L item.php
L item.xml
L montemplate
L item.php
L item.xml
L category_alpha.php
L category.php
L category.xml
L category_item.php
L category_item.xml
2 dans votre category_item.xml rajouter vos champs qui équivaudrons aux colonnes de votre tableau.
Code:
- <fieldgroups>
<group>colonne1</group>
<group>colonne2</group>
<group>colonne3</group>
<group>colonne4</group>
<group>colonne5</group>
</fieldgroups>
3 depuis l'administration affecter vos champs aux valeurs de votre template
5 éditez votre category.php comme ceci
Au départ il composé d'option administrable depuis l'interface de flexicontent, il est préférable de tout laisser.
Code:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
// first define the template name
$tmpl = $this->tmpl;
?>
<script type="text/javascript">
function tableOrdering( order, dir, task )
{
var form = document.getElementById("adminForm");
form.filter_order.value = order;
form.filter_order_Dir.value = dir;
document.getElementById("adminForm").submit( task );
}
</script>
<?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->filters) : ?>
<div class="fc_fright">
<?php
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
if ($this->items) :
// routine to determine all used columns for this table
$columns = array();
foreach ($this->items as $item) :
if (isset($item->positions['table'])) :
foreach ($item->positions['table'] as $pos) :
if (!in_array($pos->name, $columns)) :
$columns[$pos->name] = $item->fields[$pos->name]->label;
endif;
endforeach;
endif;
endforeach;
?>
<table id="flexitable" class="flexitable" width="100%" border="0" cellspacing="0" cellpadding="0" summary="<?php echo $this->category->name; ?>">
<thead>
<tr>
<th id="flexi_title" scope="col">colonne1</th>
<th scope="col">colonne2</th>
<th scope="col">colonne3</th>
<th scope="col">colonne4</th>
<th scope="col">colonne5</th>
</tr>
</thead>
<tbody>
<tr class="sectiontableentry<?php echo $class; ?>">
<!-- BOF item title -->
<th scope="row" class="table-titles">
<?php if ($this->params->get('link_titles', 0)) : ?>
[url=<?php echo JRoute::_(FlexicontentHelperRoute::getItemRoute($item->slug, $this->category->slug)); ?>]<?php echo $this->escape($item->title); ?>[/url]
<?php
else :
echo $this->escape($item->title);
endif;
?>
</th>
<!-- BOF item title -->
<!-- BOF fields -->
<?php foreach ($columns as $name => $label) : ?>
<td><?php echo isset($item->positions['table']->{$name}->display) ? $item->positions['table']->{$name}->display : ''; ?></td>
<?php endforeach; ?>
<!-- EOF fields -->
<td>
<?php foreach ($item->fields as $field) : // step 1 : start the loop on the object
if (in_array('colonne2'.$tmpl, $field->positions)) : // step 2 : assigned to this group
?>
<?php echo $field->display ? $field->display : '';
endif; // end step 2
endforeach; // end step 1
?>
</div></td>
<td>
<?php foreach ($item->fields as $field) : // step 1 : start the loop on the object
if (in_array('colonne3'.$tmpl, $field->positions)) : // step 2 : assigned to this group
?>
<?php echo $field->display ? $field->display : '';
endif; // end step 2
endforeach; // end step 1
?>
</td>
<td>
<?php foreach ($item->fields as $field) : // step 1 : start the loop on the object
if (in_array('colonne4'.$tmpl, $field->positions)) : // step 2 : assigned to this group
?>
<?php echo $field->display ? $field->display : '';
endif; // end step 2
endforeach; // end step 1
?>
</td>
<td>
<?php foreach ($item->fields as $field) : // step 1 : start the loop on the object
if (in_array('colonne5'.$tmpl, $field->positions)) : // step 2 : assigned to this group
?>
<?php echo $field->display ? $field->display : '';
endif; // end step 2
endforeach; // end step 1
?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else : ?>
<div class="noitems"><?php echo JText::_( 'FLEXI_NO_ITEMS_CAT' ); ?></div>
<?php endif; ?>
Recommandation respecter totalement le nom des colones dans le xml et le fichier php
explication, ici on donne des noms à nos colonnes
Code:
<th id="flexi_title" scope="col">colonne1</th>
<th scope="col">colonne2</th>
<th scope="col">colonne3</th>
<th scope="col">colonne4</th>
<th scope="col">colonne5</th>
et ici on chage les valeurs par colonne
Code:
<td>
<?php foreach ($item->fields as $field) : // step 1 : start the loop on the object
if (in_array('colonne4'.$tmpl, $field->positions)) : // step 2 : assigned to this group
?>
<?php echo $field->display ? $field->display : '';
endif; // end step 2
endforeach; // end step 1
?>
</td>
Si vous vouler mettre 2 champs dans 1 colonne affecter les dans le template.
Il ne reste plus que la partie graphique. grâce au css
A+ et merci encore à doywan
Voilà une première ébauche n'hésitez pas pour toutes remarques !
a+