Доступ к переменной php внутри тега ESI

В настоящее время пытаюсь использовать функцию ESI для включения системы кэширования лака с проектом php. в моем сценарии мне нужно получить доступ к переменным php внутри тега esi. что-то вроде следующего...

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

Вот полный URL-адрес внутри тега ESI, и он работает нормально, т. е. получает счетчик чтений с сервера, а остальная часть страницы обслуживается из кэша. но как я могу создать динамический 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.

есть ли способ получить доступ к переменным php внутри тега esi или любой другой способ создать динамический URL для использования в esi include.

1 ответ

Нашел решение, и оно довольно простое и понятное на самом деле. должен был подумать об этом раньше.

сначала фрагмент кода..

<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 будет выполнен. Так что теперь возможно любое динамическое генерирование URL внутри тега esi:remove и связывание его внутри тега esi:include.

<!-- ... --> этот тег будет просто скрыт лаком, когда включена обработка ESI, а в случае отключения обработки ESI этот тег вступит в действие и сделает тег esi:include неактивным.

Если у вас есть какие-либо идеи, пожалуйста, поделитесь....

Другие вопросы по тегам