webForumDet fria alternativet

Flera include gör det något?

ASP

12 svar · 392 visningar · startad av voigtann1

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

I tråden: http://www.webforum.nu/showthread.php?s=&threadid=115678&forumid=22

försöker jag få {mainpage} att fungera genom att mainpage är en funktion. Problemet är att jag har en include längst upp på sidan med alla funktioner. Om man nu skulle lägga in i reg.exp att include filen ska läggas in också.. kommer sidan gå mycket segare. Fast kommer man då om man har tex en funktion för menyn och mainpage i samma include fil laddas 2 gånger såsom den gör nu?

Medlem sedan juni 200032 967 inlägg
#2

Jag förstår inte vad du menar, men varför ska du inkludera filen med funktionerna två gånger?

Medlem sedan juni 20019 519 inlägg
#3

Om du kollar in http://voigt.se/ing2_test/ så när jag kör 1 st include fil melland <BODY> & <HEAD> taggen så tycker jag iallafall inte den funktionen ska köras.. men med resten av koden som finns i tråden ovan. Så laddas funktionen i include filen... vilket är konstigt tycker jag.

Medlem sedan juni 200032 967 inlägg
#4

Du har alltså en funktion i en includefil. Så långt är jag med. Varför kör du funktionen mer än en gång då?

Det verkar inte som att ditt språk är kompatibelt med mitt, för jag förstår aldrig vad du skriver. :)

En god jul får du ha i alla fall! :bire

Medlem sedan juni 20019 519 inlägg
#5

Okej... då försöker vi på nytt:

<!-- #include file="vpanel_scripts/functions.asp" -->
<HTML>
<HEAD>
<TITLE><%=title%> - powered by vPanel</TITLE>
<link rel="stylesheet" type="text/css" href="<%= DIRECTORY & cssfile%>">
<meta name="keywords" content="<%=metakeyword%>">
<meta name="description" content="<%=MetaDescript%>">
</HEAD>
<%
Set strconn = CreateObject("Scripting.FileSystemObject")

Function Free(f2)
  Set objRegExp = New regexp : objRegExp.Global = true : objRegExp.IgnoreCase = true

  objRegExp.Pattern = "mainpage}"
  f2 = objRegExp.Replace(f2,mainpage())

  free = f2
End Function

Set RecSet = strconn.OpenTextFile(server.mappath(DIRECTORY & "default.tpl"))

f1 = recset.readall
recset.close : set recset = nothing
arrtext = split(f1,"{")
for i = 0 to ubound(arrtext)
response.write free(arrtext(i))
next

' Close down the connection
set strconn = nothing
%>

Inte den bästa koden men ändå i vpanel_scripts/functions.asp har jag alla funktioner som används till sidan.

men med den kod som är ovan så gör sidan så att koden körs i även den fil jag har inkluderat i filen. dvs mainpage() funktionen körs på 2 ställen.. vilket jag inte vill. frågan är hur man ska placera all kod för att den ska bara köras en gång..

Har nog aldrig varit bra på att förklara till dig @nders :e god jul får du iallafall ha :bire :birp

Medlem sedan juni 200032 967 inlägg
#6

Om mainpage() körs på två ställen så beror det på att du kallar på den på två ställen. Kan du inte bara ta bort den ena? :)

Medlem sedan juni 20019 519 inlägg
#7

Det är det det roliga är... jag använder bara mainpage() en gång i functions.asp:

function mainpage()
  Set Obj = CreateObject("Scripting.FileSystemObject")
  If Obj.FileExists(Server.MapPath("pages/" & Trim(LCase(Request.QueryString("goto"))) & ".asp")) Then
    Server.Execute "pages/" & Trim(LCase(Request.QueryString("goto"))) & ".asp"
  Elseif Obj.FileExists(Server.MapPath("browser/htmlfiles/" & Trim(LCase(Request.QueryString("location"))))) Then
    Server.Execute "browser/htmlfiles/" & Trim(LCase(Request.QueryString("location")))
  else
    Server.execute "pages/news.asp"
  End if
  Set Obj = Nothing
end function

och sen i tpl filen:

