Wyszukiwarka

Zbynio

Avatar: Zbynio

2009-08-13 10:18

Witam

CZy wyszukiwarka wyszukuje tylko w produktach czy w stronach również?
Jeżeli nie to można ustawić aby wyszukiwała również w stronach?

Pozdrawiam

» Quick.Cart v3.x

Makaron

Avatar: Makaron

2009-08-13 16:08

Kiedyś robiłem manual do tego problemu. Był on w sumie przeznaczony do wersji płatnych, ale i z darmową powinien ruszyć. Oto on:

1) Edytuj plik core/pages.php i na samym końcu dodaj funkcję:

/**
  * Search pages by word
  * @return string
  * @param string $sFile
  * @param string $sWord
  * @param int    $iType
  */
  
function searchPages$sFile$sWord$iType ){
    
$aExp   explode' '$sWord );
    
$iCount count$aExp );
    for( 
$i 0$i $iCount$i++ ){
      
$aExp[$i] = trim$aExp[$i] );
      if( !empty( 
$aExp[$i] ) )
        
$aWords[] = $aExp[$i];
    } 
// end for

    
if( isset( $aWords ) && is_array$aWords ) && function_exists'saveSearchedWords' ) )
      
saveSearchedWords$aWords );

    
$iCount count$aWords );

    foreach( 
$this->aPages as $iPage => $aPage ){
      
$iFound 0;

      for( 
$i 0$i $iCount$i++ ){
        if( 
stristrimplode' '$aPage ), $aWords[$i] ) )
          
$iFound++;
      } 
// end for

      
if( $iFound == $iCount ){
        
$aPages[] = $iPage;
      }
      else{
        
$aPagesFull[$iPage] = true;
      }
    }

    if( isset( 
$aPagesFull ) ){
      
$rFile fopenDB_PAGES_EXT'r' );
      
$i2    0;
      while( ( 
$aFile fgetcsv$rFile200000'$' ) ) !== FALSE ){
        if( 
$i2 >= && isset( $aPagesFull[$aFile[0]] ) ){
          
$iFound 0;

          for( 
$i 0$i $iCount$i++ ){
            if( 
stristr$aFile[1], $aWords[$i] ) )
              
$iFound++;
          } 
// end for

          
if( $iFound == $iCount )
            
$aPages[] = $aFile[0];
        }
        
$i2++;
      } 
// end while
      
fclose$rFile );
    }

    if( isset( 
$aPages ) ){
      
$oFile    =& Files::getInstance( );
      
$oTpl     =& TplParser::getInstance( );
      
$content  null;
      
$iCount   count$aPages );
      for( 
$i 0$i $iCount$i++ ){
        
$aData $this->aPages[$aPages[$i]];
        
$aData['iStyle'] = ( $i ) ? 01;
        
$aData['sStyle'] = ( $i == ( $iCount ) ) ? 'L'$i 1;

        if( !empty( 
$aData['sDescriptionShort'] ) ){
          
$aData['sDescriptionShort'] = changeTxt$aData['sDescriptionShort'], 'nlNds' );
          
$oTpl->setVariables'aData'$aData );
          
$aData['sDescriptionShort'] = $oTpl->tbHtml$sFile'SUBPAGES_DESCRIPTION_'.$iType );
        }

        
$oTpl->setVariables'aData'$aData );

        if( 
$iType && isset( $oFile->aImagesDefault[1][$aData['iPage']] ) ){
          
$aDataImage $oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iPage']]];
          
$oTpl->setVariables'aDataImage'$aDataImage );
          
$aData['sImage'] = $oTpl->tbHtml$sFile'SUBPAGES_IMAGE_'.$iType );
        }
        else{
          if( 
$iType ){
            
$aData['sImage'] = $oTpl->tbHtml$sFile'SUBPAGES_NO_IMAGE_'.$iType );
          }
        }

        
$oTpl->setVariables'aData'$aData );
        
$content .= $oTpl->tbHtml$sFile'SUBPAGES_LIST_'.$iType );
      } 
// end for

      
if( isset( $content ) ){
        return 
$oTpl->tbHtml$sFile'SUBPAGES_HEAD_'.$iType ).$content.$oTpl->tbHtml$sFile'SUBPAGES_FOOT_'.$iType );
      }
    }
  } 
// end function searchPages



2) Edytuj plik actions_client/p.php i przed linią:

if( !empty( $aData['sTheme'] ) )[/php]
dodaj ten kod:
    [
php]if( !empty( $sPhrase ) && isset( $config['page_search'] ) && is_numeric$config['page_search'] ) && $iContent == $config['page_search'] ){
      
$sSearchList $oPage->searchPages$aData['sTemplate'], $sPhrase );
      
$sSearchResults = !empty( $sSearchList ) ? $sSearchList null;
    }
    else{
      
$sSearchResults null;
    }



3) Edytuj plik templates/pages_default.tpl i umieść zmienną $sSearchResults poniżej listy pozostałych zmiennych.

Zbynio

Avatar: Zbynio

2009-08-13 21:34

Wszystko ładnie, szuka również na stronach tylko mimo, że są wyniki wyszukiwania, to powyżej jest komunikat "Nie znaleziono danych", a poniżej komunikatu jest lista stron zawierających wyszukiwaną frazę.

Pozdrawiam

Makaron

Avatar: Makaron

2009-08-14 08:58

Bo masz dwie listy. W produktach i na stronach. Zmień sobie zmienne językowe, żeby było wiadomo, że pierwsza lista dotyczy produktów i będzie dobrze.

Zbynio

Avatar: Zbynio

2010-06-09 11:34

czy mogę prosić konkretnie co trzeba zmienić?

poza tym nie działa to w najnowszej wersji quick.cart 3.6

Pozdrawiam

Do góry
o nas | kontakt