AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Gesperrt
Kickbanignore
Beiträge: 37
Registriert: Mi 20. Jan 2010, 11:13
Kontaktdaten:

AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Beitrag von Kickbanignore » Di 13. Aug 2013, 12:47

Hallo,

ich werwende bei meinen Websites immer das Plugin "Advanced Mod Rewrite".

Beim neusten Projekt hab ich jedoch Probleme und zwar folgende:

Installation und Inbetriebnahme war zuerst kein Problem, alles funktionierte. Wenn ich jetzt aber einen Navigationspunkt ergänze, bekommt dieser Navigationspunkt keine URL mehr im Frontend. Neu hinzugefügte Navigationspunkte und Seiten haben kein href-Inhalt mehr.

Wenn ich das AMR deaktiviere und die klassischen URLs im Stile von "front_content.php?idcat=2&lang=1" verwende, funktioniert alles.

Weiss jemand woran das liegen könnte?

Danke.


Edit: Ich verwende Contenido 4.8.14 und Advanced Mod Rewrite 0.5.4.


Edit 2: Mir ist noch was aufgefallen. Wenn ich AMR dann nochmal drüberinstalliere, haben alle bis dahin erstellten Seiten eine URL und funktionieren korrekt. Auch die, die davor keine hatten. Aber wenn ich dann erneut ein neuer Navigationspunkt erstelle, hat dieser wieder keine URL. Ich müsste also bei jeder Navigationsänderung AMR wieder neu installieren...


Edit 3: Scheint am Server zu liegen. Bei allen Projekten auf diesem Server (es sind 3 mittlerweile) hab ich das Problem. Bei der alten Website ist mir das bisher nie aufgefallen, da ich AMR erst am Ende installiert habe und seither nichts mehr an der Navigation geändert habe.

Es wird also wohl etwas an der Berechtigung sein, oder? Weiss da jemand Genaueres, was genau man für Rechte braucht, wenn man eine neue Navigationskategorie erstellt?

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Beitrag von xmurrix » Di 13. Aug 2013, 17:01

Hallo Kickbanignore,

das AMR-Plugin registriert sich für folgende Chains
  • Contenido.Action.str_newtree.AfterCall
  • Contenido.Action.str_newcat.AfterCall
  • Contenido.Action.str_renamecat.AfterCall
(siehe contenido/plugins/mod_rewrite/includes/config.plugin.php)

Diese Chains sollten jeweils von CONTENIDO ausgeführt werden
  • Contenido.Action.str_newtree.AfterCall: Code in Tabelle con_action.idaction = 9
  • Contenido.Action.str_newcat.AfterCall: Code in Tabelle con_action.idaction = 10
  • Contenido.Action.str_renamecat.AfterCall: Code in Tabelle con_action.idaction = 11
Dabei sollten auch folgende Funktionen vom Plugin aufgerufen werden:
  • Contenido.Action.str_newtree.AfterCall: mr_strNewTree() in contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php
  • Contenido.Action.str_newcat.AfterCall: mr_strNewCategory() in contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php
  • Contenido.Action.str_renamecat.AfterCall: mr_strRenameCategory() in contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php
Kannst das Ganze folgendermaßen prüfen:
  • Schaue nach, ob es die Chains überhaupt gibt, die solltest du in der contenido/includes/config.chains.php finden
  • Gibt es in contenido/plugins/mod_rewrite/includes/config.plugin.php Zeilen, in denen sich das Plugin für diese Chains registriert, z. B. mit $_cecRegistry->addChainFunction('Contenido.Action.str_newtree.AfterCall', 'mr_strNewTree'); und werden diese Zeilen auch ausgeführt (sie if-Bedingung am Anfang der Datei)?
  • Überprüfe, ob in der Tabelle con_action in den jeweiligen Datensätzen die Chains ausgeführt werden, da müsste sowas wie CEC_Hook::execute("Contenido.Action.str_renamecat.AfterCall", ...) drin stehen
  • Überprüe, ob die jeweiligen AMR-Funktionen in der contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php auch ausgeführt werden
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Kickbanignore
Beiträge: 37
Registriert: Mi 20. Jan 2010, 11:13
Kontaktdaten:

