Begrenzen der Suche auf eine bestimmte Sprache

Wenn eine mehrsprachige Website in Website Baker mit Hilfe der Einstellung “Seitensprache” erstellt wird, funktioniert das unter ”Begrenzen der Suche auf bestimmte Seiten” beschriebene Verfahren nicht. Stattdessen muß nun anhand der gewählten Seitensprache festgelegt werden, welche Seiten in die Suche einbezogen werden sollen.

Bis einschließlich Website Baker 2.7 müssen dazu Änderungen an der Datei search/search.php durchgeführt werden; ab Website Baker 2.8 sind diese Änderungen bereits enthalten.

Benutzung

Sobald die Einstellung “Seitensprache” eingeschaltet wird, wird die Suche automatisch auf die Seiten begrenzt die die aktuelle Seitensprache verwenden, so daß hier keine weitere Maßnahme notwendig ist!

Änderungen an der Datei search.php für 2.7

Suchen Sie diesen Block

locate this block

// Get the search type
$match = '';
if(isset($_REQUEST['match'])) {
    if($_REQUEST['match']=='any') $match = 'any';
    elseif($_REQUEST['match']=='all') $match = 'all';
    elseif($_REQUEST['match']=='exact') $match = 'exact';
    else $match = 'all';
} else {
    $match = 'all';
}

und ersetzen Sie ihn durch diesen Block

replace with

// use page_languages?
if(PAGE_LANGUAGES) {
    $table = TABLE_PREFIX."pages";
    $search_language_SQL_t = "AND $table.`language` = '".LANGUAGE."'";
    $search_language_SQL = "AND `language` = '".LANGUAGE."'";
} else {
    $search_language_SQL_t = '';
    $search_language_SQL = '';
}
// Get the search type
$match = '';
if(isset($_REQUEST['match'])) {
    if($_REQUEST['match']=='any') $match = 'any';
    elseif($_REQUEST['match']=='all') $match = 'all';
    elseif($_REQUEST['match']=='exact') $match = 'exact';
    else $match = 'all';
} else {
    $match = 'all';
}



Nun suchen Sie diesen Block

locate this block

// get each section for $module_name
$table_s = TABLE_PREFIX."sections";
$table_p = TABLE_PREFIX."pages";
$sections_query = $database->query("
SELECT s.section_id, s.page_id, s.module, s.publ_start, s.publ_end,
p.page_title, p.menu_title, p.link, p.description, p.keywords, p.modified_when, p.modified_by,
    p.visibility, p.viewing_groups, p.viewing_users
    FROM $table_s AS s INNER JOIN $table_p AS p ON s.page_id = p.page_id
    WHERE s.module = '$module_name' AND p.visibility NOT IN ('none','deleted') AND p.searching = '1' $search_path_SQL $search_language_SQL
    ORDER BY s.page_id, s.position ASC
");

und ersetzen Sie ihn durch diesen Block

replace with

// get each section for $module_name
$table_s = TABLE_PREFIX."sections";
$table_p = TABLE_PREFIX."pages";
$sections_query = $database->query("
SELECT s.section_id, s.page_id, s.module, s.publ_start, s.publ_end,
p.page_title, p.menu_title, p.link, p.description, p.keywords, p.modified_when, p.modified_by,
    p.visibility, p.viewing_groups, p.viewing_users
    FROM $table_s AS s INNER JOIN $table_p AS p ON s.page_id = p.page_id
    WHERE s.module = '$module_name' AND p.visibility NOT IN ('none','deleted') AND p.searching = '1' $search_path_SQL
    ORDER BY s.page_id, s.position ASC
");



Nun suchen Sie noch diesen Block

locate this block

// Search page details only, such as description, keywords, etc, but only of unseen pages.
$max_excerpt_num = 0; // we don't want excerpt here
$divider = ".";
$table = TABLE_PREFIX."pages";
$query_pages = $database->query("
    SELECT page_id, page_title, menu_title, link, description, keywords, modified_when, modified_by,
           visibility, viewing_groups, viewing_users
    FROM $table
    WHERE visibility NOT IN ('none','deleted') AND searching = '1' $search_path_SQL
");
if($query_pages->numRows() > 0) {

und ersetzen ihn durch diesen Block

replace with

// Search page details only, such as description, keywords, etc, but only of unseen pages.
$max_excerpt_num = 0; // we don't want excerpt here
$divider = ".";
$table = TABLE_PREFIX."pages";
$query_pages = $database->query("
    SELECT page_id, page_title, menu_title, link, description, keywords, modified_when, modified_by,
           visibility, viewing_groups, viewing_users
    FROM $table
    WHERE visibility NOT IN ('none','deleted') AND searching = '1' $search_path_SQL $search_language_SQL
");
if($query_pages->numRows() > 0) {



Und als letztes suchen Sie diesen Block

locate this block

// Execute query
$page_query = $database->query($prepared_query." ".$search_path_SQL);

und ersetzen ihn durch diesen Block

replace with

// Execute query
$page_query = $database->query($prepared_query." ".$search_path_SQL." ".$search_language_SQL_t);

Änderungen an der Datei search.php für 2.8

Seit der Version 2.8 sind diese Änderungen bereits im Core durchgeführt.
Ein Ändern der Datei search.php ist daher nicht mehr nötig!


Begrenzen der Suche auf eine bestimmte Sprache 0 Comments
 
projects/new_search/search_lang_de.txt · Last modified: 2010-05-30 16:20 by Thomas "thorn" Hornik
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki