it-swarm.dev

Come posso impostare il titolo della pagina da un componente

Ho creato un componente 3.x utilizzando Component-Creator.com e voglio essere in grado di impostare il titolo della pagina sull'intestazione dell'articolo (preso dal componente stesso). Ho provato il seguente codice ma non funziona:

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

Questo è solo output:

JObject->heading

come titolo della pagina nel browser

6
RustyJoomla

Ok, l'ho risolto. Ho rimosso i segni "" intorno a $ this-> item-> come segue:

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

e ora funziona!

9
RustyJoomla

Un'alternativa alla rimozione delle virgolette è avvolgere l'intera variabile tra parentesi graffe:

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

Questo fa sì che PHP elabori l'intero pezzo come una variabile invece di elaborare semplicemente $this->item (che è un oggetto del tipo JObject, quindi l'output) seguito letteralmente da ->heading.

Nel tuo caso, le virgolette non sono necessarie, ma questo potrebbe essere utile per aggiungere una stringa letterale al contenuto della proprietà header:

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

Questo è in realtà per l'output dell'intestazione della pagina, ma lo stesso vale per il titolo del browser. Ho avuto questa situazione che si verifica più frequentemente con componenti di terze parti. Joomla memorizza questi valori quando li specifichi nella voce di menu, ma dipende dal componente se sono utilizzati o meno. Di seguito è riportato il codice che ho aggiunto ai miei componenti e, talvolta, le sostituzioni del modello. Se non hai familiarità con le sostituzioni dei template, dovresti leggere Come sovrascrivere l'output dal Joomla! Core prima.

Inserisci questo codice prima di qualsiasi altro codice HTML nel file di sostituzione del modello. Verifica se hai specificato di mostrare le intestazioni della pagina o meno e, in tal caso, lo utilizzerà, altrimenti utilizzerà qualunque sia il titolo del menu.

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

Per vedere come lo fa Joomla per impostazione predefinita, guarda 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