2009-12-10 1 views
0

Этот код ниже не работает, потому что я вызываю разметку разметки два раза один внутри друг друга и используя одну и ту же глобальную переменную шаблона. Любой способ исправить сборку, чтобы я мог передавать локальную переменную Template?Любой способ исправить функцию разблокировки Rebol с помощью bind или что-то еще?

Template: {<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Free PHP Gallery - web-templates.nu</title> 
<meta name="Description" content="This is a template of a free php gallery." /> 
<meta name="Keywords" content="template, gallery, php, free" /> 
<link rel="stylesheet" href="gallery/style_gallery.php" type="text/css" media="screen" /> 
</head> 

<body> 

<!-- ##### Include your gallery class and gallery between the body-tags ##### 
# 
# To add images to your gallery, change the ADD-IMAGES.PHP 
# To change the look of the gallery, change the SETTINGS.PHP 
# 
##### --> 

<div class="gallery"> 
<%do %galleryview.cgi "" %> 
</div> 

<!-- ##### That's it, just copy and paste the line above ##### --> 

</body> 
</html>} 

print build-markup Template 
+0

Зачем вам нужно ссылаться на оба шаблона через слово «Шаблон»? Что заставляет вас использовать разные имена? –

+0

Кстати, почему вы задали свой вопрос, как будто есть проблема с функцией build-markup? Он делает то, что он должен делать. –

+0

Потому что это то, что означает инкапсуляция. Вот почему Local Var Context и пространство имен FUTURE изобретено в Rebol 3 no;) –

ответ

1

'bind-markup - это освежающе короткая функция. Это было бы относительно легко скопировать его в свой собственный сценарий и добавить параметр, который позволит вам пройти целевой контекст через:

build-markup: func [ 
    ... 
    /with scope [word! object!] 
] 

Тогда в функции 'eval где вычисляется загруженный код, изменить блок try [do val] - try [do bind load/all val any [:scope system/words]]. Я считаю, что это нужно делать.