Autor: @micus
Pročitano: 4681 puta

Jedna od rijetkih iritantnih stvari u Jomla! 2.5. je maksimalno dozvoljena dužina od 20 znakova za upis pojma u polju za traženje.

Znači, kada u polje Traži (search...) upišete svoj tekst pretrage, Joomla ga skrati na 20 znakova.

Da biste to ispravili, morate posegnuti u Joomla PHP file-ove.

Napomena: Ispravka Joomla core file-ova može biti delikatan posao. Prije bilo kakve izmjene, napravite kopiju file-a koji mijenjate i imenu kopije dodajte npr. prefix (original).

Osim toga, ispravka core file-ova ima svoju lošu stranu - nakon update-a gubite te izmjene pa ih morate ponovo napraviti. Zato, dobro bi bilo, u nekom TXT dokumentu upisati sve napravljene izmjene, tako da ih možete ponoviti nakon update-a. 

Kako povećati maksimalno dozvoljenu dužinu pojma za traženje?

Za to je potrebno napraviti dvije izmjene. Jedna je u postavkama modula Search (Pretraga), a druga unutar PHP file-a search.php.

Idemo redom.

Sirina polja za pretraguPrvo uđite u svoju Joomla administraciju i izaberite Extensions\Module Manager ili Dodaci\Upravljanje Modulima ako u administraciji koristite Bosanski jezik. Nakon toga, među ostalim  modulima pronađite Joomla modul Search (Pretraga) i kliknite na njegovo ime da pokrenete izmjenu.

Na desnoj strani, u okviru Module Parameters (Parametri modula), slika lijevo, u polje Box Width (Širina Polja) upišite željenu vrijednost. U primjeru na slici je to 50. To znači da će posjetilac imati mogućnost da u polje za pretragu upiše maksimalno 50 znakova (računajući i prazna mjesta). To još ne znači da je omogućena i pretraga svih 50 znakova. Sada sačuvati izmjene modula i pripremiti se za kreiranje ispravke u search.php.

Pokrenuti svoj FTP klijent i konektovati se na svoj web server. U Joomla root direktoriju pronaći direktorij \administrator\components\com_search\helpers i u tom folderu  file search.php. Iskopirati taj dokument na svoj računar, a zbog sigurnosti, originalni file na serveru preimenovati u search(origina).php. Sada otvoriti search.php  sa svog računara u svom omiljenom PHP editoru - npr. Notepad ++ (a može i obični notepad).

Od linije 65 do linije 69 ćete pronaći sljedeći kôd:

// limit searchword to 20 characters
if ( JString::strlen( $searchword ) > 20 ) {
    $searchword     = JString::substr( $searchword, 0, 19 );
    $restriction     = true;
}

Taj kôd korigujte kao ovaj ispod:

// limit searchword to 50 characters
if ( JString::strlen( $searchword ) > 51 ) {
   $searchword     = JString::substr( $searchword, 0, 50 );
   $restriction     = true;
}

Odnosno, zamijenite cifre koje su ukošene (20 sa 51 i 19 sa 50). Snimite taj dokument i pomoću FTP klijenta ga iskopirajte nazada na webs server, na istu lokaciju sa koje ste ga kopirali na računar. Tamo već treba da je backup sa imenom search(original).php.

Na kraju, pokrenite probnu pretragu tako što ćete u polje za pretragu upisati više od 20 znakova.

U slučaju Joomla! 3.x. situacija je malo drugačija.

U /administrator/components/com_search/helpers/search.php se sada nalazi sljedeći kôd:

// Limit searchword to a maximum of characters
$upper_limit = $lang->getUpperLimitSearchWord();

Što znači da se vrijednost maksimalnog broja znakova čita iz nekog drugog file-a. Taj file je bs-BA.localise.php koji se nalazi na putanji /language/bs-BA/ (ako na web stranici koristite Bosanski jezik).

U bs-BA.localise.php je potrebno pronaći funkciju getUpperLimitSearchWord() koja originalno izgleda ovako:

public static function getUpperLimitSearchWord()
    {
        return 20;
    }

U toj funkciji vrijednost 20 zamijeniti sa željenom vrijednosti (npr 30). Iskopirati ispravljeni file na pravu lokaciju (/language/bs-BA/) na web serveru, počlistiti cache ili sačekati podešeno vrijeme važenja cache-a (default je 15 minuta) i probati pretragu sa podešenim brojem znakova.