Help:Format template

From semantic-mediawiki.org
Format template
Sujet :
Utilise un modèle spécifique pour formater et afficher les résultats d'une requête
Fourni par :
Semantic MediaWiki
Ajouté dans la version :
0.7
Retiré depuis la version :
toujours supporté
Nécessite en plus :
rien
Nom du format :
template
Auteurs :
Markus Krötzsch
Catégories :
divers

Le format de résultat template est utilisé pour mettre en forme les résultats au travers d'un modèle.

Paramètres[edit]

Paramètre Alias Type Par défaut Description
propsep - texte , Le séparateur entre les propriétés d’une entrée de résultat
valuesep - texte , Le séparateur entre les valeurs pour une propriété de résultat
template - texte vide Le nom d'un modèle qui servira à afficher les résultats
named args namedargs oui/non no Nommez les arguments transmis au modèle
userparam - texte vide Une valeur passée dans chaque appel de modèle, si un modèle est utilisé
class - texte vide Une classe CSS supplémentaire à définir pour la liste
introtemplate - texte vide Le nom d'un modèle à afficher avant les résultats de requête, s'il y en a
outrotemplate - texte vide Le nom d'un modèle à afficher après les résultats de la requête, s'il y en a
sep - texte , Le séparateur entre les résultats

Utilisation des modèles pour une mise en forme personnalisée[edit]

Certains formats de résultats permettent l'utilisation de modèles wiki pour contrôler complètement l'affichage d'une requête intégrée. C'est vrai pour les formats template, list, ol (liste ordinaire) et ul (liste non ordonnée). Si un modèle est spécifié, chaque ligne de résultat est formatée en utilisant ce modèle. Le nom du modèle (en enlevant «Template:») est passé dans le paramètre template=, ainsi la requête s'écrit sous la forme générale:

