我使用了很多(大约20个)FrontPage 2003(不要笑!)调用“站点参数”,它们本质上是变量。我将它们用于产品数量,电话时间等。
我正在升级到Expression Web,它不支持更改或添加这些参数。另外,我想为Breadcrumbs路径创建变量。 (因此产品页面可能包含面包屑:产品>此产品>屏幕截图。 因此,如果我们决定重命名产品,我希望能够轻松地替换它。
我不想做的事情:
我在想:
we have <variable.products_count>20</variable.products_count>
但是 .....很容易在那里获得另一个标签和文字,如下例所示:
<variable.products_count> we have <strong>20</strong> </variable.products_count>
现在当我更换时,我正在更换标签和“我们拥有”。
答案 0 :(得分:3)
我不想做的事情:在提供页面时替换值。这会使事情变慢,并强制所有页面都是.aspx等。我想坚持使用简单的HTML。
从技术上讲,你是对的;使用执行页面与静态页面可能会影响性能。但是插入一些动态值的开销是微不足道的,甚至不应该考虑决策过程。
最简单:
<body>
<div>Good old HTML</div>
<div>A dynamic value: <%= SiteParameters.Foo %></div>
</body>
public static class SiteParameters
{
// This value could be pulled from a config file, a database, etc.
public static readonly string Foo = "Hello World";
}
答案 1 :(得分:0)
您的我们有问题的示例可以轻松地重写以解决问题:
<variable.products_count> we have <strong>20</strong> </variable.products_count>
为:
we have <strong><variable.products_count></variable.products_count></strong>
当然,我认为更容易的方法是稍微超出HTML语法,并选择文档中不太可能出现的变量名称:
we have <strong>@@PRODUCTS_COUNT@@</strong> ...
如果您有其中的几个,可以使用简单的文本替换工具(例如sed(1)
)一次性替换它们:
sed -e 's/@@PRODUCTS_COUNT@@/20/g'
-e 's/@@PRODUCTS@@/Products/g'
-e 's/@@SCREENSHOTS@@/Screen Shots/g' < inputfile > output.html
要自动执行多个文件,您可能需要编写一个小脚本:
s/@@PRODUCTS_COUNT@@/20/g;
s/@@PRODUCTS@@/Products/g;
s/@@SCREENSHOTS@@/Screen Shots/g;
并在所有文件上运行它:
for f in pre/*.html ; do sed -f /path/to/script < "$f" > "${f/pre/post}" ; done
(${f/pre/post}
将pre
替换为post
;后处理的文件将位于post/
目录中。)