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 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 = 2 ){ $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( stristr ( implode ( ' ' , $aPage ), $aWords [ $i ] ) ) $iFound ++; } // end for if( $iFound == $iCount ){ $aPages [] = $iPage ; } else{ $aPagesFull [ $iPage ] = true ; } } if( isset( $aPagesFull ) ){ $rFile = fopen ( DB_PAGES_EXT , 'r' ); $i2 = 0 ; while( ( $aFile = fgetcsv ( $rFile , 200000 , '$' ) ) !== FALSE ){ if( $i2 >= 1 && 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 % 2 ) ? 0 : 1 ; $aData [ 'sStyle' ] = ( $i == ( $iCount - 1 ) ) ? '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 > 1 && 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 > 1 ){ $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.
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
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.
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