{{#ask: … | format=template/list/ol/ul | template=nom_du_modèle }}

Pour chaque résultat de requête intégrée, SMW appelle le modèle référencé dans lequel le résultat et les valeurs à afficher sont utilisés pour initialiser les paramètres numétotés du modèle. Ainsi une requête qui afficherait trois valeurs sous la forme d'un tableau, initialisera trois paramètres du modèle. Ces valeurs peuvent être utilisées dans le modèle sous la forme habituelle en écrivant {{{1}}}, {{{2}}}, etc. Chaque paramètre se réfère à un "champ" ou une colonne du résultat qui serait affiché par la requête intégrée pour chaque page sélectionnée. Normalement le premier champ qu'une requête affiche est le titre de la page (voir (see ici), et donc, le paramètre {{{1}}} est le titre de la page, et {{{2}}}, {{{3}}}, ... sont les autres propriétés affichées par la requête. Plusieurs exemples sont donnés ci-après.

Les propriétés des modèles apportent une plus grande flexibilité dans l'affichage du résultat des requêtes en permettant:

  • la modification de l'ordre dans lequel les informations sont affichées, en omettant ou dupliquant des éléments;
  • l'affichage d'images qui dépendent des résultats de la requête;
  • la création de liens pour les valeurs des propriétés;
  • l'utilisation de feuilles de style CSS pour modifier la taille des caractères, l'alignement, la couleur d'arrière-plan, etc. et selon les colonnes à l'intérieur des tableaux.

Si vous utilisez réellement un modèle pour ajuster l'apparence des liens, vous devrez probablement initialiser le paramètre | link=none | pour empêcher les résolutions automatiques de SMW vers le noms d'articles. On peut arriver à ce même résultat en choisissant le format brut (plain) pour toute ou partie des résultats, comme décrit dans Afficher des informations. Votre modèle devra ensuite ajouter [[ ]] autour de tout ce que vous voudrez considérer comme étant un lien.

Pour comprendre la manière de créer un modèle pour mettre en forme des résultats de requête, il est utile d'abord de voir ce quue donne le format format=table. Par exemple, des requêtes relatives à une page unique (comme celles que l'on utiliserait avec #show) cachent le titre de page de la page résultat, de sorte que le paramètre {{{1}}} se rapporte au premier élément affiché. En utilisant la forme ? ou en spécifiant n'importe quelle valeur pour mainlabel vous modifier ce comportement.

Exemples[edit]

Les exemples qui suivent utilisent tous Template:Query output demo qui comporte essentiellement le text wiki suivant:

{{{2}}} people squeeze into the {{{3}}} of {{{1}}}.

Les requêtes suivantes montrent les effets de ce modèle:

{{#ask: [[Category:City]] [[Area::+]] [[Population::+]] 
| ?Population=Inhabitants
| ?Area#km²=Size in km²
| format=template
| template=Query output demo
| limit=3
}}

Résultat: 783,364 people squeeze into the 219.00 km²84.56 sqmi <br /> of Amsterdam. 3,520,061 people squeeze into the 891.85 km²344.34 sqmi <br /> of Berlin. 1,080,394 people squeeze into the 405.02 km²156.38 sqmi <br /> of Cologne. ... further results

Dans l'exemple ci-dessus vous pouvez voir de quelle manière le modèle ignore n'importe quelle étiquette d'entête spécifiée dans la requête telle que «Size in km²». Cependant les valeurs affichées par le modèle utilisent les unités spécifiés dans ?Area#km²=Size in km², et elles respecteront d'une manière équivalente tous les formats d'affichage supportés (voir Affichage de l'information).

Ci-dessous nous avons une requête similaire mais triée selon la population et qui utilise format=ol pour produire une liste numérotée.

{{#ask: [[Category:City]] [[Area::+]] [[Population::+]] 
| ?Population
| ?Area#km²
| format=ol
| template=Query output demo
| limit=3
| sort=population
| order=desc
}}

Résultat:

  1. 7,825,200 people squeeze into the 1,706.80 km²659.00 sqmi <br /> of London. 
  2. 4,575,532 people squeeze into the 2,058.00 km²794.59 sqmi <br /> of Sydney. 
  3. 3,520,061 people squeeze into the 891.85 km²344.34 sqmi <br /> of Berlin. 

... further results

Si nous spécifions directement une page unique, alors les résultats de la requête n'incluent normalement pas la page elle-même, donc pour réutiliser le même modèle dans la requête suivante, nous devons dire à la requête d'afficher le titre de la page dans la première colonne, en ajoutant |?

{{#ask:
 [[Berlin]]
 |?Population
 |?Area#km²
 |format=template
 |template=Query output demo
}}

Résultat: 3,520,061 people squeeze into the 891.85 km²344.34 sqmi <br /> of Berlin. 

On peut obtenir la même chose en utilisant la fonction d'analyse <show>#show</show> bien que cela puisse ne pas être son utilisation principale:

{{#show:
 Berlin
 |?
 |?Population
 |?Area#km²
 |format=template
 |template=Query output demo
}}

Résultat: 3,520,061 people squeeze into the 891.85 km²344.34 sqmi <br /> of Berlin. 

Les modèles peuvent aussi inclure d'autres fonctions d'analyse comme des requêtes conditionnelles et non-triviales. Des exemples de formats de requête complexes sont données sur les pages suivantes (les liens externes peuvent changer):

  • Evènements à venir sur la page principale de semanticweb.org (en) : la section des évènements de cette page affiche uniquement certains événements majeurs. Chacun de ces événements est formaté avec un modèle qui utilise une autre requête intégrée et qui permet de retrouver les sous-événements (réunions de travail dans le même lieu, tutoriels, etc.) relatifs à cet événement particulier.
  • Les publications sur korrekt.org (en): toutes les listes de cette page sont créées avec des requêtes modélisées. Les conditions (#if et #ifeq) sont utisées pour changer le format d'un résultat en fonction de son type de publication et des données fournies (les publications majeures ont des titres en gras).

Règle concernant userparam (paramètres utilisateur)[edit]

Il est aussi possible d'ajouter un paramètre supplémentaire (unique) à la requête. Voir la page d'aide sur le paramètre userparam pour la réalisation.

Règles pour named args (arguments nommés)[edit]

Ce paramètre permet de spécifier que vous utilisez des arguments nommés, plutôt que des arguments indexés, dans le modèle de format.

Les exemples ci-dessus recherchent les valeurs du modèle en utilisant des notions comme {{{1|}}} mais dans le cas où named args est utilisé, les valeurs sont identifiées à la place, par des noms de variables comme {{{?Population|}}} ou {{{?Area|}}}. Si vous spécifiez une étiquette alternative pour la propriété recherchée, vous pouvez également utiliser ce mécanisme. Remarquez bien que le point d'interrogation est nécessaire, même si vous fournissez un nom alternatif.

Remarques

Pour accéder à {{{1}}} ou à {{{1|}}} en utilisant "named args=yes" vous devez nommer la sortie par défaut (page name aka {{{1}}}) avec:

| ?#=un_nom_quelconque

ou

| ?=un_nom_quelconque

Si en cliquant sur "résultats suivants" vous ne ramenez rien parce que le paramètre named args n'est pas reproduit ici, vous devrez probablement supprimer le paramètre searchlabel.

Affichage du lien concernant les résultats supplémentaires[edit]

En utilisant le paramètre 'template' , vous ne pourrez voir le lien 'résultats suivants...' si vous indiquez 'format=template' c'est à dire qu'il ne semble pas être opérationnel avec 'format=ol', par exemple.

Si vous créez une sortie tabulée avec un modèle vous pourriez avoir besoin d'utiliser les paramètres spéciaux introtemplate et outrotemplate pour vous assurer que 'résultats suivants...' marche correctement.

Limitations[edit]

Le modèle peut lui aussi exécuter une autre requête. Par défaut le nombre d'appels imbriqués ayant "format=template" est, néanmoins, limité à 2 (voir la page d'aide sur $maxRecursionDepth concernant la définition de la configuration). Exemple: la page A contient une requête intégrée qui utilise le modèle B, qui lui-même contient une requête intégrée qui utilise le modèle C. Le modèle C peut lui aussi contenir une requête, mais pas une qui utiliserait le modèle de format c'est à dire "format=template".

Exemples[edit]

Astuces associées[edit]



Cette page de documentation concerne toutes les versions de SMW depuis la 0.7 jusqu'à la version la plus récente.
      Autres langues : dezh-hans