it-swarm.com.de

Wie werden die benutzerdefinierten Felder des Artikels in der Kopfzeile der Seite angezeigt?

Ich verwende die Standard-Protostar-Vorlage von Jommla. Ich habe benutzerdefinierte Felder für Artikel und möchte dieses benutzerdefinierte Feld in der Kopfzeile der Seite anzeigen, nicht im Artikel. Wie kann ich das erreichen?

2
Rahman Sharif

Sie müssen den Artikel mit dem Artikelmodell erhalten. Dann holen Sie sich die Felder mit FieldsHelper. Ein Nachteil hierbei ist, dass der Artikel hier nicht zwischengespeichert wird, sodass wir eine doppelte Abfrage erhalten.

// Check that we are on article view.
if ($option === 'com_content' && $view === 'article')
{
    $context = 'com_content.article';

    // Get the article.
    $article = JModelLegacy::getInstance('Article', 'ContentModel')->getItem();

    // Get article fields.
    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    $fields = FieldsHelper::getFields($context, $article);

    // We have the fields, do something, e.g.
    echo FieldsHelper::render($context, 'fields.render', array('context' => $context, 'item' => $article, 'fields' => $fields));
}
2
Sharky

1. Automatische Anzeige ausschalten

Sie möchten die automatische Anzeige auf der Registerkarte "Optionen" des Felds auf "Nicht automatisch anzeigen" setzen. Dadurch wird es im HTML-Text nicht als Teil des Artikels angezeigt.

2. Artikelüberschreibung erstellen.

Als Nächstes müssen Sie eine Außerkraftsetzung der Artikelansicht erstellen, falls diese noch nicht vorhanden ist. Kopieren Sie default.php und default_links.php aus components/com_content/views/article/tmpl/und fügen Sie sie in templates/YOUR_TEMPLATE/html/com_content/article/ein.

Diese Dateien überschreiben die Standarddateien für die Artikelansicht von Komponenten.

. Benutzerdefiniertes Feld zum HTML-Kopf hinzufügen

Um den Inhalt des benutzerdefinierten Feldes zum <head> Der Seite hinzuzufügen, müssen Sie die soeben erstellte Datei default.php bearbeiten.

Wenn Sie ein kanonisches Tag hinzufügen, sieht es ungefähr so ​​aus.

//Insert custom field into HTML head if not empty
foreach ($this->item->jcfields as $field) {
    //Replace X with the field ID number
    if ($field->id === 'X') {
        //Makes sure the field is not empty
        if (!empty($field->rawvalue)) {
            //Inserts the field content with markup into the HTML head
            $customField = '<link href="' . $field->rawvalue . '" rel="canonical" />';
            $document = JFactory::getDocument();
            $document->addCustomTag($customField);
        }
        continue;
    }
};

Sie müssen das richtige HTML-Markup in Ihrem Code angeben. Sie müssen $customField = '<link href="' . $field->rawvalue . '" rel="canonical" />'; Durch das richtige Markup ersetzen.

Wenn Sie beispielsweise einen Autor der Twitter-Karte einbeziehen möchten, verwenden Sie so etwas wie $ customField = 'rawvalue. '"/>';`

Beachten Sie auch: Sie müssen X durch die ID Ihres benutzerdefinierten Felds ersetzen.

Zuletzt würde ich $customField In etwas Relaventeres umbenennen.

2
D. Morell