<BODY BGCOLOR='#EEEEEE' leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<TABLE WIDTH='740' BORDER='0' HEIGHT='100%' CELLPADDING='4' CELLSPACING='1' ALIGN='CENTER' BGCOLOR='#FFFFFF'>
 <TR>
  <TD VALIGN='TOP' ALIGN='CENTER' STYLE='HEIGHT:50px'><IMG SRC='pic.asp?id=@logo.gif'></TD>
 </TR>
 <TR>
  <TD VALIGN='TOP' bgcolor='#CCCCCC' STYLE='height:1px'></TD>
 </TR>
 <TR>
  <TD VALIGN='TOP' STYLE='height:10px'>
   <table width=100%>
    <tr>
     <td>
      <FONT SIZE='2'><a href=''>Huvudsidan</a> </FONT>
      <FONT SIZE='2'>· <a href='?pageID=16'>Nyheter</a> </FONT>
      <FONT SIZE='2'>· <a href='?pageID=18'>Plutonen</a> </FONT>
      <FONT SIZE='2'>· <a href='?pageID=17'>Befattningsbeskrivning</a> </FONT>
      <FONT SIZE='2'>· <a href='?goto=pic_archive'>Bilder</a> </FONT>
      <FONT SIZE='2'>· <a href='?goto=admin/default'>Admin</a></FONT>
     </td>
     <td align='right'>
      <font size='2'><script language="javascript" src="muck_o_meter.asp?date=2004-11-12"></script></font>
     </TD>
    </tr>
  </table>
 </TR>
 <TR>
  <TD VALIGN='TOP' bgcolor='#CCCCCC' STYLE='height:1px'></TD>
 </TR>
<%server.execute("vpanel_scripts/banner.asp")%>
 <TR>
  <TD VALIGN='TOP'>{mainpage}</TD>
 </TR>
<tr>
<td valign='bottom'>
<table width='100%'>
<tr>
<td valign='bottom'><FONT SIZE='1'>Servern genererade sidan på <%Response.Write FormatNumber((Timer() - strStartTimer), 3)%> sekunder.</FONT></td>
<td valign='bottom' height='10' align='right'>
<img src='pic.asp?ID=msWindowsServer2003.gif'>&nbsp;
<img src='pic.asp?ID=vpanel.gif' alt='Powerd by V.panel'>
</td>
</tr>
</table>
</tD>
</TR>
</TABLE>

Sen har du default.asp filen redan... sökt i functions.asp då jag kanske har lagt in mainpage() på fler ställen men det finns inte.

Medlem sedan juni 20019 519 inlägg
#8

@nders:

   objRegExp.Pattern = "mainpage}"
  f2 = objRegExp.Replace(f2,mainpage())

Har en fråga ang den raden... eller hur så körs inte funktionen där utan den kallas som den ska. tycker det är konstigt att en funktion kör sig själv utan att ha blivit kallad på rätt ställe.

Medlem sedan juni 200032 967 inlägg
#9

Körs den inte där?

Jag kan ingenting om regexp, men jag hade gissat på att den körs där. Varför använder du regexp för att replacea i den funktionen? Jag hade använt "vanliga" replace, och satt citationstecken runt mainpage().

mvh

Medlem sedan juni 20019 519 inlägg
#10

kör nu:

Function Free(f2)
  f2 = replace(f2,"mainpage}",mainpage())
  free = f2
End Function

Samma problem.

Medlem sedan juni 200032 967 inlägg
#11

Jag förstår inte riktigt vad du håller på med, så det ska nog vara som du gjort. Jag får nog ta och lämna över till någon annan är jag rädd...

Medlem sedan juni 20019 519 inlägg
#12

Om inte du kan det så kan ingen :P om du själv testar koden så ser du resultatet... vilket är extremt konstigt... tror det kan hjälpas med en sub istället?

Medlem sedan juni 200032 967 inlägg
#13

voigtann1 skrev:

tror det kan hjälpas med en sub istället?

Den enda skillnaden på en sub och en funktion är att suben inte kan returnera något, i övrigt är det samma sak. Så; funkar det inte när du har det i en funktion, då funkar det inte i en sub heller.

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)