webForumDet fria alternativet

Någon som vet hur dom har gjort?

ASP

7 svar · 410 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1

hittade en applikation: http://www.ultraapps.com/freecommunitywebportal.html

där dom har {variable} och som fungera rätt bra tycker jag.. har provat och försökt hitta just hur man gör det för att få igång en liknande sak själv utan något resultat. Skulle bli hyper glad om någon kunde hjälpa mig.

lite av koden är:

Set DBlocks = Server.CreateObject("Scripting.Dictionary")
Function SetVar(sName, sValue)
  if ParsedBlocks.Exists(sName) then
    ParsedBlocks(sName) = replace(replace(sValue, "{", "{"), "}", "}")
  else
    ParsedBlocks.add sName, replace(replace(sValue, "{", "{"), "}", "}")
  end if
End Function

har försökt det mesta att hitta just koden och förstå mig på den... men utan något resultat :(

Medlem sedan dec. 20003 887 inlägg
#2

Vad är det du ska förstå?

Och varför i hela friden görs replace-delarna? Det är ju samma som

if ParsedBlocks.Exists(sName) then
  ParsedBlocks(sName) = sValue
else
  ParsedBlocks.Add sName, sValue
end if

Det funktionen gör är att den lägger till eller uppdaterar data i ett dictionary object.

Medlem sedan maj 200010 687 inlägg
#3

Eller:

ParsedBlocks(sName) = sValue
Medlem sedan juni 20019 519 inlägg
#4

{ är : & #123;
... men dom har men jag får inte om vi säger :
SetVar "datum", date()

så om man skriver {datum} så skrivs date() ut.. problem 2 är att göra så att den läser av filen och gör checks... jag har gjort just nu split på { men om jag kan lista ut hur dom har gjort gör det smidigare.

Medlem sedan maj 200010 687 inlägg
#5

Något sånt här kan man göra:

<%
Option Explicit

Class Template
	
	Dim dicVar
	
	Private Sub Class_Initialize()
		Set dicVar = Server.CreateObject("Scripting.Dictionary")
		dicVar.CompareMode = 1
	End Sub
	
	Private Sub Class_Terminate()
		Set dicVar = Nothing
	End Sub
	
	Public Sub SetTemplateVariable(sName, sValue)
		dicVar(sName) = sValue
	End Sub
	
	Public Function MergeTextWithTemplate(sText)
		Dim k
		
		For Each k In dicVar.Keys
			sText = Replace(sText, "{" & k & "}", dicVar(k), 1, -1, 1)
		Next 'k
		
		MergeTextWithTemplate = sText
	End Function
	
End Class

Dim sTextFromDB
sTextFromDB = "Hej, dagens datum är: {datum}"

Dim objTemplate
Set objTemplate = New Template

objTemplate.SetTemplateVariable "datum", Date

Response.Write objTemplate.MergeTextWithTemplate(sTextFromDB)

Set objTemplate = Nothing
%>
Medlem sedan juni 20019 519 inlägg
#6

hmm.. tror detta kan fugera.. dock har jag templaten i filer (*.skn) fil... men det bör inte vara några problem.. read.all eller något sånt?

Medlem sedan maj 200010 687 inlägg
#7

Jo, textfromdb-variablen får hämtas från en fil istället. :)

Medlem sedan maj 200010 687 inlägg
#8

Ett sätt man skulle kunna integrera filhämtningen...

<%
Option Explicit

Class Template
	
	Private sTemplateBasePath
	Private dicVar
	
	Private Sub Class_Initialize()
		sTemplateBasePath = "E:\Projects\wF"
		Set dicVar = Server.CreateObject("Scripting.Dictionary")
		dicVar.CompareMode = 1
	End Sub
	
	Private Sub Class_Terminate()
		Set dicVar = Nothing
	End Sub
	
	Public Sub SetTemplateVariable(sName, sValue)
		dicVar(sName) = sValue
	End Sub
	
	Public Function MergeTextWithTemplate(sTemplateName)
		Dim fso, tso, sText, k
		
		Set fso = Server.CreateObject("Scripting.FileSystemObject")
		Set tso = fso.OpenTextFile(sTemplateBasePath & "\" & sTemplateName & ".skn")
		Set fso = Nothing
		sText = tso.ReadAll
		Set tso = Nothing
		
		For Each k In dicVar.Keys
			sText = Replace(sText, "{" & k & "}", dicVar(k), 1, -1, 1)
		Next 'k
		
		MergeTextWithTemplate = sText
	End Function
	
End Class

Dim objTemplate
Set objTemplate = New Template

objTemplate.SetTemplateVariable "datum", Date

Response.Write objTemplate.MergeTextWithTemplate("template")

Set objTemplate = Nothing
%>

template.skn:

Hej, dagens datum är: {datum}
257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
112 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)