wyszukiwarka - większe możliwości

~Bobik

No avatar

2006-07-24 02:51

Poprawilem wyszukiwarke:
Szuka tez w nazwie kategorii (danego artykulu) i dlugim opisie. Po calym dniu zrobilem w koncu :)

Zmiany w pliku products-ff:

Dodalem 2 funkcje

<?php function pokaz_kategorie ($iStatus)
   {
   
$aFile =  fileDB_CATEGORIES );
   
$iCount count$aFile );
   
$kategorie =  null;
   for( 
$i 1$i $iCount$i++ )
    {
    
$aExp explode'$'$aFile[$i]);
    if( 
$aExp[3] >= $iStatus )
     {
     
$kategorie[$aExp[0]] = $aExp[1];
     if( 
is_numeric$aExp[2] ) && $aExp[2] > ){
      
$kategorie[$aExp[0]] = $kategorie[$aExp[2]].' '.$kategorie[$aExp[0]];
      }
     }
    }
   return 
$kategorie;
   }

function 
pokaz_produkty_ex ()
   {
   
$aFile =  file(DB_PRODUCTS_EXT);
   
$iCount count$aFile );
   
$produkty_ex =  null;
   for( 
$i 1$i $iCount$i++ )
    {
    
$aExp explode'$'$aFile[$i]);
    
$produkty_ex[$aExp[0]] = $aExp[1];
    }
   return 
$produkty_ex;
   }
?>


i zmodyfikowalem te

<?phpif( !function_exists'dbListProductsSearch' ) ){
  
/**
  * Return array of products list, search by word
  * @return array
  * @param int    $iStatus
  * @param string $sWord
  * @param int    $iList
  */
  
function dbListProductsSearch$iStatus$sWord$iList ){
    global 
$oFF;
    
$aCategories dbThrowProductsCategories( );
    
$kategorie pokaz_kategorie (0);
    
$produkty_ex pokaz_produkty_ex ();
    return 
$oFF->throwFileArrayFunctionPagesDB_PRODUCTSnull$GLOBALS['iPage'], 
    
$iList'dbListProductsSearchCheck', Array( $iStatus$aCategories$sWord$kategorie$produkty_ex) );
  } 
// end function dbListProductsSearch
}

if( !
function_exists'dbListProductsSearchCheck' ) ){
  
/**
  * Checking data of products
  * @return bool
  * @param array  $aData
  * @param array  $aCheck
  */
  
function dbListProductsSearchCheck$aData$aCheck ){
    if( 
is_array$aData ) && isset( $aCheck[1][$aData[0]] ) && 
    
$aData[4] >= $aCheck[0] && 
    
stristrimplode' '$aData ).' '.$aCheck[3][$aCheck[1][$aData[0]][0]].' '.$aCheck[4][$aData[0]], $aCheck[2] ))
      return 
true;
    else
      return 
null;
  } 
// end function dbListProductsSearchCheck
}?>


Prosze o komentarze czy nie ma jakis bledow.

~Bobik

No avatar

2006-07-24 02:53

Efekty na http://www.rowery.impuls.webd.pl/

Prosze o komentarze na temat tej strony.

Pozdrawiam.

treewood (OpenSolution)

Avatar: treewood

2006-07-24 08:15

Bobik - bardzo fajnie :). pamietaj iz przy wiekszej ilosci produktow oraz przy dlugich opisach moze ci wyskoczyc, ze pamiec zostala przekroczona gdyz pobierasz cale dlugie opisy do zmiennej. lepiej by bylo sprawdzac to w locie czyli otwierac plik i sprawdzic i zamknac ale byloby to troche dluzsze. robiac funkcje wyszukiwania po dlugich opisach w Quick.Cms zrobilem taki myk, ze wpierw sprawdzalem czy produkt spelnia podstawowe kryteria wyszukiwania, czyli szukanie po nazwie, opisie krotkim. jesli nie spelnial to dopiero wtedy dodatkowo otwieralem plik z opisem dlugim i sprawdzalem czy slowo szukane w nim wystepuje. jesli nie wystepowalo takze w dlugim opisie to zaznaczalem, ze produkt nie spelnia kryteriow. zaleta taka, ze nie zawsze trzeba bylo otwierac plik z pelnym opisem.

mysle, ze lepszym rozwiazaniem niz szukanie po dlugich opisach jest zrobic pole z dodatkowe zapisywane do db/products.php z slowami kluczowymi ...

~Bobik

No avatar

2006-07-24 12:42

Probowalem to obejsc z kazdej strony jednak zawsze fiasko, wiec napisalem swoje procedury.
A nie mam na tyle czasu zeby spedzic miesiac nad pisaniem pluginu.

Jak wpisze ciag szukania sciaga mi przy 100 produktach tylko "raz" 200kb plik z dlugimi opisami. Tylko tyle sie zmienia.

Mysle nad ulepszeniem jeszcze.

Pozdrawiam.

~Bobik

No avatar

2006-07-24 12:50

Czy jest jakas zmienna lub funkcja ktora mozna wywolac ktora umozliwia dostep do kategorii i dlugich opisow po numerze produktu dostepna z funkcji : dbListProductsSearchCheck?

Pozdrawiam.

treewood (OpenSolution)

Avatar: treewood

2006-07-24 13:30

Bobik - raczej nie aczkolwiek mozliwe, ze nie do konca rozumiem co potrzebujesz

~Bobik

No avatar

2006-07-24 13:55

Probowalem skorzystac z jakis funkcji czy zmiennych w "dbListProductsSearch" zeby uzyskac dane opisow dlugich i kategorii. Jednak zadna funkcja ani zmienna nie zwracala mi tych danych. Dlatego napisalem 2 swoje procedury. Jesli by istaniala juz gotowa w systemie funkcja moznaby jej uzyc w tym przykladzie.

Bede chciał jeszcze dorobic pokazywanie w lewym menu artykułów promocyjnych.

treewood (OpenSolution)

Avatar: treewood

2006-07-24 14:52

Bobik - jest funkcja, ktora zwraca opis dlugi dla konkretnego produktu i id kategorii produktu ale to raczej nie oto tu chodzi. mogles wykorzystac wbudowane metody w FlatFiles (throwArraySmall) ale to akurat juz nie jest najistotniejsze

~akuna

No avatar

2006-08-12 11:49

U mnie się wywala z komunikatem
Call to undefined function: dbthrowproductscategories()
Co to za funkcja, skąd się wzięła?

~D Ogi

No avatar

2006-08-12 17:55

walnij require do plikow core/products-ff.php i core/files.php i core/files-ff.php :)

Podro 4 ALL

Do góry
o nas | kontakt