From 67efe4ee7cce69e02dbf148ddc8dc6fbde745743 Mon Sep 17 00:00:00 2001 From: Fritz Michael Gschwantner Date: Mon, 11 Oct 2021 09:41:41 +0200 Subject: [PATCH] change template variable instead --- composer.json | 6 +++- .../ContaoChangeNewsMoreExtension.php | 26 ++++++++++++++++ src/EventListener/ParseArticlesListener.php | 29 ++++++++++++++++++ src/NewsHelper.php | 30 +++++++++++++++++++ src/Resources/config/services.yaml | 3 ++ src/Resources/contao/config/config.php | 5 ++++ .../contao/templates/news/news_latest.html5 | 28 ----------------- .../contao/templates/news/news_short.html5 | 24 --------------- 8 files changed, 98 insertions(+), 53 deletions(-) create mode 100644 src/DependencyInjection/ContaoChangeNewsMoreExtension.php create mode 100644 src/EventListener/ParseArticlesListener.php create mode 100644 src/NewsHelper.php create mode 100644 src/Resources/config/services.yaml create mode 100644 src/Resources/contao/config/config.php delete mode 100644 src/Resources/contao/templates/news/news_latest.html5 delete mode 100644 src/Resources/contao/templates/news/news_short.html5 diff --git a/composer.json b/composer.json index 66391a4..0fb91e1 100755 --- a/composer.json +++ b/composer.json @@ -18,8 +18,12 @@ "forum": "https://community.contao.org/de" }, "require": { + "php": "^7.1", "contao/core-bundle": "~4.4", - "contao/news-bundle": "~4.4" + "contao/news-bundle": "~4.4", + "symfony/config": "^3.4 || ^4.4 || ^5.1", + "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1", + "symfony/http-kernel": "^3.4 || ^4.4 || ^5.1" }, "require-dev": { "contao/manager-plugin": "^2.0" diff --git a/src/DependencyInjection/ContaoChangeNewsMoreExtension.php b/src/DependencyInjection/ContaoChangeNewsMoreExtension.php new file mode 100644 index 0000000..e32cc42 --- /dev/null +++ b/src/DependencyInjection/ContaoChangeNewsMoreExtension.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle\DependencyInjection; + +use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; + +class ContaoChangeNewsMoreExtension extends Extension +{ + public function load(array $configs, ContainerBuilder $container): void + { + $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.yaml'); + } +} diff --git a/src/EventListener/ParseArticlesListener.php b/src/EventListener/ParseArticlesListener.php new file mode 100644 index 0000000..25b5ff5 --- /dev/null +++ b/src/EventListener/ParseArticlesListener.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle\EventListener; + +use Contao\FrontendTemplate; +use Contao\Module; +use Contao\NewsModel; +use ContaoChangeNewsMoreBundle\NewsHelper; + +class ParseArticlesListener +{ + public function __invoke(FrontendTemplate $template, array $newsEntry, Module $module): void + { + if (empty($newsEntry['linktext'])) { + return; + } + + $template->more = (new NewsHelper())->getReadMoreLink($newsEntry['linktext'], NewsModel::findByPk($newsEntry['id'])); + } +} diff --git a/src/NewsHelper.php b/src/NewsHelper.php new file mode 100644 index 0000000..980e9eb --- /dev/null +++ b/src/NewsHelper.php @@ -0,0 +1,30 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace ContaoChangeNewsMoreBundle; + +use Contao\ModuleNews; +use Contao\NewsModel; + +/** + * Helper class to expose ModuleNews::generateLink() + */ +class NewsHelper extends ModuleNews +{ + public function __construct() {} + + public function compile() {} + + public function getReadMoreLink(string $linkText, NewsModel $news): string + { + return $this->generateLink($linkText, $news, false, true); + } +} diff --git a/src/Resources/config/services.yaml b/src/Resources/config/services.yaml new file mode 100644 index 0000000..af945cc --- /dev/null +++ b/src/Resources/config/services.yaml @@ -0,0 +1,3 @@ +services: + ContaoChangeNewsMoreBundle\EventListener\ParseArticlesListener: + public: true diff --git a/src/Resources/contao/config/config.php b/src/Resources/contao/config/config.php new file mode 100644 index 0000000..4be195b --- /dev/null +++ b/src/Resources/contao/config/config.php @@ -0,0 +1,5 @@ +archive->id ?> blockclass ?>" itemscope itemtype="http://schema.org/Article"> - - hasMetaFields): ?> -

author ?> commentCount ?>

- - - addImage): ?> - insert('image', $this->arrData); ?> - - -

linkHeadline ?>

- -
- teaser ?> -
- - hasText || $this->hasTeaser): ?> - linktext): ?> - - - - - - - \ No newline at end of file diff --git a/src/Resources/contao/templates/news/news_short.html5 b/src/Resources/contao/templates/news/news_short.html5 deleted file mode 100644 index 3d21eb0..0000000 --- a/src/Resources/contao/templates/news/news_short.html5 +++ /dev/null @@ -1,24 +0,0 @@ - -
- - hasMetaFields): ?> -

author ?> commentCount ?>

- - -

linkHeadline ?>

- -
- teaser ?> -
- - hasText || $this->hasTeaser): ?> - linktext): ?> - - - - - - -