Suchmodul und Mod_rewrite

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Suchmodul und Mod_rewrite

Beitrag von Freddy » Sa 5. Nov 2016, 18:07

Hallo,
habe eine Problem mit dem Suchmodul und beiße mir die Zähne daran aus. Ich denke mal das es am Mod_rewrite zusammen hängen tut.
Wenn ich im Suchfeld was eingebe wird folgende URL zusammengestellt.
meine.domein.de/suchergebnisse.html?idart=2&search_term=test
Die idart=2 in der URL gehört da nicht rein und ist die Idart von welcher Seite aus die Abfrage gestartet wurde.
Was muss ich tun um das zu beheben??
Benutze Standard-Suchmodul und Contenido 4.9.12 bei Hosteurope.
Seltsamerweise funktioniert die Suche bei einem anderen Provider richtig.

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von rethus » Mo 7. Nov 2016, 09:52

Warum gehst du davon aus, das die idart da nicht reingehört?
Hab das Suchmodul gerade nicht vor Augen, aber insofern es keinen anderen Handler-Artikel oder Ajax nutzt, sollte es korrekt sein,
das er die gleiche Page wieder aufruft, da er ja die Parameter übergibt, die für, die Suche erforderlich sind.

Hast du AMR mal deaktiviert und dann die Suche getestet... und wenn Sie geht die URL-Hops verfolgt?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von homtata » Mo 7. Nov 2016, 10:31

Vermutung:

Normalerweise dürften mit AMR die folgenden zwei Zeilen keinen Quellcode ausgeben:

Code: Alles auswählen

    {if $idart}<input type="hidden" name="idart" value="{$idart|escape}" />{/if}
    {if $idlang}<input type="hidden" name="idlang" value="{$idlang|escape}" />{/if}
Hast du irgendwas am Modul geändert, z.B. bei der Übergabe an Smarty, so dass $idart DOCH gesetzt ist und die Zeile erzeugt wird, obwohl sie ungültig sein sollte?

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von Freddy » Mo 7. Nov 2016, 12:51

Wenn ich in der URL die idart rausschneide funktioniert die Suche deswegen ist meine Vermutung das sie da nicht reingehört. Ich habe eigentlich nichts verändert. Was muss ich den verändern damit es da nicht erscheint?? Oder ist dieser Ansatz falsch??

Im Modul Output steht folgendes:

Code: Alles auswählen

<?php

/**
 * description: top search form
 *
 * @package Module
 * @subpackage NavigationSearchformTop
 * @version SVN Revision $Rev:$
 *
 * @author marcus.gnass@4fb.de
 * @copyright four for business AG <www.4fb.de>
 * @license http://www.contenido.org/license/LIZENZ.txt
 * @link http://www.4fb.de
 * @link http://www.contenido.org
 */

// assert framework initialization
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');

// get IDART of search result article
$searchResultIdart = getEffectiveSetting('sidebar_searchform', 'search_result_idart');
$searchResultIdart = cSecurity::toInteger($searchResultIdart);

// check if plugin mod_rewrite is enabled

$isModRewriteEnabled = class_exists('ModRewrite') && ModRewrite::isEnabled();

// show search form only if search result article is defined
$action = $method = $label = $submit = '';
if (0 < $searchResultIdart) {

    // determine action & method for search form
    if ($isModRewriteEnabled) {
        $action = cUri::getInstance()->build(array(
            'idart' => $searchResultIdart,
            'lang' => cRegistry::getLanguageId()
        ));
    } else {
        $action = 'front_content.php';
    }

    // determine how the search request should be transmitted
    $method = 'GET';

    // determine label to be shown inside input field
    $label = mi18n("NAVIGATION_SEARCHFORM_TOP_LABEL");
    // this translation is optional
    if (false !== strpos($label, 'Module translation not found: ')) {
        $label = '';
    }

    // determine label to be shown on submit button
    $submit = mi18n("NAVIGATION_SEARCHFORM_TOP_SUBMIT");
    // this translation is optional
    if (false !== strpos($submit, 'Module translation not found: ')) {
        $submit = '';
    }
}

// use template to display search form
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('action', $action);
$tpl->assign('method', $method);
$tpl->assign('label', $label);
$tpl->assign('submit', $submit);
if (!$isModRewriteEnabled) {
    $tpl->assign('idart', $searchResultIdart);
    $tpl->assign('idlang', cRegistry::getLanguageId());
}
$tpl->display('get.tpl');

?>
Und im HTML:

Code: Alles auswählen

{if 0 eq $action|trim|strlen}
{else}
        <h1>{$label}</h1>
        <div class="sidebar-box">
          <form action="{$action}" method="{$method}" id="sidebar_searchform">
{if $idart}           <input type="hidden" name="idart" value="{$idart|escape}" />
{/if}{if $idlang}
			  <input type="hidden" name="idlang" value="{$idlang|escape}" />
{/if}
           <input type="text" id="search_term" name="search_term" value="" />
		   <input type="submit" value="{$submit}" class="searchbutton" />
          </form>
		</div>
{/if}

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von homtata » Mo 7. Nov 2016, 14:23

Dann poste doch bitte mal, was als Formular im HTML-Quellcode steht...

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von Freddy » Mo 7. Nov 2016, 15:28

Code: Alles auswählen

        <div class="sidebar-box">
          <form action="/suchergebnisse/suchergebnisse.html" method="GET" id="sidebar_searchform">
           <input type="hidden" name="idart" value="1457" />
           <input type="text" id="search_term" name="search_term" value="" />
	   <input type="submit" value="Suchen" class="searchbutton" />
          </form>
	</div>
ok habe jetzt in den Modul-HTML das

Code: Alles auswählen

 {if $idart}<input type="hidden" name="idart" value="{$idart|escape}" />{/if} 
gelöscht und jetzt funktioniert es. Vielen Dank homtata

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Suchmodul und Mod_rewrite

Beitrag von homtata » Mo 7. Nov 2016, 23:39

Ich denke, dass es unglücklich ist, im Output die Variable "idart" ans Template zu übergeben, die dort per $idart aufgerufen wird. Ich habe den schweren Verdacht, dass die auch ohne Übergabe so global gültig ist ($idart ist ja bis dato im ganzen Contenido stets definiert, zumindest derzeit noch). Wahrscheinlich ist daher "if idart" im Smarty doch nie wirklich leer, während "if idlang" leer ist, weil die global eben anders heißt, nämlich $lang.

Daher ließe sich das Problem wohl auch umgehen, indem man die Variable unter anderem Namen übergibt, z.B. "idartResult" und auch so in der if-Schleife abfragt.
LG

Antworten