web-dev-qa-db-ja.com

コンポーネントからページタイトルを設定する方法

Component-Creator.comを使用して3.xコンポーネントを作成しました。ページタイトルをアイテムの見出し(コンポーネント自体から取得)に設定できるようにしたいと思います。次のコードを試してみましたが、機能しません。

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

これだけの出力です:

JObject->heading

ブラウザのページタイトルとして

6
RustyJoomla

はい、解決しました。 $ this-> item-> headingの周りの ""マークを次のように削除しました:

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

そして今それは働いています!

9
RustyJoomla

引用符を削除する代わりに、変数全体を中括弧で囲むことができます。

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

これにより、PHPは、$this->item(タイプJObjectのオブジェクト、つまり出力)を処理するだけでなく、ピース全体を1つの変数として処理します。 ->headingによる。

あなたの場合、引用符は必要ありませんが、これは見出しプロパティの内容にリテラル文字列を追加するのにも役立ちます。

$browserbar= "The heading is {$this->item->heading}.";
7
David Fritsch

これは実際にはページヘッダー出力用ですが、ブラウザタイトルにも同じことが当てはまります。この状況は、サードパーティのコンポーネントで最も頻繁に発生しました。 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;
1
GDP