fichier tpl c'est quoi ca!!

  • Auteur de la discussion Auteur de la discussion bigs32
  • Date de début Date de début
WRInaute occasionnel
j'essaie d'intégrer gallery2.Je commence regarder les codes .Je vois plein de fichier avec extention tpl.

Je comprends rien du tout .
Avez vous des idées ou des liens que je puisse me renseigner

merci d'avance
 
WRInaute accro
D'après le peu que j'en ai vu,
Les . tpl sont des fichiers templates appelés par des pages d'appel en PHP
Ce sont des pages classiques avec des balises prédéfinies qui appellent des fonctions PHP.
 
WRInaute occasionnel
nickargall a dit:
D'après le peu que j'en ai vu,
Les . tpl sont des fichiers templates appelés par des pages d'appel en PHP
Ce sont des pages classiques avec des balises prédéfinies qui appellent des fonctions PHP.
un exemple de code en tlp et j'aimerai insérer ce code
je sais pas si ca marche
<?php include ("monfichier.php"); ?>
je commence à apprendre le code avec ce lien :
http://codex.gallery2.org/

{*
* $Revision: 15690 $
* If you want to customize this file, do not edit it directly since future upgrades
* may overwrite it. Instead, copy it into a new directory called "local" and edit that
* version. Gallery will look for that file first and use it if it exists.
*}
<table width="100%" cellspacing="0" cellpadding="0">
<tr valign="top">
{if !empty($theme.params.sidebarBlocks)}
<td id="gsSidebarCol">
{g->theme include="sidebar.tpl"}
</td>
<script type="text/javascript">
{* hide the sidebar if there's nothing in it *}
// <![CDATA[
var el = document.getElementById("gsSidebarCol");
var text = el.innerText; // IE
if (!text) text = el.textContent; // Firefox
if (!text || !text.match(/\S/)) el.style.display = 'none';
// ]]>
</script>
{/if}
<td>
<div id="gsContent" class="gcBorder1">
<div class="gbBlock gcBackground1">
<table style="width: 100%">
<tr>
<td>
{if !empty($theme.item.title)}
<h2> {$theme.item.title|markup} </h2>
{/if}
{if !empty($theme.item.description)}
<p class="giDescription">
{$theme.item.description|markup}
</p>
{/if}
</td>
<td style="width: 30%">
{g->block type="core.ItemInfo"
item=$theme.item
showDate=true
showSize=true
showOwner=$theme.params.showAlbumOwner
class="giInfo"}
</td>
</tr>
</table>
</div>

{if !empty($theme.navigator)}
<div class="gbBlock gcBackground2 gbNavigator">
{g->block type="core.Navigator" navigator=$theme.navigator reverseOrder=true}
</div>
{/if}

{if !count($theme.children)}
<div class="gbBlock giDescription gbEmptyAlbum">
<h3 class="emptyAlbum">
{g->text text="This album is empty."}
{if isset($theme.permissions.core_addDataItem)}
<br/>
<a href="{g->url arg1="view=core.ItemAdmin" arg2="subView=core.ItemAdd" arg3="itemId=`$theme.item.id`"}"> {g->text text="Add a photo!"} </a>
{/if}
</h3>
</div>
{else}

{assign var="childrenInColumnCount" value=0}
<div class="gbBlock">
<table id="gsThumbMatrix">
<tr valign="top">
{foreach from=$theme.children item=child}

{* Move to a new row *}
{if ($childrenInColumnCount == $theme.params.columns)}
</tr>
<tr valign="top">
{assign var="childrenInColumnCount" value=0}
{/if}

{assign var=childrenInColumnCount value="`$childrenInColumnCount+1`"}
<td class="{if $child.canContainChildren}giAlbumCell gcBackground1{else}giItemCell{/if}"
style="width: {$theme.columnWidthPct}%">
{if ($child.canContainChildren || $child.entityType == 'GalleryLinkItem')}
{assign var=frameType value="albumFrame"}
{capture assign=linkUrl}{g->url arg1="view=core.ShowItem"
arg2="itemId=`$child.id`"}{/capture}
{else}
{assign var=frameType value="itemFrame"}
{capture assign=linkUrl}{strip}
{if $theme.params.dynamicLinks == 'jump'}
{g->url arg1="view=core.ShowItem" arg2="itemId=`$child.id`"}
{else}
{g->url params=$theme.pageUrl arg1="itemId=`$child.id`"}
{/if}
{/strip}{/capture}
{/if}
<div>
{if isset($theme.params.$frameType) && isset($child.thumbnail)}
{g->container type="imageframe.ImageFrame" frame=$theme.params.$frameType
width=$child.thumbnail.width height=$child.thumbnail.height}
<a href="{$linkUrl}">
{g->image id="%ID%" item=$child image=$child.thumbnail
class="%CLASS% giThumbnail"}
</a>
{/g->container}
{elseif isset($child.thumbnail)}
<a href="{$linkUrl}">
{g->image item=$child image=$child.thumbnail class="giThumbnail"}
</a>
{else}
<a href="{$linkUrl}" class="giMissingThumbnail">
{g->text text="no thumbnail"}
</a>
{/if}
</div>

{g->block type="core.ItemLinks" item=$child links=$child.itemLinks}

{if !empty($child.title)}
<p class="giTitle">
{if $child.canContainChildren && (!isset($theme.params.albumFrame)
|| $theme.params.albumFrame == $theme.params.itemFrame)}
{* Add prefix for albums unless imageframe will differentiate *}
{g->text text="Album: %s" arg1=$child.title|markup}
{else}
{$child.title|markup}
{/if}
</p>
{/if}

{if !empty($child.summary)}
<p class="giDescription">
{$child.summary|markup|entitytruncate:256}
</p>
{/if}

{if ($child.canContainChildren && $theme.params.showAlbumOwner) ||
(!$child.canContainChildren && $theme.params.showImageOwner)}
{assign var="showOwner" value=true}
{else}
{assign var="showOwner" value=false}
{/if}
{g->block type="core.ItemInfo"
item=$child
showDate=true
showOwner=$showOwner
showSize=true
showViewCount=true
showSummaries=true
class="giInfo"}
</td>
{/foreach}

{* flush the rest of the row with empty cells *}
{section name="flush" start=$childrenInColumnCount loop=$theme.params.columns}
<td>&nbsp;</td>
{/section}
</tr>
</table>
</div>
{/if}

{if !empty($theme.navigator)}
<div class="gbBlock gcBackground2 gbNavigator">
{g->block type="core.Navigator" navigator=$theme.navigator reverseOrder=true}
</div>
{/if}

{if !empty($theme.jumpRange)}
<div id="gsPages" class="gbBlock gcBackground1">
{g->block type="core.Pager"}
</div>
{/if}

{g->block type="core.GuestPreview" class="gbBlock"}

{* Our emergency edit link, if the user removes all blocks containing edit links *}
{g->block type="core.EmergencyEditItemLink" class="gbBlock" checkBlocks="sidebar,album"}

{* Show any other album blocks (comments, etc) *}
{foreach from=$theme.params.albumBlocks item=block}
{g->block type=$block.0 params=$block.1}
{/foreach}
</div>
</td>
</tr>
</table>
 
WRInaute occasionnel
finstreet a dit:
tu peux pas inclure du php dans du tpl
j'ai réussi en mettant ce genre de code !!enfin!!!
{php} require 'http://www.monsite.htm/pub.php'; {/php}

En tout cas le language smarty est assez chiant quand meme .
En plus l'éditeur comme dreamvewer ou psppad ne reconnait pas trop ce code .
 
WRInaute accro
initialement les templates ont été créés pour faire la séparation du code et du contenu : un vrai MVC :)
Dans les fait, on est quasi obligé, dès que l'on veut faire des boucles d'affichage, d'avoir un mélange de script de template, de html, voire même de php.
En clair un beau sac de noeuds :cry:
 