Re: AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Beitrag von Kickbanignore » Di 13. Aug 2013, 17:59

  • Die Chains habe ich alle gefunden in contenido/includes/config.chains.php.
  • Ja:

    Code: Alles auswählen

        // Add new tree function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_newtree.AfterCall', 'mr_strNewTree');
    
        // Add move subtree function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_movesubtree.AfterCall', 'mr_strMoveSubtree');
    
        // Add new category function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_newcat.AfterCall', 'mr_strNewCategory');
    
        // Add rename category function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_renamecat.AfterCall', 'mr_strRenameCategory');
    
        // Add move up category function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_moveupcat.AfterCall', 'mr_strMoveUpCategory');
    
        // Add move down category function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.str_movedowncat.AfterCall', 'mr_strMovedownCategory');
    
        // Add copy category function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Category.strCopyCategory', 'mr_strCopyCategory');
    
        // Add save article (new and existing category) function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Action.con_saveart.AfterCall', 'mr_conSaveArticle');
    
        // Add move article function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Article.conMoveArticles_Loop', 'mr_conMoveArticles');
    
        // Add duplicate article function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Article.conCopyArtLang_AfterInsert', 'mr_conCopyArtLang');
    
        // Add sync article function to Contenido Extension Chainer
        $_cecRegistry->addChainFunction('Contenido.Article.conSyncArticle_AfterInsert', 'mr_conSyncArticle');
    
    Ja, wird ausgeführt, mein Test-Echo wurde jedenfalls ausgegeben.
  • In der Tabelle con_action stehen so Sachen wie:

    Code: Alles auswählen

    $tmp_newid = strNewTree($categoryname, $categoryalias, $visible, $public, $idtplcfg);
    strRemakeTreeTable();
    CEC_Hook::execute("Contenido.Action.str_newtree.AfterCall", array(
        'newcategoryid' => $tmp_newid,
        'categoryname'  => $categoryname, 
        'categoryalias' => $categoryalias, 
        'visible'       => $visible, 
        'public'        => $public, 
        'idtplcfg'      => $idtplcfg,
    ));
    
    bei str_newtree, steht also drin, würd ich sagen.
  • Auch die Funktionen scheinen ausgeführt zu werden. Ich bin jedenfalls in der Funktion mr_strNewCategory(array $data) aus contenido/plugins/mod_rewrite/includes/functions.mod_rewrite.php gelandet (Echo-Test). Trotzdem weist die neue Kategorie auf der Website kein href-Inhalt auf. :(

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Beitrag von xmurrix » Mi 14. Aug 2013, 08:20

Hmm,

bei einem neu erstellten Artikel sollte in der Tabelle con_art_lang das Feld "urlname" einen Wert haben, also nicht leer sein.

Das Gleiche gilt für die Kategorie, in der der Artikel ist. Tabelle con_cat_lang sollte Werte in Feldern "urlname" und "urlpath" haben.

Du kannst auch testen, was genau passiert, wenn du einen einzelnen Link vom AMR-Plugin generieren lässt. Das AMR-Plugin muss dafür aktiv sein.

Erstelle ein Modul mit folgendem Code:

Code: Alles auswählen

<?php

// Enable AMR debug configuration
$mpDebugger = Contenido_mpDebug::getInstance();
$mpDebugger->setConfig(array('enable' => true));

// Build single URL
$url = Contenido_Url::getInstance()->build(array(
    'idart' => 123,
    'lang' => 1,
));

// Output build URL
echo "<pre>URL: " . print_r($url, true) . "</pre>";

// Output debugger data
echo $mpDebugger->getResults();

?>
Das Modul sollte der einzige Container in einem simplen HTML-Layout sein, z. B.:

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
    <head>
        <title>Testlayout</title>
    </head>
    <body>
<container id="1" name="Testmodule" types="Content" mode="optional" default="">Content 1</container>
    </body>
</html>
Rufe die Seite im Frontend auf und sehe nach, was der Debugger von sich gibt. Hoffentlich hilft das weiter...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

Kickbanignore
Beiträge: 37
Registriert: Mi 20. Jan 2010, 11:13
Kontaktdaten:

Re: AMR-Plugin - Neu erstellte Seiten bekommen keine URL

Beitrag von Kickbanignore » Mi 14. Aug 2013, 17:30

Das gibts ja nicht.

Jetzt funktioniert es. Ich habe keinerlei weitere Anpassungen gemacht, ich wollte das mit der Tabelle testen und habe deswegen direkt in der MySQL-DB die Tabelle beobachtet und der Wert wurde geschrieben.

Und auf einmal funktioniert auch auf der Website alles.

Vielleicht doch irgendein Cache-Problem des Servers?

Ich kann jetzt daher leider nicht sagen, was die Ursache war. :(


Vielen Dank für deine Hilfe. Ich meld mich, wenns doch auf einmal wieder nicht geht. ;)

Gesperrt