Hallo Descreator,
Du könntest mal das probieren. Vorher wie immer Sicherheitskopie... das ist nicht getestet.
In der "/admin/includes/modules/categories_view.php" in Z.306 nach:
$products_count = 0;
if ($_GET['search']) {
das:
$products_query = xtc_db_query("
SELECT
p.products_tax_class_id,
p.products_id,
pd.products_name,
p.products_sort,
p.products_quantity,
p.products_image,
-- BOF - Tomcraft - 2009-12-03 - show model-number upon search for products
p.products_model,
-- EOF - Tomcraft - 2009-12-03 - show model-number upon search for products
p.products_price,
p.products_discount_allowed,
p.products_date_added,
p.products_last_modified,
p.products_date_available,
p.products_status,
p.products_startpage,
p.products_startpage_sort,
p2c.categories_id FROM " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c
WHERE p.products_id = pd.products_id AND pd.language_id = '" . $_SESSION['languages_id'] . "' AND
p.products_id = p2c.products_id AND (pd.products_name like '%" . $_GET['search'] . "%' OR "
// BOF - web28 - 2010-04-10 - change for ADMIN SEARCH BAR
// p.products_model = '" . $_GET['search'] . "') ORDER BY " . $prodsort);
. "p.products_model like '%" . $_GET['search'] . "%') ORDER BY " . $prodsort);
//EOF - web28 - 2010-04-10 - change for ADMIN SEARCH BAR
ersetzen durch das:
include("../inc/xtc_parse_search_string.inc.php"); define(ADMIN_SEARCH_IN_ATTR
, true); // true = search in attributes define(ADMIN_SEARCH_IN_DESC
, false); // true = search in description //build query $select_str = "SELECT DISTINCT p.products_tax_class_id,
p.products_id,
pd.products_name,
p.products_sort,
p.products_quantity,
p.products_image,
p.products_model,
p.products_price,
p.products_discount_allowed,
p.products_date_added,
p.products_last_modified,
p.products_date_available,
p.products_status,
p.products_startpage,
p.products_startpage_sort,
p2c.categories_id "; $from_str = "FROM ".TABLE_PRODUCTS
." AS p "; $from_str .= "LEFT JOIN ".TABLE_PRODUCTS_DESCRIPTION
." AS pd ON (p.products_id = pd.products_id) "; $from_str .= "LEFT JOIN ".TABLE_PRODUCTS_TO_CATEGORIES
." AS p2c ON (p.products_id = p2c.products_id) "; if (ADMIN_SEARCH_IN_ATTR
== 'true') { $from_str .= "LEFT OUTER JOIN ".TABLE_PRODUCTS_ATTRIBUTES
." AS pa ON (p.products_id = pa.products_id) "; $from_str .= "LEFT OUTER JOIN ".TABLE_PRODUCTS_OPTIONS_VALUES
." AS pov ON (pa.options_values_id = pov.products_options_values_id) "; } $from_str .= "LEFT OUTER JOIN ".TABLE_SPECIALS
." AS s ON (p.products_id = s.products_id) AND s.status = '1'"; //where-string $where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int
) $_SESSION['languages_id']."'"; //go for keywords... this is the main search process if (isset ($_GET['search']) && xtc_not_null
($_GET['search'])) { if (xtc_parse_search_string
(stripslashes($_GET['search']), $search_keywords)) { $where_str .= " AND ( "; for ($i = 0, $n = sizeof($search_keywords); $i < $n; $i ++) { switch ($search_keywords[$i]) { case '(' : case ')' : case 'and' : case 'or' : $where_str .= " ".$search_keywords[$i]." "; break; default : $ent_keyword = htmlentities($search_keywords[$i]); $ent_keyword = ($ent_keyword != $search_keywords[$i]) ?
addslashes($ent_keyword) : false; $keyword = addslashes($search_keywords[$i]); $where_str .= " ( "; $where_str .= "pd.products_keywords LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_keywords LIKE ('%".$ent_keyword."%') " : ''; if (ADMIN_SEARCH_IN_DESC
== 'true') { $where_str .= "OR pd.products_description LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_description LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR pd.products_short_description LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_short_description LIKE ('%".$ent_keyword."%') " : ''; } $where_str .= "OR pd.products_name LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pd.products_name LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR p.products_model LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR p.products_model LIKE ('%".$ent_keyword."%') " : ''; if (ADMIN_SEARCH_IN_ATTR
== 'true') { $where_str .= "OR pa.attributes_model LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pa.attributes_model LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "OR (pov.products_options_values_name LIKE ('%".$keyword."%') "; $where_str .= ($ent_keyword) ?
"OR pov.products_options_values_name LIKE ('%".$ent_keyword."%') " : ''; $where_str .= "AND pov.language_id = '".(int
) $_SESSION['languages_id']."')"; } $where_str .= " ) "; break; } } $where_str .= " ) GROUP BY p.products_id ORDER BY " . $prodsort; } } //glue together $listing_sql = $select_str.$from_str.$where_str; $products_query = xtc_db_query
($listing_sql); Dann ist die Suche im Backend fast genauso gestaltet wie im Frontend...
Die defines könnte man noch verfeinern mit z.B. Checkboxen im Admin zur Auswahl ob man auch in den Attributen und in den Beschreibungen der Artikel suchen möchte, aber das kannst Du ja mal selber versuchen zu basteln.
Viele Grüße
Franky
[
EDIT franky_n 24.10.2011: Fehler im Code
korrigiert und
um ein "include" erweitert.]
[
EDIT franky_n 26.10.2011: Fehler im Code
korrigiert.]