[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Suche bei Mehrsprachigkeit - 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/
sandmaus
Beiträge: 569
Registriert: 27. Apr 2006, 11:26
Wohnort: Dresden
Kontaktdaten: Website

Suche bei Mehrsprachigkeit

26. Sep 2006, 00:40

Liebe REDAXO Gemeinde,
ich setze derzeit ein deutsch-englisch-polnisch Portal auf und scheitere bei der Such-Option. Für die jeweiligen Sprachen sind im Backend sowohl auch in Frontend die charset=ISO-8859-2 bzw. auf charset=ISO-8859-1 einprogrammiert. Wenn ich die polnisch Variante einstelle, bekomme ich keinen Suchtreffer, obwohl das Wort vorhanden ist. Anbei sende ich mein Suchmodul-Ausgabe

Code: Alles auswählen

<?php
// Abrage Länge Suchbegriff

if (strlen(trim($_REQUEST["rexsearch"])) >= 3)
{

// UserStatus abfragen

    $userTyp='1';
    if ($FORM['USR_TYP'] != 0)
    {
    $userTyp = $FORM['USR_TYP'];
    }

    // echo $userTyp;

$search = new rex_search_index();
$search->searchIds = true;
$search->status = 1; // 1 => sucht nur in Online Artikeln, 0 => sucht nur in Offline Artikeln, '' => sucht Status unabhängig
$search->clang = 0; // optional
//$search->custom_where_conditions = " AND type_id <> 3"; // alle internen Type ID 3 werden nicht angezeigt
$search->surroundchars = 50; // Anzeige herum um den Suchtreffer
$search->sourround_start_tag = "<span class=\"treffer\">";
$search->sourround_end_tag = "</span>";
$result = $search->rex_search($_REQUEST['rexsearch']);

if (count($result)) 
{
echo "<p>Der Suchbegriff \"<span class=\"treffer\">".(trim($_REQUEST["rexsearch"]))."</span>\" wurde gefunden!</p>";
}

if (is_array($result))
{
  foreach ($result as $hit)
  {
    /*
     *   Verfügbare Variablen:
     *   $hit['id']
     *   $hit['name']
     *   $hit['clang']
     *   $hit['highlightedtext']
     *
     *   Alle Artikel/Kategorie Eigenschaften sind via OOF verfügbar, Beispiel:
     *
     *   $hit_art = OOArticle::getArticleById( $hit['id'], $hit['clang']);
     *   echo $hit_art->getUpdateUser();
     *   $hit_cat = OOCategory::getCategoryById( $hit_art->getCategoryId());
     *   echo $hit_cat->getName();
     *   $hit_type_id = OOArticle::getTypeById( $hit['id'], $hit['clang']);
     *   echo $hit_type_id->getTypeId();
     */

    $hit_art = OOArticle::getArticleById( $hit['id'], $hit['clang']);
    // echo $userTyp;

    /*
    Artikel normal ist ID 1
    User nicht angemeldet ist ID 1
    Artikel geschützt ist ID 3
    User angemeldet ist ID mindestens 3, z.B. bei ctypes main = 1, rechts = 2, geschützt = 3
    */

    if ($hit_art->getTypeID() <= $userTyp)
    {
    print '<p>';
    print '<a href='.rex_getUrl($hit['id'], $hit['clang']).'>';
    print $hit['name'];
    print '</a>';
    print '<br/>';
    print $hit['highlightedtext'];
    print '</p>';
    }
  }
}
else
{
  print '<p>';
  print "Nichts gefunden";    
  print '</p>';
}
}
else // IF Bedingung Länge Suchbegriff 
{
  print '<p>';
  print "Ihr Suchbegriff muß mindestens 3 Zeichen lang sein!<br>Bitte wiederholen Sie Ihre Suche!";    
  print '</p>';
}
?>
Gibts hier eventuelle Konflikte? Es besteht kein Login im Frontend.
Danke im Vorraus
Sandmaus

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

26. Sep 2006, 07:52

Hej,

ist das Charset auf der Webseite richtig eingestellt? Wird der Suchbegriff richtig übergeben? Wie steht der Begriff in der Datenbank? Dazu mußt du die Suchtabelle in der DB einsehen.

Wurde beim Indexieren der Artikel die polnischen Begriffe richtig übernommen?

vg Thomas

sandmaus
Beiträge: 569
Registriert: 27. Apr 2006, 11:26
Wohnort: Dresden
Kontaktdaten: Website

Suche

26. Sep 2006, 14:10

ich habe charset=ISO-8859-2 bei polnisch eingestellt. In die DB habe ich noch nicht reingeschaut. Für den Fall, das das Polnische Wort nicht richtig übergeben wurde, wie dann weiter?
Vielen Dank
Sandmaus

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Suche

26. Sep 2006, 14:23

Hej,
sandmaus hat geschrieben:Für den Fall, das das Polnische Wort nicht richtig übergeben wurde, wie dann weiter?
ich würde sagen das du erst einmal auf Fehler suchen gehen solltest. Also schreibe dir das Wort was gefunden wird auf. Wie sieht das Wort bei der Übergabe aus und wie ist es in der rex_search Tabelle gespeichert worden?

vg Thomas

sandmaus
Beiträge: 569
Registriert: 27. Apr 2006, 11:26
Wohnort: Dresden
Kontaktdaten: Website

bei

28. Sep 2006, 22:02

Hallo,
bei charset=ISO-8859-2 im backend wird das wort richtig in die DB eingetragen.
ich habe nun im frontend 3 sprachen und ein suchfeld, welches als template bei allen 3 sprachen eingebunden ist.
searchrex->clang ist auf 0, also deutsch im Suchmodul eingestellt.
Nun habe ichdie aktuelle Sprache abgefragt und entsprechend
searchrex->clang auf 0 oder 1 oder 2 gesetzt. Wenn ich in der deutschen Version ein polnisches wort eingebe, kommt gar nix.
Geht es überhaupt, das z.B. aus der englischen oberfläche ein deutsches wort gefunden wird oder muss der Nutzer erst auf die deutsche fahne klicken und dann sein deutsches suchwort eingeben?
Danke

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

29. Sep 2006, 01:42

Hej,

wenn du auf einer deutschen Seite mit iso-8859-1 etwas polnisches eingibst, dann wird der begriff entsprechend so übergeben. er wird also nicht mit iso8859-2 übergeben und kann somit auch keine übereinstimmung finden.


vg Thomas

sandmaus
Beiträge: 569
Registriert: 27. Apr 2006, 11:26
Wohnort: Dresden
Kontaktdaten: Website

was besagt der Befehl

30. Sep 2006, 11:44

Hallo,
was besagt der Befehl

Code: Alles auswählen

$search->clang = 0
im Suchmodul?
Muss ich diesen je nach aktueller Sprache setzen?

ist deutsch gewählt, dann
$search->clang = 0
ist englisch gewählt, dann
$search->clang = 1
ist polnisch gewählt, dann
$search->clang = 2

Danke

mb@WIT
Beiträge: 56
Registriert: 26. Sep 2006, 13:50
Wohnort: Nürnberg
Kontaktdaten: Website

12. Feb 2007, 14:51

Habe ein ähnliches Problem..

Verwende ebenfalls das Suchmodul in einer mehrsprachigen Seite.. von dem Suchformular aus wird die richtige Clang übergeben aber in der Suche offenbar immer nur mit 0 (in dem Fall Deutsch) gearbeitet.

Ergo bekomme ich deutsche Suchergebnisse bei der englischen Suche.

Muss ich das in dem Modul dynamisch eingeben per

Code: Alles auswählen

$search->clang = $REX[CUR_CLANG] 
z.b. oder sollte das automatisch gehen?

Grüße

EDIT: Wie oben verwendet funktioniert bei mir die Suche nun auch Sprachenspeziefisch
Wegener IT - Integration & Collaboration

Maidenaustria
Beiträge: 293
Registriert: 7. Mär 2006, 10:43
Wohnort: Österreich

13. Jul 2007, 13:27

Hallo!

Mit:

Code: Alles auswählen

<form action="<?php print rex_getUrl(508); ?>" method="get">
  <fieldset style="border:0; margin: 0; padding: 0;">
   <label for="search-input"></label>
   <input type="hidden" name="article_id" value="508"  />
   <input type="text" id="search-input" name="rexsearch" value="" size="12" />
   <input type="submit" id="search-btn" name="Suche" value="Suche">
  </fieldset>
</form>
dem Teil in meinem default-Template wird demnach nicht die aktuelle Sprache an das Modul übergeben....

wenn ich auf meiner Seite suche bekomm ich immer nur die deutschen Ergebnisse....
Wo muß ich da die aktuelle Sprache mitübergeben?
Im Modul selbst hab ich in der Ausgabe bereits auf:

Code: Alles auswählen

$search->clang = $REX[CUR_CLANG];
geändert....

Trotzdem bekomme ich nur deutsche Ergebnisse...

Maidenaustria
Beiträge: 293
Registriert: 7. Mär 2006, 10:43
Wohnort: Österreich

19. Jul 2007, 14:39

Neue Erkenntnis:

Sucht mal hier:
http://www.maidenaustria.at/redaxo/inde ... =1&clang=1 (Englische Seite)
nach "Wacken"...

Die Ergebnisse kommen auf Deutsch.
Danach in der URL nach der Artikel-ID:
&clang=1

einfügen und nochmals Enter...
dann kommen die Ergebnisse auf Englisch...
Irgendwie wird aus meinem Suchformular nicht die aktuelle Sprache mitübergeben...
:?:

mb@WIT
Beiträge: 56
Registriert: 26. Sep 2006, 13:50
Wohnort: Nürnberg
Kontaktdaten: Website

2. Aug 2007, 12:42

Damit das ganze funktioniert muss das Such-Formular ebenfalls die aktuelle Sprache mitsenden:

Code: Alles auswählen

<input type="hidden" name="clang" value="<?php print $REX['CUR_CLANG']?>" />
Wegener IT - Integration & Collaboration

ThomasS
Beiträge: 130
Registriert: 12. Apr 2007, 12:53
Wohnort: Friedberg

Suchfunktion bei Mehrsprachigkeit

14. Mai 2008, 10:26

Hallo!

habe R4 mit Utf-8, Mehrsprachigkeit.
Die Suche sucht und findet in allen Sprachen.
Auch das Einschränken auf eine Sprache über $search->clang = 0; oder $search->clang = 1; funktioniert.

Wie kann ich erreichen, dass die Suche automatisch merkt: "Aha, jetzt wurde die englische Flagge angeklickt, ich bin also auf in der englischen Version und soll nur dort suchen!"


Habe versucht, im Suchtmodul einzugeben:

Code: Alles auswählen

// Einschränken auf eine Sprache 
// $search->clang = 0;
    $search->clang = $REX[CUR_CLANG];

Funktioniert nicht.

Habe versucht, im default-Template anzugeben, wobei 197 der Name des Suchartikels ist, in das ich das Suchmodul eingebunden habe:

Code: Alles auswählen

<input type="hidden" name="clang" value="<?php print $REX['CUR_CLANG']?>" />

Funktioniert nicht. Momentan habe ich das im Default-Template stehen:

Code: Alles auswählen

<!-- Suchtemplate: ID der Suchergebnis-Seite hier eintragen: -->
<form class="search-form" action="index.php" method="get">
<fieldset style="border: 0px">


<!-- <input type="hidden" name="clang" value="<?php print $REX['CUR_CLANG']?>" /> -->
<input type="hidden" name="article_id" value="197" />
<input type="text" class="search-input" name="rexsearch" value="" size="16" /><br />
<input type="submit" class="search-btn" name="Suche" value="Suche " />
</fieldset>
 </form>                                  
<!-- Suchtemplate Ende -->

Natürlich habe ich den Suchindex erneuert, den Cache geleert usw.
Was sollte ich ändern?

Vielen Dank
und herzliche Grüße
Thomas

Zurück zu „Allgemeines [R3]“