Giter Club home page Giter Club logo

redaxo_url's Introduction

Url AddOn für REDAXO 5

Beschreibung

REDAXO 5 AddOn zur URL-Generierung für Daten aus den Datenbanktabellen (ehemals Url Control, ehemals Frau Schultze)

Features

  • Generieren von suchmaschinenfreundlichen URLs anhand von Datenbanktabellen und eines REDAXO-Artikels, z.B: www.example.org/artikel/datensatz/ anstelle von www.example.org/artikel/?id=1
  • Automatische Oberkategorien anhand von Relationen www.example.org/kategorie/datensatz/ möglich
  • Mit und ohne YForm-Tabellen nutzbar
  • Zusätzliche Methoden für <title />-Felder, SEO- und OpenGraph-Metadaten wie description und og:image
  • Integration in die sitemap.xml von YRewrite
  • Multi-Domain fähig
  • URLs werden vom Addon search_it erkannt und Inhalte indexiert

Installation

  • Via Install AddOn im Backend herunterladen
  • AddOn installieren und aktivieren

Hinweis: Benötigt yrewrite.

Beispiel: Filme

Normalerweise wird ein Film über eine Url wie /filme/?movie_id=1 geholt.

Mit dem AddOn ist es möglich Urls wie /filme/the-big-lebowski/ zu erzeugen.

Der REDAXO Artikel /the-big-lebowski/ selbst existiert dabei nicht. Es wird alles im REDAXO Artikel /filme/ abgehandelt. The Big Lebowski ist dabei der Titel eines Filmes, welcher in einer eigenen Datenbanktabelle hinterlegt wurde.

Url holen

Um die Url eines einzelnen Filmes auszugeben verwendet man:

echo rex_getUrl('', '', ['movie-id' => $movieId]);
Variable Beschreibung
movie-id ist der im Profil hinterlegte Namensraum
$movieId Datensatz-Id des Filmes

Id holen

Nach dem der Film mit der eigenen Url aufgerufen wurde (Darstellung der Detailseite), muss jetzt die dazugehörige Datensatz-Id ermittelt werden. Erst dann können die eigentlichen Daten aus der Tabelle abgerufen und ausgegeben werden.

// versuche die Url aufzulösen
$manager = Url\Url::resolveCurrent();
if($manager) {
    $movieId = $manager->getDatasetId();
}

Beispiel Code

<?php
use Url\Url;

$manager = Url::resolveCurrent();

if ($manager) {
    $movie = rex_yform_manager_table::get('rex_movie')->query()->findId($manager->getDatasetId());
    // oder wenn ModelClass genutzt wird
    $movie = Movie::get($manager->getDatasetId());
    if ($movie) {
        dump($movie);
    }
} else {
    $movies = rex_yform_manager_table::get('rex_movie')->query()->find();
    // oder wenn ModelClass genutzt wird
    $movies = Movie::getAll();
    if (count($movies)) {
        foreach ($movies as $movie) {
            echo '<a href="' . rex_getUrl('', '', ['movie-id' => $movie->getId()]) . '">' . $movie->getValue('title') . '</a>';
        }
    }
}

Zusätzliche Pfade aus Relationen bilden

Möchte man den Filmen Genres zuordnen, passiert dies meist über eine Relation zu diesen Kategorien. Die Urls dazu könnten dann so aussehen: /filme/komoedie/the-big-lebowski/

Zusätzliche Pfade für die Url

eigene Pfade an die Url hängen

Im Feld eigene Pfade an die Url hängen lassen sich zusätzliche Pfade eintragen, die als gültige Urls verwendet werden können. So ließe sich beispielsweise bei einem Film noch eine zusätzliche Seite über /filme/the-big-lebowski/zitate/ anzeigen. Dann muss in dem Textfeld einfach nur zitate eingetragen werden - ohne vorangestellten und abschließenden Schrägstrich.

Unterkategorien anhängen?

Es können an die erzeugte Url auch die Unterkategorien des Artikels angehangen werden Die Urls dazu könnten dann so aussehen: /filme/the-big-lebowski/schauspieler/

Schauspieler ist dabei eine Unterkategorie der Kategorie Filme innerhalb der Strukturverwaltung.

Beispiel: URLs neu generieren

Wenn Datenbanktabellen außerhalb des YForm-Table-Managers befüllt werden, greift der passende Extension Point nicht und die URLs werden nicht neu generiert. Dies lässt sich mit folgendem Code erledigen.

$profiles = \Url\Profile::getAll();
if ($profiles) {
    foreach ($profiles as $profile) {
        $profile->deleteUrls();
        $profile->buildUrls();
    }
}

Beispiel: Auslesen, über welchen Profil-Key der Artikel aufgerufen wurde / die URL generiert wurde

$manager = Url::resolveCurrent();
if ($manager && $profile = $manager->getProfile()) {
    dump($profile->getNamespace());
}

Extension Points

  • URL_PRE_SAVE
  • URL_PROFILE_RESTRICTION
  • URL_SEO_TAGS
  • URL_TABLE_UPDATED

URL_PRE_SAVE

Der Extension Point URL_PRE_SAVE gibt die Möglichkeit eine URL vor dem Speichern in der URL Tabelle zu manipulieren.

Beispiel Code URL_PRE_SAVE

rex_extension::register('URL_PRE_SAVE', 'rex_url_shortener');

/**
 * Kürzt URL für ALLE Profile indem es die Artikel und Kategorienamen aus der URL entfernt.
 * @param rex_extension_point $ep Redaxo extension point
 * @return Url Neue URL
 */
function rex_url_shortener(rex_extension_point $ep)
{
    $params = $ep->getParams();
    $url = $params['object'];
    $article_id = $params['article_id'];
    $clang_id = $params['clang_id'];

    // URL muss nur gekürzt werden, wenn es sich nicht im den Startartikel der Domain handelt
    if ($article_id != rex_yrewrite::getDomainByArticleId($article_id, $clang_id)->getStartId()) {
        $article_url = rex_getUrl($article_id, $clang_id);
        $start_article_url = rex_getUrl(rex_yrewrite::getDomainByArticleId($article_id, $clang_id)->getStartId(), $clang_id);
        $article_url_without_lang_slug = '';
        if (strlen($start_article_url) == 1) {
            // Wenn lang slug  im Startartikel nicht angezeigt wird
            $article_url_without_lang_slug = str_replace('/'.strtolower(rex_clang::get($clang_id)->getCode()).'/', '/', $article_url);
        } else {
            $article_url_without_lang_slug = str_replace($start_article_url, '/', $article_url);
        }

        // Im Fall $url ist urlencoded, muss Artikel URL ebenfalls encoded werden
        $article_url_without_lang_slug_split = explode("/", $article_url_without_lang_slug);
        for ($i = 0; $i < count($article_url_without_lang_slug_split); $i++) {
            $article_url_without_lang_slug_split[$i] = urlencode($article_url_without_lang_slug_split[$i]);
        }
        $article_url_without_lang_slug_split_encoded = implode("/", $article_url_without_lang_slug_split);

        $new_url = new \Url\Url(str_replace($article_url_without_lang_slug_split_encoded, '/', $url->__toString()));

        // Auf Duplikate prüfen
        $query = "SELECT * FROM ".\rex::getTablePrefix()."url_generator_url "
            ."WHERE url = '".$new_url->__toString()."'";

        $result = \rex_sql::factory();
        $result->setQuery($query);
        if ($result->getRows() > 0) {
            // FALSE zurückgeben, Duplikate sind nicht erlaubt
            return false;
        }

        return $new_url;
    }

    return $url;
}

URL_PROFILE_RESTRICTION

Mit diesem Extension Point kann man die Einschränkungen von außen beeinflussen.

Beispiel Code URL_PROFILE_RESTRICTION

Im nachfolgenden Beispiel werden Urls für News erzeugt, die erst 3 Tage später online gehen und damit bereits auch in der sitemap.xml erscheinen.

rex_extension::register('URL_PROFILE_RESTRICTION', function (\rex_extension_point $ep) {
    $restrictions = $ep->getSubject();
    $profile = $ep->getParam('profile');

    if ($profile->getTableName() === 'rex_ao_news') {
        $profile->addColumnName('online_from');
        $restrictions[] = [
            'column'              => 'online_from',
            'comparison_operator' => '<=',
            'value'               => date('Y-m-d', strtotime('+3 days')),
        ];
        $ep->setSubject($restrictions);
    }
});

URL_SEO_TAGS

Hiermit können die verschiedenen HTML-Tags nachträglich beeinflusst werden.

Beispiel

\rex_extension::register('URL_SEO_TAGS', function(\rex_extension_point $ep) {
    $tags = $ep->getSubject();
    dump($tags);
    $ep->setSubject($tags);
});

URL_TABLE_UPDATED

Dieser ExtensionPoint wird getriggert, sobald die Tabelle der Urls sich ändert.

Beispiel

\rex_extension::register('URL_PROFILE_RESTRICTION', function () {
});

SEO-Methoden

use Url\Seo;

$seo = new Seo();
echo $seo->getTags();

Eine Anpassung der einzelnen Tags kann über den Extension Point URL_SEO_TAGS erreicht werden.

Beispiel

use Url\Seo;
use Url\Url;

$seo = new Seo();
$manager = Url::resolveCurrent();
if ($manager) {
    \rex_extension::register('URL_SEO_TAGS', function(\rex_extension_point $ep) use ($manager) {
        $tags = $ep->getSubject();

        $titleValues = [];
        $article = rex_article::get($manager->getArticleId());
        $title = strip_tags($tags['title']);

        if ($manager->getSeoTitle()) {
            $titleValues[] = $manager->getSeoTitle();
        }
        if ($article) {
            $domain = rex_yrewrite::getDomainByArticleId($article->getId());
            $title = $domain->getTitle();
            $titleValues[] = $article->getName();
        }
        if (count($titleValues)) {
            $title = rex_escape(str_replace('%T', implode(' / ', $titleValues), $title));
        }
        if ('' !== rex::getServerName()) {
            $title = rex_escape(str_replace('%SN', rex::getServerName(), $title));
        }

        $tags['title'] = sprintf('<title>%s</title>', $title);
        $ep->setSubject($tags);
    });
}
$tags = $seo->getTags();

Weitere Tipps

Leere Einträge vermeiden

Werden URLs selbst erzeugt, z.B. über eine YForm-Tabelle, dann sollte das Feld oder die Feldkombination, aus der die URL generiert wird, nur einmal vorkommen (prüfen auf unique) und außerdem niemals leer sein (prüfen auf empty). Kommt das Feld oder die Feldkombination mehrfach vor, so wird ab der zweiten URL zusätzlich automatisch die ID des Datensatzes angehangen.

YForm-Formular auf einer von Url-AddOn erzeugten Url

Befindet sich ein Formular auf einer Seite, die über eine URL des URL-Addon aufgerufen wurde, so muss die Ziel-URL des Formulars angepasst werden.

$yform->setObjectparams('form_action', rex_getUrl('', '', [$manager->getProfile()->getNamespace() => $manager->getDatasetId()]));

oder

$yform->setObjectparams('form_action', Url::getCurrent());

Weiere Infos zu den Objekt-Parametern von YForm befinden sich in der YForm-Doku.

Einzelne Datensätze nicht in der sitemap.xml aufnehmen

Dazu kann man ein zusätzliches YFormfeld anlegen der das Indexieren speichert. Im Url-AddOn werden dann zwei Profile angelegt und auf das Index-Feld gefiltert. Das eine Profil erhält zusätzlich die Info "In Sitemap aufnehmen".

Debugging

  • Sind alle gewünschten Domains in YRewrite vollständig und korrekt angegeben, einschließlich separater 404-Fehlerseite?
  • Wurden Änderungen an der Datenbank vorgenommen, die sich mit dem Löschen des REDAXO-Caches. Datensätze, die außerhalb von REDAXO erstellt, verändert oder gelöscht werden, benötigen ein Auffrischen des Caches.
  • Sind die URL-Profile korrekt oder haben sich Änderungen am verknüpften REDAXO-Artikel oder der Struktur der Datenbankfelder ergeben?
  • Sind innerhalb der URL-Profile Einschränkungen vorgenommen worden? Bspw. können Datensätze gefiltert werden, die dann keine URL erzeugen. Die erzeugten URLs lassen sich im REDAXO-Backend überprüfen.

redaxo_url's People

Contributors

alxndr-w avatar danielweitenauer avatar dergel avatar dtpop avatar gharlan avatar interweave-media avatar lexplatt avatar marcohanke avatar nandes2062 avatar skerbis avatar staabm avatar tbaddade avatar tobiaskrais avatar xong avatar ynamite avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redaxo_url's Issues

Probleme in lokaler Entwicklungsumgebung

Hi,

ich habe nun, nachdem Issue #7 behoben wurde, die neueste Version aus Github gezogen.

Lokal arbeite ich hier seit kurzem mit Mamp, die "Detailseiten" leiten dort immer auf den Redaxo 404 Artikel. Auf dem Produktiv-Server werden die "Detailseiten" ohne Probleme angezeigt.

Hat das Addon eventuell Probleme mit abweichenden Ports? Lokal rufe ich die Seiten per http://beispielseite.dev:8888/ auf.

Gruß
Nico

Undefined Index for clang

Hi,

wenn ich mir eine URL ausgeben lassen will kommt bei mir folgender Fehler:
Undefined index: 1_xxx_rex_news_clang_id
redaxo/src/addons/url/lib/Url/Generator.php
(aktuelles generator.php aus dem Git ist eingebunden)

Somit kann ich natürlich auch meine URL nicht aufrufen.
Dieses Problem tritt sowohl lokal als auch live auf.

Ich habe meine Konfiguration via YRewrite vorgenommen (Domain für deutsche Sprache ist eingerichtet - htaccess gesetzt).

Versionen:

  • yRewrite 2.2.1
  • URL 1.0.0-Beta4

Verison 1.0.0-beta2 kann nicht installiert werden

AddOn url konnte aus folgendem Grund nicht installiert werden:
SQL error: Error while executing statement "SHOW COLUMNS FROM rex_url_generate"! SQLSTATE[42S02]: Base table or view not found: 1146 Table 'rex5basic3.rex_url_generate' doesn't exist

URL-Vorschau: Immer Domain dazu schreiben

Wenn man mehr als eine Domain in YRewrite hat, dann wird bei unterschiedlichen URL-Profilen mal die URL zum Artikel

  • mal als /folder/scheme, und http://domain2.de/folder/scheme/, oder
  • mal als http://domain1.de/folder/scheme, und /folder/scheme/ angezeigt

Je nachdem, mit welcher Domain man im Redaxo-Backend eingeloggt ist. Ist das so gewollt?

Call to a member function normalize() on null

Ich habe mir gerade ein neues Addon für die Ausgabe meiner Events geschrieben und wollte gern suchmaschinenoptimierte URLs haben. Dies lief bis vor kurzem super doch jedesmal wenn ich, nach der Re-Installation das redaxo_url Addons, den System-Cache lösche bekomme ich folgenden Fehler angezeigt.

"Error" thrown in /www/htdocs/w010b316/muenzberg.me/redaxo/src/addons/url/lib/Url/Rewriter/Yrewrite.php on line 127
Call to a member function normalize() on null

Sprach ID in Relationstabelle wird NICHT beachtet

In meinem Addon erzeuge ich URLs für Kategorien in mehreren Sprachen. Hier zwei Beispiele:
http://www.promitec.de/de/maschinen/einbauruehrwerke/
http://www.promitec.de/en/machines/industrial-agitators/

Maschinen dieser Kategorie haben z.B. folgende URLs:
http://www.promitec.de/de/maschinen/industrial-agitators/promi-individuelles-einbauruehrwerk/
http://www.promitec.de/en/machines/industrial-agitators/promi-customized-agitator/

Spannend ist, dass die deutsche URL der Maschine auf einmal den englischen Kategorienamen enthält obwohl in der Konfiguration festgelegt ist, dass die Relationstabelle eine Sprach-ID hat. Aber offentsichtlich wird diese nicht mit der Sprach-ID der Tabelle aus der die URLs erstellt werden verknüpft.

Hier der Code des Projektes: https://github.com/TobiasKrais/d2u_machinery/blob/master/install.php#L64
Zeilen 64 bis 90 installieren die entsprechenden Views und URL Schemata.

UrlGenerator::getId() um "Parameter für rex_getUrl" erweitern

