yakamara / redaxo_yrewrite

A multidomain URL rewrite engine for REDAXO
MIT License
56 stars 35 forks source link

Url einer Kategorie/Artikel direkt beeinflussen können #438

Open tbaddade opened 2 years ago

tbaddade commented 2 years ago

Ich habe

In dem Artikel Preisträger wird das Buch dargestellt. Jetzt wollte ich mit nachfolgenden Code versuchen, das der Artikel Preisträger gleich die Url preistraeger/2021 erhält. Das klappt, aber nur soweit bis der ArtikelCache oder auch das Umbenennen des Artikels erfolgt. Dann werden Urls für den Artikel wie ../index.php?article_id=12 erstellt.

Ich hatte mich bereits mit @gharlan geschrieben und wir sind zur Erkenntnis gekommen, dass es mit den aktuellen Bordmitteln nicht möglich ist, solch eine dynamisch Url zu generieren.

<?php
namespace Project;

use Project\Model\Book;
use Url\Profile;

class Scheme extends \rex_yrewrite_scheme
{
    /**
     * @param \rex_article         $art
     * @param \rex_yrewrite_domain $domain
     *
     * @return string|false
     */
    public function getCustomUrl(\rex_article $art, \rex_yrewrite_domain $domain)
    {
        if ($art->isStartArticle() && $profiles = Profile::getByNamespace('pdsb')) {
            foreach ($profiles as $profile) {
                $article = \rex_article::get($profile->getArticleId());
                if ($article->getId() === $art->getId() || $article->getCategoryId() === $art->getId()) {
                    dd($art);
                    $winner = Book::findWinner();
                    $winnerYearIdPair = $winner->toKeyValue('year', 'id');
                    return $art->getUrl() . '/' . array_key_first($winnerYearIdPair) . $this->suffix;
                }
            }
        }
        return parent::getCustomUrl($art, $domain);
    }