diff --git a/language/en-GB/mod_articles.ini b/language/en-GB/mod_articles.ini index 7a9ced1a83f91..d7a2d7d0485d9 100644 --- a/language/en-GB/mod_articles.ini +++ b/language/en-GB/mod_articles.ini @@ -64,6 +64,8 @@ MOD_ARTICLES_FIELD_TITLEONLY_LABEL="Title Only (lists)" MOD_ARTICLES_FIELD_TITLE_HEADING="Header Level" MOD_ARTICLES_FIELD_TITLE_HEADING_NONE="None" MOD_ARTICLES_FIELD_TITLE_LABEL="Article Title" +MOD_ARTICLES_FIELD_TRIGGER_EVENTS_DESC="Enable this option to trigger three plugin events (afterDisplayTitle, beforeDisplayContent, afterDisplayContent) for each article in the results list." +MOD_ARTICLES_FIELD_TRIGGER_EVENTS_LABEL="Trigger Plugin Events" MOD_ARTICLES_INFO="Details" MOD_ARTICLES_OPTION_ASCENDING_VALUE="Ascending" MOD_ARTICLES_OPTION_CREATED_VALUE="Created Date" diff --git a/modules/mod_articles/mod_articles.xml b/modules/mod_articles/mod_articles.xml index 1ae7df1860f2f..bd0d2ad7fda07 100644 --- a/modules/mod_articles/mod_articles.xml +++ b/modules/mod_articles/mod_articles.xml @@ -344,6 +344,19 @@ + + + + + link = Route::_('index.php?option=com_users&view=login&Itemid=' . $Itemid . '&return=' . $return); } + $item->event = new \stdClass(); + + // Check if we should trigger additional plugin events + if ($params->get('trigger_events', 0)) { + $dispatcher = Factory::getApplication()->getDispatcher(); + + // Process the content plugins. + PluginHelper::importPlugin('content', null, true, $dispatcher); + + $contentEventArguments = [ + 'context' => 'com_content.article', + 'subject' => $item, + 'params' => $item->params, + ]; + + // Extra content from events + + $contentEvents = [ + 'afterDisplayTitle' => new Content\AfterTitleEvent('onContentAfterTitle', $contentEventArguments), + 'beforeDisplayContent' => new Content\BeforeDisplayEvent('onContentBeforeDisplay', $contentEventArguments), + 'afterDisplayContent' => new Content\AfterDisplayEvent('onContentAfterDisplay', $contentEventArguments), + ]; + + foreach ($contentEvents as $resultKey => $event) { + $results = $dispatcher->dispatch($event->getName(), $event)->getArgument('result', []); + + $item->event->{$resultKey} = $results ? trim(implode("\n", $results)) : ''; + } + } else { + $item->event->afterDisplayTitle = ''; + $item->event->beforeDisplayContent = ''; + $item->event->afterDisplayContent = ''; + } + // Used for styling the active article $item->active = $item->id == $active_article_id ? 'active' : ''; diff --git a/modules/mod_articles/tmpl/default_items.php b/modules/mod_articles/tmpl/default_items.php index c3c1a293c765b..4d77d7964e2fb 100644 --- a/modules/mod_articles/tmpl/default_items.php +++ b/modules/mod_articles/tmpl/default_items.php @@ -22,7 +22,7 @@