Ich habe gerade den Fall, dass auf einer Seite ein Template an mehreren Artikeln eingebunden werden, die UrlGenerator::getId() verwenden. So kann es sein, dass UrlGenerator::getId() darin einmal die ID des Datensatzes aus tabelle_a bekommt, bspw. 5und einmal die des Datensatzes aus tabelle_b, bspw. auch 5

Ich möchte allerdings nur dann eine ID, wenn ich mich auch im korrespondierenden Artikel befinde, bspw.
UrlGenerator::getId('tabelle_a'). Das muss ich derzeit von Hand abfragen, bspw.:

$event_id = UrlGenerator::getId();
if($event_id && rex_article::getCurrentId() == 6) {

Fehler beim Installieren von 1.0.0-beta5

Hi, ich bekomme folgende Fehlermeldung (Erst-Installation, an zwei Projekten getestet):

AddOn url konnte aus folgendem Grund nicht installiert werden:
SQL error: Error while executing statement "SHOW COLUMNS FROM rex_url_generate_url"! SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db130654_7.rex_url_generate_url' doesn't exist

Benutzerdefinierte URL

Erhält der Redaxo Artikel einen benutzerdefinierten URL wird dieser im Rewrite (glaube ich) verändert; folgendermaßen:

produkt wird zu produk
produkte wird zu produkt

es wird jeweils der letzte Buchstabe weggetrimmt.

Sprache: wenn Artikel offline wird auf andere Sprache ausgewichen

Beispiel: Standardsprache ist Deutsch. Wenn ein Artikel, der für eigene URLs verwendet wird in Englisch Offline ist, wird die URL in Deutsch generiert.
Lösungsvorschläge:
a) Es werden gar keine URLs erstellt, da Artikel offline ist (das wäre mein Wunsch)
b) Es werden die URLs mit der korrekten Sprache erstellt.

trailing Slash

@tbaddade Gibt es eine Möglichkeit Trailing Slash zu entfernen? Brauche das dringend für ein Projekt, da sonst alte URLs kaputt gehen.

Bei Deinstallation wird die Tabelle nicht gelöscht

Hatte ein Update von irgendeiner alpha gemacht. Danach bekam ich diesen Fehler:

Error while executing statement " SELECT id,
article_id,
clang_id,
url,
table,
table_parameters,
relation_table,
relation_table_parameters
FROM rex_url_generate LIMIT 0,30"! SQLSTATE[42S22]: Column not found: 1054 Unknown column 'relation_table' in 'field list'

Reinstallieren hat nicht geholfen. Daher dacht ich mir, probiere ich es mal mit Deinstallieren und wieder Installieren. Hat auch nicht geholfen, da die Tabelle eben nicht gelöscht wird.

Notice in den Logs

25.10.2016 10:18:55 Notice  Undefined index: 1_xxx_rex_team_clang_id    
redaxo/src/addons/url/lib/Url/Generator.php
Zeile 69

Leere Einträge

Szenario:

  • Artikel domain.de/produkte/ ist ein Ziel-Artikel des URL-Plugins, die Artikel werden über domain.de/produkte/slug/ aufgerufen.
  • Datenbank-Eintrag Gummipunkt in rex_products wird mit leerem URL-Feld (hier: slug) befüllt
  • Daraufhin liefert domain.de/produkte/ (ohne slug-Wert, die Übersichtsseite) die id zum Datenbankeintrag Gummipunkt zurück.

Zu erwarten wäre, dass leere Eingaben grundsätzlich keinen Datenbanktreffer auslösen können.

(In der Hilfe könnte man desweiteren erwähnen, dass YForm für das URL-Feld (hier: slug) 2 Validierungen anwendet: unique und empty. Bei uns war empty nicht aktiviert.)

rex_getUrl() ohne Parameter liefert URL des Artikels, nicht der aktuellen URL

Szenario: Ein YForm-Formular, das das Formular an die aktuelle Seite absenden soll, die mit dem URL-Addon generiert wurde.

$yform->setObjectparams('form_action',rex_getUrl());

erwartetes Verhalten: Die URL der aktuellen Seite wird ausgegeben
tatsächliches Verhalten: Die URL des Artikels wird ausgegeben.

Noch schöner wäre es btw., wenn YForm direkt die korrekte URL bei aktiviertem Addon übernimmt, stattdessen wird man auf die 404er-Seite weitergeleitet.

Sitemap lastmod ist bei allen URLs gleich

Wenn ich einen Datensatz in der Tabelle ändere, ändert sich das lastmod Feld in der Sitemap bei allen Datensätzen. Wäre es möglich alternativ auf ein Feld in der Datenbank Tabelle zuzugreifen, die einen Unix-Timestamp enthält?

Zwei mal gleicher Artikel wird nur letzte Konfiguration bearbeitet

Ich habe eine Maschinendatenbank. Die Maschinen sind in Kategorien eingeteilt. Also habe ich zwei Konfigurationen:

  1. Eine um die URLs für die Kategorien der Maschinen zu generieren. Der "Parameter für rex_getUrl()" nennt sich hier "category_id".
  2. Eine um die URLs der Maschinen selbst zu generieren. Der "Parameter für rex_getUrl()" nennt sich hier "machine_id".
    Natürlich sind beide zu generierende URLs mit dem selben Artikel konfiguriert. Das Problem: es wird immer nur die letzte der beiden Konfigurationen bearbeitet, obwohl der Parameter einen anderen Namen hat.

Fehler bei URL-Generierung

Hallo,

ich versuche gerade das Addon in Verbindung mit YRewrite/YForm zum laufen zu bekommen. Folgendes Problem habe ich:

Ich erzeuge die Links folgendermaßen:

rex_getUrl(5, 1, ['id' => $this->attributes['id']]);

5 ist die Artikel ID die ich im URL Addon entsprechend zugewiesen habe, $this->attributes['id'] der gewünschte Datensatz.

Die generierten Links beginnen nun jedoch alle mit "://:80".

Die Redaxo-Installation läuft auf einer Subdomain. Muss ich hier noch etwas beachten?

meta title und description funktioniert nicht - yrewrite

Ich verwende yrewrite 2.2.1 und url 1.0.0-beta4 - die URL Generierung auf Basis einer erstellten Veranstaltungs DB funktioniert super - auch die Ergänzung der URLs in die Sitemap. Nur die SEO Generierung des meta titles und meta description will irgendwie nicht. Trotz Einstellung im Addon kommt nicht title und description aus den gewählten Spalte sondern immer noch vom Artikel. Hab ich etwas vergessen?
Als Ausgabe im header verwende ich
<?php $seo = new rex_yrewrite_seo(); echo $seo->getTitleTag().PHP_EOL; echo $seo->getDescriptionTag().PHP_EOL; echo $seo->getRobotsTag().PHP_EOL; echo $seo->getHreflangTags().PHP_EOL; echo $seo->getCanonicalUrlTag().PHP_EOL; ?>

Canonical-URL und hreflang-URL in yRewrite aktualisieren

Wenn ich mich in www.website.net/artikel/url-titel/ befinde, sollte yRewrite die aktuelle URL ausgeben und nicht den Container-Artikel www.website.de/artikel/

Gleiches gilt für generierte URLs, die unterschiedliche Sprachen haben. Wenn ich in
www.website.net/de/artikel/url-titel/ bin, sollte der hreflang-Eintrag von yRewrite www.website.net/en/article/url-title/ ausgeben.

mehrere Einschränkungen

Hallo Thomas, es wäre schon wenn man mehrere "Einschränkungen" haben könnte und diese noch mit AND und OR kombinieren könnte (z.B. "status=1 AND jahr >2016" oder "category=1 OR category=2")

Fehlermeldung

Rex frisch von Redaxo.org


"rex_functional_exception" thrown in /Applications/MAMP/htdocs/rex5basic/redaxo/src/addons/url/lib/Url/Url.php on line 693
Please install a rewriter addon and call Url::setRewriter(Rewriter $rewriter).

