ASP / VBscript execute("functienaam") geen return value?

Pagina: 1
Acties:

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 13-04 21:15
Hey luitjes,
met betrekking tot m'n CMS systeem het volgende probleem.

Uit de database komt de content.
Om modules in een pagina te laden gebruik ik tags welke gefilterd worden uit de content.
deze zien er uit als
##functienaam parameter1, parameter2## -> execute functie
%%bestandeteincluden%% -> server.execute functie
&&tekstbestandteincluden&& -> fileobject open + replace

Filteren van de tags is geen probleem en werkt perfect.

Probleem doet zich voor bij de ## optie. Hiermee roep ik een functie aan welke geinclude in een extern bestand staat.

De externe functie heet Portfolio.
In deze functie laad ik een aantal plaatjes en zorg ik ervoor dat deze netjes in een tabel komen.
De html-code hiervan komt in de return value van de functie portfolio

De aanroep van deze functie gebeurt in de maincontent door het filteren van de volgende string
##portfolio "dirnaam", 1, "jpg"##
verklaring van de functie is: portfolio(directorynaam, paginanummer, extensie)

De string moet worden uitgefilterd en vervolgens als functie worden uitgevoerd.
Hierna moet de tag uiteraard vervangen worden door de geparste functie.

Dit doe ik door de volgende code:
code:
1
2
content = replace(volledige tekst inclusief tags, functieoproep inclusief tags, functieoproep zonder tags)
' voorbeeld replace(" content balbla ##portfolio "directorynaam", 1, "jpg"## bablbal", "##portfolio "directorynaam", 1, "jpg"##", execute("portfolio "directorynaam", 1, "jpg"")

Ik wil dus in de volledige tekst de functieaanroep inclusief tags vervangen door de return value van de functie.

duidelijk? ok gaan we verder :)

de method execute zorgt ervoor dat een string geparst gaat worden.
voorbeeld:
code:
1
2
blaataap = "response.write ""ik ben een blaataap"""
execute(blaataap)


Het probleem is dat de de functie "portfolio para1, para2" wil executen en het resultaat wil replacen in de content.
Het probleem is dat de method execute alleen maar met subs kan werken en niet met functies.
En tenslotte geeft een sub geen return value en een functie wel.....

Help!!! ik wordt helemaal kierewiet :)
Iemand een idee?

groet,
Jeffrey

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

als het geen probleem is om de functienaam en parameters uit je content te filteren, moet je wel met deze functie uit de voeten kunnen: eval( expr )
Het is wel niet een nette manier van programmeren, maar voor jouw probleem zie ik ook niet 1-2-3 een andere oplossing zonder je structuur een beetje overhoop te gaan gooien.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:07

NMe

Quia Ego Sic Dico.

Wat wizzkizz zegt is inderdaad een van de weinige (de enige?) opties die je hebt bij dit probleem. Maar eval is evil en moet altijd vermeden worden, en datzelfde geldt IMO ook voor code in je database zetten. Dat kan altijd wel op een mooiere manier.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 13-04 21:15
ben al blij met 1 oplossing :) verhaal was blijkbaar te lang voor meer reacties >:)

eval zuigt, I know :X maarja, ik heb de boel iig aan de praat dus bedankt voor de goede raad. Ik zag even door de bomen het bos niet meer. :Y)

@nme: wat bedoel je eigenlijk met dat code in de db een 'slechte' oplossing is? Tot zover ik weet lijkt me dit de enige oplossing om een modulaire website op de bouwen... of je moet met voorgebakken templates werken

[ Voor 16% gewijzigd door kalechinees op 21-01-2006 23:57 ]


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

kalechinees schreef op zaterdag 21 januari 2006 @ 23:55:
ben al blij met 1 oplossing :) verhaal was blijkbaar te lang voor meer reacties >:)

eval zuigt, I know :X maarja, ik heb de boel iig aan de praat dus bedankt voor de goede raad. Ik zag even door de bomen het bos niet meer. :Y)

@nme: wat bedoel je eigenlijk met dat code in de db een 'slechte' oplossing is? Tot zover ik weet lijkt me dit de enige oplossing om een modulaire website op de bouwen... of je moet met voorgebakken templates werken
Het is inderdaad beter om met een template engine te werken en er zijn zeker andere en nettere manieren om een modulaire website op te bouwen dan de manier die jij hier gebruikt.

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 13-04 21:15
heb je eventueel wat informatie hierover? Kan geen kwaad om andere methoden te bekijken voor in de toekomst :)
Pagina: 1