Как я могу условно обрабатывать неопределенные переменные 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 -->