#0 /Applications/MAMP/htdocs/rex5basic/redaxo/src/addons/url/boot.php(18): Url\Url::boot()
#1 /Applications/MAMP/htdocs/rex5basic/redaxo/src/core/lib/packages/package.php(226): include('/Applications/M...')
#2 /Applications/MAMP/htdocs/rex5basic/redaxo/src/core/packages.php(55): rex_package->includeFile('boot.php')
#3 /Applications/MAMP/htdocs/rex5basic/redaxo/src/core/backend.php(105): include_once('/Applications/M...')
#4 /Applications/MAMP/htdocs/rex5basic/redaxo/src/core/boot.php(105): require('/Applications/M...')
#5 /Applications/MAMP/htdocs/rex5basic/redaxo/index.php(9): require('/Applications/M...')
#6 {main}

Kommt sofern yrewrite noch nicht installiert ist..

URL bei einer Sprache nicht erkannt

Wenn nur eine Sprache in Redaxo vorhanden ist, werden die generierten URLs in der pathlist.php mit der clang_id 0 abgespeichert. Es gibt aber keine rex_clang mit dieser ID.

YForm EP "delete" u.a.: Pathlist aktualisieren

In unserem Fall wurde die Pathlist nicht aktualisiert, wenn wir einen Datenbank-Eintrag gelöscht haben. Das wäre jedoch notwendig, da sonst alte URLs in der Pathlist bleiben. (ich weiß nicht, ob das grundsätzlich so ist, ist aber im Rahmen von #26 aufgefallen)

Fehler durch falschen Variablentypen / Kompatibilität mit structure_tweaks

Wenn die Pathlist im Backend neu generiert wird und man sich auf einer Seite befindet, die ein Modul enthält, dass das Addon aufruft, wird die Methode Generator::getUrlById aufgerufen. Zu diesem Zeitpunkt enthält die Variable Generator::$paths die gerade generierten Daten. Dadurch ist $articleIds[$articleId][$primaryId][$clangId] in dieser Schleife https://github.com/tbaddade/redaxo_url/blob/master/lib/Url/Generator.php#L534-L569 ein stdObject und kein Array, wodurch der Fehler Cannot use object of type stdClass as array geworfen wird.
Wenn ich vor der Schleife die Daten statt mit self::ensurePaths() mit self::$paths = \rex_file::getCache(self::$pathfile); zwingend neu lade, funktioniert es.
Der Fehler fiel mir im Zusammenhang mit dem online/offline Schalten eines Startartikels in den durch structure_tweaks verschobenen Metadaten auf.

Probleme bei URLs mit Relationen

Wir hatten heute bei einer Website den Fall, dass die generierten URLs des Schemas /artikel/relation/datensatz/ nicht funktioniert haben:

  • Im Frontend wurde /artikel/relation/datensatz/ ausgegeben
  • Diese URLs können korrekt aufgerufen werden (/artikel/), jedoch ohne Treffer in URLGenerator::getId();
  • Dadurch ist auch die ID des Datensatzes nicht bekannt und man kann nichts ausgeben.
  • In der sitemap.xml wurden viel zu viele URLs generiert, sowohl /artikel/relation/datensatz/ als auch /artikel/datensatz/relation/

Bei Bedarf können ich / @PixelPaul dir Zugang zur betroffenen Installation geben.

Fehler wenn yrewrite nicht installiert ist

Das Addon lässt sich installieren obwohl yrewrite nicht installiert ist.
Call to a member function getSitemapFrequency() on null

Der Hinweis: Please install a rewriter addon or deactivate the Url AddOn.
ist aufgrund der Scrollposition nicht sichtbar. -> Core-Issue
redaxo/redaxo#1098

sitemap.xml fehlerhaft

Hi,

sofern ich die erzeugten URLs mit in der sitemap.xml anzeigen lassen möchte wird die sitemap.xml nicht richtig ausgegeben.

Es werden zwei Leerzeichen am Anfang gerendert.

LG
Oliver

XML-Verarbeitungsfehler: XML- oder Text-Deklaration nicht am Beginn der Entität Adresse: http://abc.de/sitemap.xml Zeile Nr. 1, Spalte 3: <?xml version="1.0" encoding="UTF-8"?> --^

Eigenen Param für rex_getUrl definieren

Damit man beim Benutzen von rex_getUrl nicht mehr die Artikel-Id wissen muss.

Aus
rex_getUrl(4, '', ['id' => 5])

könnte zusätzlich dann
rex_getUrl('', '', ['news-id' => 5])
werden

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.