Как я могу условно обрабатывать неопределенные переменные SSI, используя Apache?

Я хочу включить заголовок в кучу страниц, например так:

header.html:

<html>
  <head>
    <title>My site</title>
  </head>

Чтобы включить заголовок для конкретной страницы, я пытаюсь использовать переменную SSI, которую я установил на каждой странице:

page1.html:

<!--#set var="TITLE" value="first page" -->
<!--#include file="header.html" -->

Тогда я модифицирую header.html использовать эту переменную:

<title>My site - <!--#echo var="TITLE" --></title>

Это прекрасно работает, но, конечно, имеет неприятный эффект, что если TITLE не установлено, результат:

<title>My site - (none)</title>

Поэтому я пробую различные попытки условно echoв зависимости от того, является ли это none или нет (например, <!--#if expr="TITLE != \(none\)" --> ... <!--#endif-->)… Но, похоже, ничего не работает.

Похоже, это было бы довольно распространенным требованием. У кого-нибудь есть ссылка на рабочее решение?

3 ответа

Решение

ОК, решил сам. Для справки других:

<!--#if expr="${TITLE}!=''" -->

правильный синтаксис для использования. Имеет смысл, что вам не нужно проверять "(нет)", так как неопределенное текстовое значение может быть настроено; Я просто не понял, что произошло после проверки значения, а не раньше.

Для Apache 2.4 выражения изменились:

<!--#if expr="-z v('CONTENT_LANGUAGE')"-->
<!--#set var="CONTENT_LANGUAGE" value="en"-->
<!--#endif-->

Я успешно использовал это:

<!--#if expr="! $CONTENT_LANGUAGE" -->
<!--#set var="CONTENT_LANGUAGE" value="en" -->
<!--#endif -->
Другие вопросы по тегам