it-swarm.com.de

Wie kann ich die Einstellungen für die Bereinigung von Suchwörtern als Sprachüberschreibung anpassen?

Ich arbeite an einigen benutzerdefinierten Such-Plugins und habe eine zweiteilige Frage zur Datei administrator/components/com_search/helpers/search.php.

Ich möchte die Desinfektionseinstellungen anpassen, ohne die Kerndateien zu hacken.

Ich brauche $lower_limit = 1; Das Kernskript liefert den Wert 3 Und lautet:

$lower_limit = $lang->getLowerLimitSearchWord();

Ich habe die Referenz gefunden https://api.joomla.org/cms-3/classes/Joomla.CMS.Language.Language.html#method_getLowerLimitSearchWord . Es sagt mir:

Ganzzahl Die untere Ganzzahl für die Länge der Suchwörter (3, wenn für eine bestimmte Sprache kein Wert festgelegt wurde)

dies sagt mir jedoch nicht, wie/wo dieser Standardwert überschrieben werden soll. Ich nehme an, ich sollte so etwas wie COM_SEARCH_LOWER_LIMIT_SEARCH_Word=1 Oder so machen.

Frage 1. In welche Sprachüberschreibungsdatei muss ich schreiben und wie lautet die entsprechende Syntax?

Die nächste zu verstehende Einstellung ist $search_ignore = $lang->getIgnoredSearchWords();. Im Moment zeigt es mir eine Whitelist mit and, or und in.

Frage 2. Wie passe ich die Zeichenfolgen getIgnoredSearchWords() an?

Ich habe festgestellt, wo die Standardwerte gespeichert sind, möchte diese Datei jedoch nicht hacken: https://github.com/joomla-framework/language/blob/master/Tests/data/language/en- GB/de-GB.localise.php

Diese JSE-Frage ist praktisch ein Duplikat , erklärt jedoch nicht, wie diese Standardeinstellungen überschrieben werden können.

Ich soll nicht /language/en-GB/en-GB.localise.php Berühren, oder?

3
mickmackusa

Suchen Sie in derselben API-Dokumentation, die Sie verlinkt haben, nach Methoden mit dem Namen set<PROPERTY>Callback. Z.B. Um die Untergrenze zu überschreiben, verwenden Sie Joomla\CMS\Language\Language::setLowerLimitSearchWordCallback().

Ich soll /language/en-GB/en-GB.localise.php nicht berühren, oder?

Richtig. Dies sollte in einem System-Plugin erfolgen:

defined('_JEXEC') or die;

use Joomla\CMS\Plugin\CMSPlugin;

class PlgSystemExample extends CMSPlugin
{
    protected $app;

    public function onAfterInitialise()
    {
        $this->app->getLanguage()->setLowerLimitSearchWordCallback(array($this, 'setLowerLimitSearchWord'));    
    }

    public static function setLowerLimitSearchWord()
    {
        return 2;
    }
}

Sie können auch eine anonyme Funktion übergeben:

$this->app->getLanguage()->setLowerLimitSearchWordCallback(
    function()
    {
        return 2;
    }
);

Verwenden Sie zum Festlegen ignorierter Suchwörter setIgnoredSearchWordsCallback():

public function onAfterRoute()
{
    $this->app->getLanguage()->setIgnoredSearchWordsCallback(array($this, 'setIgnoredSearchWords'));
}

public static function setIgnoredSearchWords()
{
    return ['in', 'and', 'or', 'if'];
}

In Bezug auf Plugin-Ereignisse können Sie entweder onAfterInitialise() oder onAfterRoute() verwenden. Alles später wird nicht funktionieren. Verwenden Sie onAfterRoute(), wenn Sie Eingabevariablen verwenden müssen, z. um das Plugin auf bestimmte Seiten zu beschränken.

4
Sharky