WRInaute accro
Bin non. J'ai un site qui fonctionne à partir d'un moteur de template et pas une ligne de code php dans mes tpl

Vive phpbblib
 
WRInaute accro
n'empêche que php ou pseudo-code propriétaire, cela alourdit quand même le code général d'un site et en plus, ce n'est pas parce qu'on remplace le php par du pseudo code que l'on arrive à faire une réelle séparation du code et de la vue. Le MVC reste une vue de l'esprit.
 
WRInaute accro
Je t'assure que ça change tout. Le jour où tu changes le design de ton site c'est là que tu prends la mesure du système ;)
 
WRInaute accro
le design de mon site, je le change avec des modifications dans mes fichiers css :wink:
mais c'est vrai que si on fait encore des designs à grands renforts de <table><tr><td> cela peut être intéressant.
Et c'est malheureusement souvent le cas :cry:
 
WRInaute discret
Leonick a dit:
Le MVC reste une vue de l'esprit.
Peut-être pour toi, mais certains savent ce que c'est et savent l'utiliser ... bref, ça facilite grandement le travail un tel framework, et ça permet d'ajouter/modifier des pages sans jamais toucher le code.
 
WRInaute accro
Mon site est entièrement basé sur du code sémantique (ce n'est pas celui de mon profil, bien que celui ci non plus n'utilise pas les tables pour la mise en forme). J'ai tout ce qui est mise en forme dans le CSS séparé. Je te parle de modifications de fond, de balises HTML.

Enfin tu fais comme tu veux ;)
 
WRInaute accro
Bh@Mp0 a dit:
Leonick a dit:
Le MVC reste une vue de l'esprit.
Peut-être pour toi, mais certains savent ce que c'est et savent l'utiliser ... bref, ça facilite grandement le travail un tel framework, et ça permet d'ajouter/modifier des pages sans jamais toucher le code.
pour ce que j'en ai vu dans différents scripts, j'ai des doutes.
Et en plus, je suis désolé, mais du pseudo-code reste du code, donc on mélange quand même du code html avec du code fonctionnel.
ET le mieux, pour modifier des pages sans toucher le code reste quand même de travailler avec des css externes
 
WRInaute accro
Ah oui, et quand tu ajoutes un champ de recherche ?
Quand tu modifies les organisations des formulaires ? ;)
Et encore une fois, pas de code dans mes TPL, juste des variables.
Exemple {nombre-de-commentaires}
 
WRInaute accro
milkiway a dit:
Ah oui, et quand tu ajoutes un champ de recherche ?
Quand tu modifies les organisations des formulaires ? ;)
Et encore une fois, pas de code dans mes TPL, juste des variables.
Exemple {nombre-de-commentaires}
variable :arrow: pseudo-code :arrow: du code quand même :wink:
 
WRInaute accro
finstreet a dit:
tu peux pas inclure du php dans du tpl


"Parfois" il est exécuté / interprété.

Des systèmes comme FSB l'autorisent à condition de placer un commentaire spécial pour inclure le code à l'intérieur.
 
WRInaute discret
les fichiers tpl

quand c'est bien géré c'est pratique pour pousser la personnalisation d'une application
je confirme, le php marche dans le tpl
http://www.pligg.com est construit ainsi et plein d'autres scripts bien sûr

je trouve que cette structure reste un compromis intermédiaire entre un script basé sur PEAR par exemple et du Joomla hacké :wink:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut