web-dev-qa-db-fra.com

Déclenchement onContentPrepare à partir de la vue Blog catégorie

J'ai trouvé cette page sur la façon d'implémenter un champ personnalisé dans l'article:

http://docs.joomla.org/Adding_custom_fields_to_the_article_component

et cela fonctionne bien, mais seulement dans la vue article.

Que dois-je faire d'autre pour lui montrer ce champ personnalisé dans chaque article, alors que dans category blog vue?

J'ai essayé d'ajouter:

$dispatcher = JDispatcher::getInstance();
JPluginHelper::importPlugin('content', 'plg_content_rating');
$results = $dispatcher->trigger('onContentPrepare', array('com_content.category', & $this->item, &$this->item->params, 0));

à mon category blog fichier de remplacement, mais cela n'a pas fonctionné.

Aussi dans components/com_content/views/category/view.html.php fichier, il y a une ligne comme celle-ci:

$results = $dispatcher->trigger('onContentPrepare', array ('com_content.category', &$item, &$this->params, 0));

Cela ne devrait-il pas déjà déclencher tous les plugins de contenu enregistrés?

La ligne similaire dans article's view.html.php , fonctionne bien à cette fin.

5
branquito

Cela dépend de votre intention.

Si vous utilisez onContentPrepare pour manipuler le balisage, vous devez utiliser la bonne portée. Votre MyPlugin :: onContentPrepare sera toujours déclenché si le plug-in est chargé et qu'un répartiteur déclenche "onContentPrepare".

Mais généralement, vous vérifierez par rapport à la portée comme

public function onContentPrepare($context, &$row, &$params, $page = 0)
{
    if (in_array($context, array('com_content.article'))
    {
        return true;
    }
}

Assurez-vous donc que vous utilisez les bonnes étendues.

Si vous souhaitez simplement afficher les données personnalisées dans un écrasement, vous pouvez simplement y accéder avec $ item.

2
Nils Rückmann