NAPC Demo  

Essayez gratuitement NAPContent sur notre site demo !

Devenez membre

 et bénéficiez de toutes nos solutions!

Devenez membre

Découvrez les sites

qui utilisent NAPContent !

Voir
plus

Template de Champ

Introduction

Les champs peuvent être affichés de manières différentes en fonction de la vue ou la position à laquelle ils sont affectés :

  • item : Affichage du champ dans une vue item
  • list : Affichage du champ dans une vue liste d'item
  • module : Affichage du champ dans un module
  • adminlist : Affichage du champ dans la liste des items en administration
  • form : Affichage du champ dans une vue de formulaire
  • filter : Affichage du champ en tant que filtre
  • fieldlist : Affichage du champ dans une vue liste en tant que champ global pour l'ensemble des items de la liste.

Chaque champ peut posséder plusieurs layouts de différentes vues. 

Pour créer une nouvelle layout il faut créer un fichier xml associé à un fichier php. Les deux doivent porter le même nom, il n'y pas de contrainte concernant le nom hormis qu'il est recommandé de les saisir en minuscule, sans espace et sans caractères spécifiques. 

Structure du fichier XML

Exemple de la structure xml d'une layout de champ. 

<?xml version="1.0" encoding="utf-8"?>
<layout type="item,list,module,adminlist">
    <form>
        <fieldset name="params">
        </fieldset>
    </form>
</layout>

 Avant tout chaque layout doit indiquer avec qu'elle rendu elle est disponible, pour cela il faut ajouter l'attribut "type" à la clé "layout" et lui indiquer la liste des rendus avec lesquels le layout est compatible.

Valeurs possibles : item, list, module, adminlist, form, filter et fieldlist.

Vous pouvez ensuite ajouter tous les paramètres que vous souhaitez pour gérer l'affichage de votre champ. Les paramètres seront ensuite accesible dans la layout de cette manière : 

$field->params->get('param_name);

 Certains paramètres sont standards et peuvent avoir un impact sur l'utilisation du champ :

Dans la vue formulaire :

  • use_translator : permet de définir si la traduction Google est activée ou non
  • napclayouts : permet de choisir un layout pour l'affichage du champ. 2 sont disponibles par défaut : bootstrap 2 et bootstrap 3. En savoir plus.

Dans les filtres :

  • filter_format : Sélectionne le format d'affichage du filtre. En savoir plus.

Fichier de template

Exemple avec le rendu du champ texte pour l'affichage 

<?php
/** @var NapcItem $item */
/** @var NapcObjFieldTpl $field */
defined('_JEXEC') or die;
if ($field->value):
    $value = $field->value;
    echo NapcHelper::renderLayout('default', compact('item', 'field', 'value'));
endif;

 Par défaut les champs utilisent un layout "default" pour afficher leur valeur. Cela évite d'avoir des structures répétitives. 

Cela n'est pas obligatoire cependant, il aurait été tout à fait possible dans la layout du champ d'inclure le HTML final. exemple :  

<?php
defined('_JEXEC') or die; 
/** @var NapcItem $item */
/** @var NapcObjFieldTpl $field */
?>
<div class="napc-<?= $field->field_type ?> napc-field-<?= $field->name?>">
  <?php
    if ($field->params->get('display_label') && JFactory::getApplication()->isSite())
        echo '<label class="pull-left">' . $field->label . ': </label>';
    echo $field-value;
    ?>
</div>

 Exemple avec le rendu du champ texte pour la saisie : 

<?php
defined('_JEXEC') or die;
/** @var NapcItem $item */
/** @var NapcObjFieldTpl $field */
ob_start(); ?>
    <input type="text" name="<?= $field->fieldname ?>" id="<?= $field->fieldid ?>" value="<?= htmlentities($field->value) ?>"
           class="form-control <?= $field->params->get('plgtext-form-size', 'input-medium'); ?>" <?= $field->params->get('required', '0') ? 'required="true"' : ''; ?>
        <?= $field->params->get('plgtext-form-placeholder', '') ? 'placeHolder="' . JText::_($field->params->get('plgtext-form-placeholder', '')) . '"' : ''; ?>
        <?= $item->getUntranslatableAttribs($field); ?> />
<?= $item->getTranslateButton($field, $field->fieldid, @$item->original->fields[$field->name]->value); ?>
<?php
$content = ob_get_clean();
echo NapcHelper::renderLayout('form.' . $field->params->get('layout-file', 'bootstrap2'), compact('items', 'field', 'content')); 
×
Ce site utilise des cookies pour vous offrir le meilleur service. En continuant, vous acceptez de recevoir les cookies sur ce site.