2

我使用了很多(大约 20 个)FrontPage 2003(别笑!)所谓的“站点参数”,它们本质上是变量。我将它们用于产品数量、电话时间等。

我正在升级到 Expression Web,它不支持更改或添加这些参数。另外,我想为我们的面包屑路径创建变量。(因此产品页面可能有面包屑:产品>此产品>屏幕截图。因此,如果我们决定重命名产品,我希望能够轻松替换它。

我不想做的事情:

  • 提供页面时替换该值。这会减慢速度并强制所有页面为 .aspx 等。我想坚持使用纯 html。
  • 使用 Javascript 替换值(同样的原因,一小部分浏览器没有启用 .js)。

我刚在想:

we have <variable.products_count>20</variable.products_count> 

但是......很容易在其中获得另一个标签和文本,就像在这个例子中发生的那样:

<variable.products_count> we have <strong>20</strong>  </variable.products_count>

现在,当我替换时,我正在替换标签和“我们有”。

4

2 回答 2

3

我不想做的事情:在提供页面时替换值。这会减慢速度并强制所有页面为 .aspx 等。我想坚持使用纯 html。

从技术上讲,您是正确的;使用执行页面与静态页面可能会影响性能。但是插入一些动态值的开销是如此微不足道,以至于它甚至不应该考虑到决策制定过程中。

最简单的:

HTML

<body>
    <div>Good old HTML</div>
    <div>A dynamic value: <%= SiteParameters.Foo %></div>
</body>

c#(或 VB.Net,或任何你喜欢的)

public static class SiteParameters 
{
    // This value could be pulled from a config file, a database, etc.
    public static readonly string Foo = "Hello World";
}
于 2012-07-17T03:28:06.207 回答
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}替换为prepost您的后处理文件将在post/目录中。)

于 2012-07-18T23:23:44.047 回答