Help:Use templates to create tabular output/fr

From semantic-mediawiki.org


Semantic extension(s): Semantic MediaWiki
Further extension(s):  -/-
Keyword(s): query · result format · table · template

Description:

La requête intégrée '#ask' est une manière polyvalente d'exploiter la puissance de Semantic MediaWiki sur votre site. Elle supporte différents formats de sortie, et inclue le format de sortie tabulée. Toutefois, le format avec tabulation peut s'avérer restrictif. Par exemple vous pourriez vouloir utiliser les valeurs des propriétés retournées par la requête pour construire des liens arbitraires ou du texte wiki sur chaque rangées de la table. Par exemple vous voudriez inclure une petite image sur chaque rangée de la table, ou utiliser la valeur dans une autre requête. Pour parvenir à ce niveau de contrôle supérieur sur la table résultante, vous devez utiliser le format de sortie 'template'.

Cet article explique comment utiliser le format de sorite du modèle pour obtenir une sortie tabulée basique. Vous devriez pouvoir adapter cet exemple à vos besoins spécifiques.

Etape 1, créez votre requête #ask comme d'habitude[edit]

Vous devriez déja savoir faire cela, n'est-ce pas ? Supposons que votre requête #ask ressemble à celle-ci:

{{#ask:  [[Category:City]]
| mainlabel=Name
 |?Has Population
 |?Has Area
 |format=table
 | limit=2
}}

Le résultat devrait être similaire à celui-ci:

NameHas PopulationHas Area
2166320938 5cfc9ec72a z.jpg
220px-Cherry Blossoms and Washington Monument.jpg
... further results

Remarquez que pour écrire la requête, nous avons précisé le format de sortie 'format=table'. C'est ce que nous voulions à l'origine mais nous allons l'adapter bientôt.

Etape 2, créez le modèle pour formater la table[edit]

Le modèle mettra en forme les lignes de la table (en utilisant le texte wiki), en donnant quelque chose comme ceci :

<includeonly>
 | {{{1}}} || {{{2}}} || {{{3}}}
 |-
</includeonly>

Vous devriez pouvoir reconnaître la syntaxe standard d'une table, tout comme la syntaxe modèle des variables, {{{n}}}.

Note: pour des raisons techniques, les balises englobantes <includeonly> sont nécessaires pour que le modèles fonctionne correctement. Appelons ce modèle "Template:Example table layout".

Ci-dessus nous voyons que le modèle formate simplement les rangées de la table. Ce qui signifie que nous avons encore à démarrer et à clore la table, et à définir l'entête des colonnes. La manière la plus facile de la faire est simplement d'entrer la syntaxe désirée de la table, avant et après la requête #ask.

La manière la plus sûre est de créer un modèle d'entête et un modèle de bas de table qui serviront à commencer et à terminer le tableau:

Entête
<includeonly>
{| class="wikitable sortable"
 ! Organization !! Country !! City
 |-
</includeonly>
Bas de page
<includeonly>
|}
</includeonly>

Etape 3, combinez la requête #ask avec les modèles[edit]

Assemblez le tout, le texte wiki résultat devrait ressembler à ceci :

{{#ask:
 [[Category:City]]
 [[Has image::+]]
 |?Has image
 |format=template
 |headers=show
 |link=none
 |template=Demo/Template/City/Image
 |introtemplate=Demo/Template/City/Image/Intro
 |outrotemplate=Demo/Template/City/Image/Outro
 |offset=0
 |limit=2
}}

Notez que introtemplate et outrotemplate ne font que rajouter la syntaxe appropriée d'une table avant et après les résultats de la requête #ask. La requête #ask est responsable de la génération du texte wiki des rangées de la table.

N'oubliez pas de changer le format de sortie de la requête en 'format=template', et de spécifier le modèle approprié pour la génération de la sortie ('template=Example table layout').

Si le travail a été correctement réalisé, le résultat devrait ressembler à quelque chose comme:

... further results

Exemple
https://www.semantic-mediawiki.org/wiki/Template:Demo/Template/City/Image

Etape 4, adaptez votre sortie tabulée[edit]

Now that this is working, you can edit the way the table rows are rendered. For example, lets create a template called "Template:Example table layout" with the following wiki text:

 | {{{1}}} || [[wikipedia:{{{2}}}|{{{2}}}]] || [[wikipedia:{{{3}}}|{{{3}}}]]
 |-


Replace this template name in the ask query ('template=Example table layout'), and we should have something like the following:


Conclusion[edit]

The above example, although rather trivial, shows the basics of using the 'format=template' to get tabular output. Some very basic customization of the tabular output is shown. This example could (and should) be improved in a number of ways, especially with respect to elegantly handling missing values (see parser functions). With these tools in hand, you should be able to create any number of complex tables to display your results, but don't forget to look at the excellent 'results format' extension to see if someone else has already implemented what you want to do.

Remarques[edit]

  • Forcer la définition "link=none" pour dissocier 'property-links' de la prorpiétés du type de page.

Bogues[edit]

Le tri par date dans la table des résultats peut poser des problèmes. Voir: