Как установить заголовок страницы из компонента

Я создал компонент 3.x, используя Component-Creator.com, и хочу, чтобы у меня была возможность установить заголовок страницы в заголовок элемента (взятый из самого компонента). Я пробовал следующий код, но он не работает:

$browserbar= "$this->item->heading";
$document = JFactory::getDocument();
$document->setTitle($browserbar);

Это только вывод:

JObject->heading

в качестве названия страницы в браузере

6 голосов | спросил RustyJoomla 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 03 Sep 2014 14:51:46 +0400 2014, 14:51:46

4 ответа


9

Хорошо, я решил. Я удалил отметки «» вокруг заголовка $ this-> item- & gt следующим образом:

$browserbar= $this->item->heading;
$document = JFactory::getDocument();
$document->setTitle($browserbar);

и теперь он работает!

ответил RustyJoomla 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 03 Sep 2014 15:08:58 +0400 2014, 15:08:58
7

Альтернативой удалению кавычек является обертывание всей переменной в фигурные скобки:

$browserbar= "{$this->item->heading}";

Это заставляет PHP обрабатывать весь фрагмент как одну переменную, а не просто обрабатывать $this->item (который является объектом типа JObject), следовательно, вывод), буквально следуя ->heading.

В вашем случае кавычки не нужны, но это может быть полезно для добавления литеральной строки в содержимое свойства заголовка:

$browserbar= "The heading is {$this->item->heading}.";
ответил David Fritsch 3 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 03 Sep 2014 20:13:16 +0400 2014, 20:13:16
1

Это фактически для вывода заголовка страницы, но то же самое относится к заголовку браузера. Эта ситуация чаще всего встречалась с сторонними компонентами. Joomla сохраняет эти значения, когда вы указываете их в элементе меню, но зависит от компонента, независимо от того, используются они или нет. Ниже приведен код, который я добавил к моим компонентам, а иногда и переопределяет шаблон. Если вы не знакомы с переопределениями шаблонов, вы должны прочитать Как переопределить вывод из Joomla! ядро .

Поместите этот код перед любым другим кодом HTML в файл переопределения шаблона. Он проверяет, указали ли вы, чтобы показывать заголовки страниц или нет, и если да, то он будет использовать это, в противном случае он будет использовать любое название меню.

<?php if ($this->params->get('show_page_heading',1)) : ?>
    <h1><?php echo  $this->params->get('page_heading') ? $this->params->get('page_heading') : JFactory::getApplication()->getMenu()->getActive()->title; ?></h1>
<?php endif; ?>

Чтобы узнать, как это делает Joomla по умолчанию, посмотрите на components\com_content\views\article\tmpl\default.php

<div class="item-page<?php echo $this->pageclass_sfx?>">
    <?php if ($this->params->get('show_page_heading', 1)) : ?>
    <div class="page-header">
        <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>
    </div>
    <?php endif;
ответил GDP 9 TueEurope/Moscow2014-12-09T22:33:16+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 22:33:16 +0300 2014, 22:33:16
-1

Ответ на ВВП правильный; однако, изменилось имя параметра. Вместо этого вы захотите использовать это:

<h1><?php echo $this->escape($this->params->get('page_title')); ?></h1>
ответил Paul S 16 MarpmWed, 16 Mar 2016 23:32:27 +03002016-03-16T23:32:27+03:0011 2016, 23:32:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132