Зачастую юные разработчики очень не внимательно относятся к документации тех средств с которыми они работают. В этом случае начинают появляться мутированные строки кода в web приложении. Это очень плохо, это просто очень очень плохо.
Конечно все через это прошли, и на клепали свою десятку, а то и сотню костылей дабы заработало сцуко.
Вот тривиальная задача в рамках api 1с-Битрикс:
Нужно сделать 2 заголовка на странице сайта, первый устанавливается в <title>, а второй находится в хидере в прекрасном теге <h1>.
Если фишка ляжет то может и заработать. но зачастую нет. При установки заголовка окна меняется и в <h1>. Как быть? Как жить с этим?
Все придумано давно и за вас.
Смотрим документацию:
CMain::ShowTitle(
string property_name = "title",
bool strip_tags = true
)
property_name
Идентификатор свойства страницы, значение которого будет выведено в качестве заголовка
(если это значение задано например, с помощью функции CMain::SetPageProperty).
Необязательный. По умолчанию "title".
Что это значит? А значит это то, что можно спокойно определять 2 заголовка на странице. Специально сегодня поставил демо на редакции старт и что я вижу, все работает именно в таком режиме.
В хидере :
<title><?$APPLICATION->ShowTitle()?></title>
<h1><?$APPLICATION->ShowTitle(false)?></h1>
На главной странице определены заголовки:
$APPLICATION->SetPageProperty(«title», «Демонстрационная версия продукта «1С-Битрикс: Управление сайтом»»);
$APPLICATION->SetTitle(«Статьи»);
Вот и все, мораль сей басни такова. внимательно читаем хелп, там есть намного больше чем вы думаете.
чрезвычайно вредный подход.
Во-первых, заказчик жалуется «Никак не могу поменять заголовок на странице».
Во-вторых, программист, после Вас дорабатывающий проект, с проклятиями перебирает всю страницу (с компонентами, которые частично в хедере, частично в футере, частично во включаемых областях) в поисках нужного SetTitle().
Хотите вывести PageProperty — так и пишите: GetPageProperty(‘title’)?>
ShowTitle самая запутанная функция
$APPLICATION->SetPageProperty(«title», «Демонстрационная версия продукта «1С-Битрикс: Управление сайтом»»);
$APPLICATION->SetTitle(«Главная страница»);
echo ‘true’;
$APPLICATION->ShowTitle(true);
echo »;
echo ‘false’;
$APPLICATION->ShowTitle(false);
echo »;
echo ‘»»‘;
$APPLICATION->ShowTitle();
true
Главная страница
false
Главная страница
«»
Демонстрационная версия продукта «1С-Битрикс: Управление сайтом»
Еще один костыль Битрикса, по-моему.
Артемий Зайцев
разобрался. Там так:
function GetTitle($property_name = false, $strip_tags = false)
{
if($property_name!==false && strlen($this->GetProperty($property_name))>0)
$res = $this->GetProperty($property_name);
else
$res = $this->sDocTitle;
if($strip_tags)
return strip_tags($res);
return $res;
}
немного порезалось, но суть ясна, имхо
Подскажите, пожалуйста, почему при добавлении $APPLICATION->ShowTitle(false); в карточку товара у меня разезжается разметка страницы??? (1с bitrix управление сайтом) И второй вопрос: можно ли вывести название товара в деталях не из заголовка страницы? Примного благодарен заранее.
$APPLICATION->ShowTitle(false); должно быть не в самой карточке товара, а в шаблоне сайта (см демо шаблоны), если рвет верстку то проблема именно в верстке, вывести можно что угодно и где угодно :)
в шаблоне (в heder) все прекрасно выводит. но как только я эту функцию ставлю в детали карточки все криво. верстка — стандартный шаблон по умолчанию. может, подскажите как вывести название товара в деталях не пользуясь «title»?
А зачем туда ставить именно ее? Она должна работать только в heder если нужно из карточки установить заголовок то нужно использовать другую функцию http://dev.1c-bitrix.ru/api_help/main/reference/cmain/settitle.php
Для тех у кого подобная проблема — используйте в деталях товара echo $arResult[«NAME»] вместо $APPLICATION->ShowTitle();