访问 ESI 标签中的 php 变量



目前正在尝试将清漆缓存系统的ESI包含功能与PHP项目一起使用。 在我的场景中,我需要访问 esi 标签内的 php 变量。 像下面这样...

 <p class="dt5">This article was read <esi:include src="http://localhost/live24/esi/viewCount" /> times. </p>

这是 esi 标签内的完整 URL,它工作正常,即从服务器获取读取计数,页面的其余部分从缓存中提供。 但是我怎样才能生成一个动态 URL,我可以传递给 ESI 标签。

我已经尝试过类似以下内容....

<?php $url = site_url() . "/esi/viewCount" ?>

<?php $url = "http://localhost/live24/esi/viewCount" ?>
<p class="dt5">This article was read <esi:include src="$(url)" /> times. </p>

因为$(variable_name)$(variable_name{key_name})是在 ESI 标签中添加变量的语法,但在访问 PHP 变量时似乎不起作用。

我也尝试过这样的事情...

<p class="dt5">This article was read<esi:include src="http://$(SERVER{NAME})/live24/esi/viewCount" /> times. </p>

这行得通。 表示我可以从 esi 标签内部访问超全局变量。

有没有办法访问 ESI 标签中的 PHP 变量或任何其他方法来生成要在 ESI 包含中使用的动态 URL。

找到了一个解决方案,实际上非常简单明了。 应该早点考虑一下。

首先是代码片段..

<p class="dt5">This article was read
  <esi:remove>
    <?php $esiUrl = "http://localhost/bdlive24/esi/viewCount"; ?>
  </esi:remove>
  <!--esi
    <esi:include src=<?php echo $esiUrl; ?> />
  -->
times</p>

这里的诀窍是引入<esi:remove>标签。 删除标签中的任何标记代码都将被忽略,PHP代码将被执行。因此,现在可以在 esi:remove 标签内生成任何动态 url 并将其绑定到 esi:include 标签中。

<!-- ... -->启用 ESI 处理时,此标记

将被清漆静默删除,如果禁用 ESI 处理,则此标记将起作用并使 esi:include 标记处于非活动状态。

任何有任何其他想法的人,请分享....

最新更新