Hooks

Several hooks can be used to modify the behaviour of EXT:news.

Hooks

Domain/Repository/AbstractDemandedRepository.php findDemanded

This hook is very powerful, as it allows to modify the query used to fetch the news records.

Example

This examples modifies the query and adds a constraint that only news records are shown which contain the word yeah.

First, register your implementation in the file ext_localconf.php:

<?php
defined('TYPO3_MODE') or die();

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Domain/Repository/AbstractDemandedRepository.php']['findDemanded'][$_EXTKEY]
   = 'YourVendor\\Extkey\\Hooks\\Repository->modify';

Now create the file Classes/Hooks/Repository.php:

<?php

namespace YourVendor\Extkey\Hooks;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use \GeorgRinger\News\Domain\Repository\NewsRepository;

class Repository {

   public function modify(array $params, NewsRepository $newsRepository) {
      $this->updateConstraints($params['demand'], $params['respectEnableFields'], $params['query'], $params['constraints']);
   }

   /**
    * @param \GeorgRinger\News\Domain\Model\Dto\NewsDemand $demand
    * @param bool $respectEnableFields
    * @param \TYPO3\CMS\Extbase\Persistence\QueryInterface $query
    * @param array $constraints
    */
   protected function updateConstraints($demand, $respectEnableFields, \TYPO3\CMS\Extbase\Persistence\QueryInterface $query, array &$constraints) {
      $subject = 'yeah';
      $constraints[] = $query->like('title', '%' . $subject . '%');
   }
}

Hint

Please change the vendor and extension key to your real life code.

Controller/NewsController overrideSettings

Use this hook to change the final settings which are for building queries, for the template, …

Example

This examples modifies the settings by changing the category selection.

First, register your implementation in the file ext_localconf.php:

<?php
defined('TYPO3_MODE') or die();

$GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Controller/NewsController.php']['overrideSettings'][$_EXTKEY]
   = 'YourVendor\\Extkey\\Hooks\\NewsControllerSettings->modify';

Now create the file Classes/Hooks/NewsControllerSettings.php:

<?php

namespace YourVendor\Extkey\Hooks;

class NewsControllerSettings {

   public function modify(array $params) {
      $settings = $params['originalSettings'];
      $settings['categories'] = '2,3';

      return $settings;
   }
}

Hint

Please change the vendor and extension key to your real life code.