2 титла на странице как?… Элементарно Ватсон…

Зачастую юные разработчики очень не внимательно относятся к документации тех средств с которыми они работают. В этом случае начинают появляться мутированные строки кода в 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(«Статьи»);

Вот и все, мораль сей басни такова. внимательно читаем хелп, там есть намного больше чем вы думаете.

9 thoughts on “2 титла на странице как?… Элементарно Ватсон…

  1. чрезвычайно вредный подход.
    Во-первых, заказчик жалуется «Никак не могу поменять заголовок на странице».
    Во-вторых, программист, после Вас дорабатывающий проект, с проклятиями перебирает всю страницу (с компонентами, которые частично в хедере, частично в футере, частично во включаемых областях) в поисках нужного SetTitle().

    Хотите вывести PageProperty — так и пишите: GetPageProperty(‘title’)?>

    1. 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С-Битрикс: Управление сайтом»

      Еще один костыль Битрикса, по-моему.
      Артемий Зайцев

      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;
        }

  2. немного порезалось, но суть ясна, имхо

  3. Подскажите, пожалуйста, почему при добавлении $APPLICATION->ShowTitle(false); в карточку товара у меня разезжается разметка страницы??? (1с bitrix управление сайтом) И второй вопрос: можно ли вывести название товара в деталях не из заголовка страницы? Примного благодарен заранее.

    1.  $APPLICATION->ShowTitle(false); должно быть не в самой карточке товара, а в шаблоне сайта (см демо шаблоны), если рвет верстку то проблема именно в верстке, вывести можно что угодно и где угодно :)

      1. в шаблоне (в heder) все прекрасно выводит. но как только я эту функцию ставлю в детали карточки все криво. верстка — стандартный шаблон по умолчанию. может, подскажите как вывести название товара в деталях не пользуясь «title»?

      2. Для тех у кого подобная проблема — используйте в деталях товара echo $arResult[«NAME»] вместо $APPLICATION->ShowTitle();

Comments are closed.