suchmodul sprache

Gesperrt
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

suchmodul sprache

Beitrag von rene04 »

Hallo,

ich nutze das suchmodul,....hmmm keine ahnung woher ich das habe :( auf jeden fall bekomme ich es einfach nicht gebacken das ding so umzuschreiben das ich "Treffer" übersetzen kann :( wer weiß rat?

Code: Alles auswählen

<?php
echo "<table class='site' border=0 cellpadding=0 cellspacing=0>";
if($suche){
$suche = trim($suche);
$suchregexp = "(".str_replace(" ",")|(",$suche).")";
$s=ereg_replace("ü", "%FC",strtolower($suche));
$s=ereg_replace("ä", "%E4",$s);
$s=ereg_replace("ö", "%F6",$s);
$s=ereg_replace("ß", "%DF",$s);
$suchregexp .= "|$s";
$suchliste = explode(" ",strtolower($suche));

$sql = "SELECT
a.title AS title, a.idart AS idart, a.summary AS comment, a.idartlang AS idartlang,
b.idcat AS idcat,
c.parentid AS parentid,
d.value AS content
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c,
".$cfg["tab"]["content"]." AS d
WHERE
a.idart = b.idart AND
a.idartlang = d.idartlang AND
b.idcat = c.idcat AND
c.idclient = '$client' AND
idlang = '$lang' AND
online='1' AND
(d.value REGEXP '$suchregexp' OR a.title REGEXP '$suchregexp' OR a.summary REGEXP '$suchregexp')";

$db->query($sql);
if ($db->num_rows() != 0)
{
  for ($i=0; $i<$db->num_rows(); $i++) 
  {
    $db->next_record();
    if ($auth->auth["uid"] == "nobody")
    {
      $sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
      $db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
      if($db2->f("public") == 0) continue;
    };
    $num = 0 + $db->f("idartlang");
    $results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart")."";
    $results[$num][title] = $db->f("title");
    switch ("CMS_VALUE[2]") 
    {
      case 0: $results[$num][text] = "";break;
      case 1: $results[$num][text] = $db->f("comment");break;
      case 2: $results[$num][text] .= substr(strip_tags(urldecode($db->f("content"))),0,200)."...";
    };
    for($x=0;$x<count($suchliste);$x++)
    {
      $treffer[$num] += substr_count(strtolower(urldecode($db->f("title"))), $suchliste[$x]) +
      substr_count(strtolower(urldecode($db->f("comment"))), $suchliste[$x]) +
      substr_count(strtolower(urldecode($db->f("content"))), $suchliste[$x]);
    };
  };
  if(count($treffer) > 0)
  {
    $treffer = array_values($treffer);
    $results = array_values($results);
    array_multisort ($results, SORT_DESC, SORT_NUMERIC, $treffer, SORT_DESC, SORT_NUMERIC);
    for ($i=0; $i<count($treffer); $i++)
    {
      echo "<tr><td align=left><font size=\"-1\"><a style=\"text-decoration:underline;\" href=\"".$results[$i][link]."\"";
      if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";};

----------------------------ehemaliger platz des tpl->set---------------------

      echo ">".$results[$i][title]."</a></font><span class='text'>(".$treffer[$i]." Treffer)<BR>";
      echo $results[$i][text]."<br><br></span></td></tr>";
    };
  } else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; };
} else { echo "<tr><td class='text' align=center>Keine passenden Seiten gefunden</td></tr>"; };
};
echo "</table>";
echo "<br/>";
?>
habs mit nem template versucht. leider muss ich das in die for-schleife bauen und das kracht ganz gewaltig da die variablen bei jedem schleifendurchlauf überschrieben werden :(

gruesse rene
Zuletzt geändert von rene04 am Do 20. Jul 2006, 09:08, insgesamt 2-mal geändert.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: suchmodul sprache

Beitrag von xmurrix »

rene04 hat geschrieben:...auf jeden fall bekomme ich es einfach nicht gebacken das ding so umzuschreiben das ich "Treffer" übersetzen kann :( wer weiß rat?
Dafür gibt es doch die Modulübersetzung. Dort kannst du die Strings für die verschiedenen Sprachen angeben um im Modul-Code kannst du mit der Funktion mi18n("Text") den Text ausgeben lassen.

Code: Alles auswählen

# Original Modulstring "anz-treffer", deutscher String "(%s Treffer)", englischer String "(%s hits)"

echo ">".$results[$i][title]."</a></font><span class='text'>".sprintf(mi18n("anz-treffer"), $treffer[$i])."<BR>"; 
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

das mit der modulübersetzung is mir schon klar. das war ja auch der weg auf dem ichs versucht hatte. hab es aber nicht hinbekommen.

aus den codefragmenten von dir werde ich leider nicht schlau :( was hat es mit dem kommentar auf sich?

gruesse rene
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

rene04 hat geschrieben:das mit der modulübersetzung is mir schon klar. das war ja auch der weg auf dem ichs versucht hatte. hab es aber nicht hinbekommen.

aus den codefragmenten von dir werde ich leider nicht schlau :( was hat es mit dem kommentar auf sich?

gruesse rene
Hallo Rene,

der Kommentar war eher für dich gedacht.
Im Modulcode verwendest du das Original-Modulstring "anz-treffer" mit der Funktion mi18n("anz-treffer").
Nachdem du das Modul gespeichert hast stehten im Register "Übersetzung" die im Modulcode verwendeten Modulstrings.
Dort kannst du im Bereich "Zeichenkettenliste" für jedes Modulstring die Übersetzung angeben. Sprache wechseln und das gleiche für andere Sprachen...

Code: Alles auswählen

Ursprünglicher Modulstring    Übersetzung für deutsch
anz-treffer                   (%s Treffer)

Ursprünglicher Modulstring    Übersetzung für englisch
anz-treffer                   (%s hits)

usw...
Die Funktion mi18n("anz-treffer") liefert dann je nach Sprache die richtige Übersetzung.

Gruß
xmurrix
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

ahso,

raffiniert ;)

leider bekomme ich die anzahl der treffer nicht angezeigt:

Code: Alles auswählen

echo ">".$results[$i][title]."</a></font><span class='text'>".sprintf(mi18n("Treffer"), $treffer[$i])."<BR>";
      echo $results[$i][text]."<br><br></span></td></tr>";
gruesse rene
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

Exportiere mal das Modul, die Übersetzung und schicke
Sie mir zu. Ich schau es mir mal an...
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

keiner ne idee wieso ich die anzahl der treffer nicht angezeigt bekomme?

gruesse
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

rene04 hat geschrieben:keiner ne idee wieso ich die anzahl der treffer nicht angezeigt bekomme?
Morgen,

Was steht denn genau im Modulstring "Treffer" drin?
Ohne das '%s' im Modulstring (oder in der Übresetzung) liefert auch sprintf keinen formatierten String zurück.

Code: Alles auswählen

echo '<pre>1. '.sprint('%s Treffer', 3).'</pre>';
echo '<pre>2. '.sprint('Treffer', 3).'</pre>';
Ausgabe:

Code: Alles auswählen

1. 3 Treffer
2. Treffer
Gruß
xmurrix
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

aha, dannfehlt mir also nur die übersetzung.

leider stimmt die anzahl der treffer nicht. woran kann das liegen?

gruesse rene
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

rene04 hat geschrieben: leider stimmt die anzahl der treffer nicht. woran kann das liegen?
Dazu kann ich jetzt nicht viel schreiben. Wieviel Treffer sollten es denn sein und wieviel wird angezeigt?

In diesem Modul kann die Anzahl der Treffer für einen Artikel mehr als 1 sein, z. B. Treffer in Titel, Kommentar und Inhalten werden addiert.

Gruß
xmurrix
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

ahhh, auch die description und keywords, .....

naja sind 4 wo nur einmal das wort vorkommt (sichtbar auf der site).

gruesse
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

hallo,

wie ist das eigentlich mit der suche bei mehreren sprachen? habe jetzt im modul suche eingabe gesehen, daß man da die sprache angibt als id. jetzt will ich aber nicht für jede site auf der die suche-eingabe vorkommt nen eigenes template für die englische version haben. was kann ich tun das die suche bei dutsch auf deutschen sites sucht und bei english auf englischen sites?

gruesse
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag von xmurrix »

rene04 hat geschrieben:wie ist das eigentlich mit der suche bei mehreren sprachen? habe jetzt im modul suche eingabe gesehen, daß man da die sprache angibt als id.
Hallo,

die id der Sprache muss man nicht explizit angeben, die wird von Contenido verwaltet, und die Suche bekommt immer die id der aktuellen Sprache, siehe SQL-Statement.

Beispiel:
$lang = 1; //deutsch
$lang = 2; //englisch

Je nach Wert der Variable "$lang" wird in der entsprechenden Sprache gesucht.

Gruß,
xmurrix
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

ah ja, alles klar.

danke

gruesse rene
Gesperrt