Include conditionnel |
Inclusion ASP d'un fichier ayant un nom variable |
|
 |
Comme vu précédemment sur la page Structure, il n'existe pas en ASP (avant IIS5) de fonction d'inclusion de fichiers équivalente à la fonction PHP include() . Alors traditionnellement on utilise une inclusion serveur (SSI) qui a le facheux inconvénient d'être réalisée AVANT l'exécution du code ASP nous empêchant ainsi d'inclure un fichier dont le nom aurait été "calculé" par le code... |
La petite procédure que je vous propose ci-dessous remédie à ce manque et pourrait être utilisée dans une gestion de skins par exemple.

| include.asp |  |  | |
| <% ' === INCLUSION ASP ===
sub include(fichier) dim Fnm,inF,code,asp,pt1,pt2 ' Création éventuelle de l'objet FSO if not isobject(FSO) then _ set FSO = Server.CreateObject("Scripting.FileSystemObject") ' Calcul du path long du fichier Fnm = server.mapPath(fichier) ' si le fichier existe if FSO.fileExists(Fnm) then set inF = FSO.openTextFile(Fnm,1,false) ' on lit tout son contenu code = inF.readAll inF.close ' on remplace les <%= par des <%response.write code = replace(code,"<%=","<%response.write ") code = replace(code,"<% =","<%response.write ") ' puis c'est selon... pt1 = 1 : pt2 = -1 while pt1>0 pt1 = instr(pt2+2,code,"<"&"%") ' on exécute tout ce qui est entre < % et % > if pt1>0 then response.write mid(code,pt2+2,pt1-pt2-2) pt2 = instr(pt1+2,code,"%"&">") asp = mid(code,pt1+2,pt2-pt1-2) execute asp ' et on affiche le reste else response.write mid(code,pt2+2) end if wend ' sinon msg d'erreur else response.write "pas trouvé " & Fnm end if end sub %> |
Utilisation
Pour l'utiliser il suffit simplement de l'invoquer (sans parenthèse puisque c'est une sub...:o)
<%include "monrep/page.asp"%>
|
Ou alors en calculant le nom du fichier
<%dir="monrep" : lang="fr" ' ... include dir & "/page_" & lang & ".asp" %>
|
Enfin par exemple dans une gestion de skins
<% skin = request.cookies("skin") if skin = "" then skin = "maunakea" ' ... include dir & "/skins/" & skin & "/top.asp" ' ... code général include dir & "/skins/" & skin & "/btm.asp" ' ... %>
|
Remarques
- Le fichier à inclure peut avoir n'importe quelle extension... le code ASP sera reconnu par les tags <% et %> spécifiques...
- Le fichier peut contenir du code HTML, du texte à afficher et du code ASP mélangés...
Enjoy !
Didier le
09/09/2004 (93 701 hits) |
|
|