Что бы далеко не ходить, сразу предложу вариант в общих чертах.
Имеем:
разделы Дом с ид 5002 и Квартира с ид=6015
поле optype c контрактом, где у нас 1-Продажа и 2-Аренда.
1. Заводим в языковые файлы переменные
LT_OPTYPE_NAME_G_0='Найти'
LT_OPTYPE_NAME_G_1='Купить'
LT_OPTYPE_NAME_G_2='Снять'
LT_TYPE_NAME_G_0='недвижимость'
LT_TYPE_NAME_G_5002='дом или дачу'
LT_TYPE_NAME_G_6015='апартаменты'
думаю логику именования проследить не сложно.
2. В шаблоне списка анализируем параметры запроса
{assign var=tid value=intval($_params.topic_id)}
{assign var=oid value=intval($_params.optype)}
3. Там же формируем тайтл
{if isset($LT_OPTYPE_NAME_G_{$oid})}
{$LT_OPTYPE_NAME_G_{$oid}}
{else}
{$LT_OPTYPE_NAME_G_0}
{/if}
{if isset($LT_TYPE_NAME_G_{$tid})}
{$LT_TYPE_NAME_G_{$tid}}
{else}
{$LT_TYPE_NAME_G_0}
{/if}
Упрощая или усложняя данный пример можно хорошо развлечься. А если не ограничиваться только заголовком а взяться еще и за описания...
ПС. Писанины будет много, но тут следует учесть, что если реализовывать этот метод продуманно, то вся писанина будет только на этапе проектирования. Дальше оно будет работать само изредка требуя коррекции, например при добавлении новых разделов. Поэтому никоим образом не рекомендую это для сайтов, которые "только начались" а скорее для тех, кто уже сформировался и хочет просто избавиться от лишних текстов, которые не очень важны, но которые нужно писать.
ППС. Не стоит пытаться впихнуть невпихуемое. Если вы решите делать интеллектуальные заголовки на большое количество параметров с нелинейной логикой, то вполне возможно, что в шаблоне вы просто запутаетесь. В таком случае будет иметь смысл вынести формирования заголовка в функцию в самом коде шаблона. Но даже там основная логика останется схожей.