[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[SOLVED] mit Aktion RexSeo Custom URL neu setzen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Max Smily
Beiträge: 29
Registriert: 13. Aug 2006, 14:51

[SOLVED] mit Aktion RexSeo Custom URL neu setzen

10. Okt 2013, 02:14

Hallo Leute,

ich möchte automatisiert speziell formatierte URLs für jeden Artikel erzeugen. Da RexSeo im Einsatz ist, soll das Feld RexSeo Custom URL in den Metadaten/Sonstiges gefüllt werden, ohne das der User diese Eingabe von Hand vornehmen muss.

Alle betroffenen Artikel werden über ein spezielles Modul befüllt, so dass ich an dieses eine Aktion anknüpfen kann, die immer passend ausgeführt wird.

Meine Aktion ist nachfolgend aufgeführt. Dort schreibe ich direkt in die DB die neu generierte RexSeo-Url rein. Mit dem Neugenerieren der Cachedaten für den Artikel versuche ich die Änderung wirksam zu machen. Das funktioniert aber leider so nicht. Vielleicht funkt RexSEO später nochmal dazwischen oder ich hab einen grundsätzlichen Denkfehler.

Weiß jemand, wie ich die Aktion dazu bewegen kann, die URL zu setzen, so dass diese sofort so wirksam wird, als würde man die Metadaten/Sonstiges manuell ändern und speichern?

Vielen Dank und viele Grüße
Max Smily

Code: Alles auswählen

<?php
$thisArticle = OOArticle::getArticleById($REX_ACTION['ARTICLE_ID'], $REX['CUR_CLANG']);
$catname = $thisArticle->getValue('catname');

$slice = OOArticleSlice::getSlicesForArticleOfType($REX_ACTION['ARTICLE_ID'], 16, $REX['CUR_CLANG']); 
$sliceElem = array(
  'object_id' => $slice->getValue(1),
  'plz'  => $slice->getValue(2),
  'ort'  => $slice->getValue(3)
);

$path = rex_parse_article_name(strtolower($catname));
$file = rex_parse_article_name(strtolower($sliceElem['object_id'].'-'.$sliceElem['plz'].'-'.$sliceElem['ort']));
$url = $path.'/'.$file.'.html';

$sql = new rex_sql;
$query = "UPDATE rex_article SET art_rexseo_url = '".$url."' WHERE id=".$REX_ACTION['ARTICLE_ID']." AND clang=".$REX['CUR_CLANG'];
$sql->setQuery($query);

rex_generateArticle($REX_ACTION['ARTICLE_ID']);

unset($thisArticle, $catname, $slice, $sliceElem, $path, $file, $url, $sql, $query);
?>

Max Smily
Beiträge: 29
Registriert: 13. Aug 2006, 14:51

Re: [SOLVED] mit Aktion RexSeo Custom URL neu setzen

10. Okt 2013, 22:32

Tja Leute,

zur Lösung des Problems musste ich in die Tiefen von RexSeo eintauchen. Nun weiß ich, dass es in class.rexseo_rewrite.inc.php eine Funktion gibt, die die RexSeo-Dateipfade generiert. Diese Funktion hab ich in meiner Aktion zusätzlich angestoßen und fertig war die Laube...

Code: Alles auswählen

<?php
...
rex_generateArticle($REX_ACTION['ARTICLE_ID']);
rexseo_manage_pathlist_events(array('extension_point' => 'ART_UPDATED'));
...
?>
Vielleicht hilft es ja jemandem.

Viele Grüße
Max Smily

Zurück zu „Allgemeines [R4]“