CodeIgniter рдкрд░ CMS рдореЗрдВ FULLTEXT рд╕рд░реНрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдж Habr├й рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВ рдЬреЛ CodeIgniter рдврд╛рдВрдЪреЗ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реИ рдЬреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЬрд▓реНрджреА рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп PHP рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд рдХреЛрдбрд┐рдорд╛рдЗрдЯрд░ рдкрд░ рд╕реАрдПрдордПрд╕ рдореЗрдВ рдлреБрд▓рдЯреЗрдХреНрдЯ рдЦреЛрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред



1. CodeIgniter рдХреА рддреИрдпрд╛рд░реАред



рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ CodeIgniter рд╡рд┐рддрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рд╣рдо рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / database.php рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЦреЛрд▓реЗрдВ / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / config.php рдФрд░ base_url рдлрд╝реАрд▓реНрдб рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред



2. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ред



рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБред

CREATE TABLE pages (

id int (10) UNSIGNED NOT NULL AUTO_INCREMENT,

url text NOT NULL ,

title text NOT NULL ,

content text NOT NULL ,

updated datetime NOT NULL ,

PRIMARY KEY (id),

FULLTEXT KEY content (content)

) ENGINE=MyISAM




* This source code was highlighted with Source Code Highlighter .






FULLTEXT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЦреЛрдЬ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдЦреЛрдЬ рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдлрд╝реАрд▓реНрдб рдкрд░ рдХреА рдЬрд╛рдПрдЧреАред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FULLTEXT рдЦреЛрдЬ рдХреЗрд╡рд▓ MyISAM рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред



3. рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛



рд╣рдорд╛рд░реЗ рдЦреЛрдЬ рдЗрдВрдЬрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд╛рддрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬреЛ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд▓реЗрдЦреЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИ рдФрд░ рдлрд┐рд░, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЗрди рд▓реЗрдЦреЛрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИред

4. рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрдЪ рдХрд░реЗрдВ

рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝реЙрд░реНрдо рдХреА SQL рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

SELECT *

FROM pages

WHERE MATCH (content) AGAINST ( 'test' ) > 0




* This source code was highlighted with Source Code Highlighter .






FULLTEXT рдЦреЛрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред





5. рдХреЛрдбрдЖрдИрдЧреНрдирд┐рдЯрд░ рдФрд░ рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрдиред



рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдВред CodeIgniter рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ (MVC рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░) рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрдкрдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рдпрдо рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ:



рдпрджрд┐ рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдирд┐рдпрдо рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдЗрдП рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЦреЛрдЬ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ "рдбрд╛рдпрд░реЗрдХреНрдЯ SQL рдХреНрд╡реЗрд░реА" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдбрдЖрдИрдЧреНрдирд╛рдЗрдЯрд░ рдореЗрдВ рдХреНрд╡реЗрд░реА рдкреАрдврд╝реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ActiveRecord рд╣реИред

рдиреАрдЪреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдореЙрдбрд▓ / рдкреГрд╖реНрда_model.php рдореЗрдВ рд╕реНрдерд┐рдд рдореЙрдбрд▓ рдХрд╛ рдХреЛрдб рд╣реИ

class Page_model extends Model

{

function Page_model()

{

parent::Model();

//

$ this ->load->database();

}

function search($terms)

{

//

$sql = "SELECT url, title

FROM pages

WHERE MATCH (content) AGAINST (?) > 0"
;

$query = $ this ->db->query($sql, array($terms, $terms));

return $query->result();

}

}




* This source code was highlighted with Source Code Highlighter .






рдЕрдЧрд▓рд╛ рдХрджрдо рдлреЙрд░реНрдо рдХреА рдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИ:

<? php $ this- > load- > helper('form'); ? >

<? php echo form_open ($ this- > uri- > uri_string); ? >

<? php echo form_label ( 'Search:' , 'search-box' ); ? >

<? php echo form_input ( array ( 'name' = > 'q', 'id' = > 'search-box', 'value' = > $search_terms)); ? >

<? php echo form_submit ( 'search' , 'Search' ); ? >

<? php echo form_close (); ? >

<? php if ( ! is_null ($ results )) : ? >

<? php if ( count ($ results )) : ? >

< ul >

<? php foreach ($ results as $ result ) : ? >

< li >< a href ="&# 60 ;? php echo $ result- > url; ? > " ><? php echo $ result- > title; ? ></ a ></ li >

<? php endforeach ? >

</ ul >

<? php else: ? >

< p >< em > There are no results for your query. </ em ></ p >

<? php endif ? >

<? php endif ? >




* This source code was highlighted with Source Code Highlighter .






рдЕрдм рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдмрд╛рд░реА рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЬреЛрдбрд╝реЗрдЧреА:

class Pages extends Controller {

function search($search_terms = '' )

{

// URL

// ,

// .

if ($ this ->input->post( 'q' ))

{

redirect( '/pages/search/' . $ this ->input->post( 'q' ));

}

if ($search_terms)

{

//

$ this ->load->model( 'page_model' );

$results = $ this ->page_model->search($search_terms);

}

//

$ this ->load->view( 'search_results' , array(

'search_terms' => $search_terms,

'results' => @$results

));

}

}




* This source code was highlighted with Source Code Highlighter .






рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди URL рд╕рд╣рд╛рдпрдХ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ $ "- рд▓реЛрдб-> рд╣реЗрд▓реНрдкрд░ ('url') рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛" рдореИрдиреБрдЕрд▓ "рд▓реЛрдб рдХрд┐рдпрд╛; рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдо рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рддреБрд░рдВрдд рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣рд░ рд╕рдордп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / autoload.php рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ $ autoload ['рд╕рд╣рд╛рдпрдХ']:

$autoload[ 'helper' ] = array( 'url' );



* This source code was highlighted with Source Code Highlighter .






рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ (рдХрдо рд╕реЗ рдХрдо 3 рд▓рд╛рдЗрдиреЗрдВ) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦреЗрдВ рдЬреИрд╕реЗ 'http: //localhost/index.php/pages/search', рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЯреЗрдХреНрд╕реНрдЯ рд╕рд░реНрдЪ рдмрд╛рд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рд╕рд░реНрдЪ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдЫрд╡рд┐



6. рд╣рдорд╛рд░реА рдЦреЛрдЬ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ред



рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬреЛрдбрд╝реЗрдВред рдХреЛрдбрд┐рдПрдЧреНрдирд┐рдЯрд░ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЗрдЬреЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛, рдЙрд╕ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд░рд┐рдХреЙрд░реНрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред

рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ рд╣реИ:

class Page_model extends Model {

function search($terms, $start = 0, $results_per_page = 0)

{

//

//

if ($results_per_page > 0)

{

$limit = "LIMIT $start, $results_per_page" ;

}

else

{

$limit = '' ;

}

// SQL

$sql = "SELECT url, title, content

FROM pages

WHERE MATCH (content) AGAINST (?) > 0

$limit"
;

$query = $ this ->db->query($sql, array($terms, $terms));

return $query->result();

}

function count_search_results($terms)

{

// Run SQL to count the total number of search results

$sql = "SELECT COUNT(*) AS count

FROM pages

WHERE MATCH (content) AGAINST (?)"
;

$query = $ this ->db->query($sql, array($terms));

return $query->row()->count;

}

}




* This source code was highlighted with Source Code Highlighter .






рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкреЗрдЬрд┐рдиреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ

class Pages extends Controller {

function search($search_terms = '' , $start = 0)

{

// URL

// ,

// .

if ($ this ->input->post( 'q' ))

{

redirect( '/pages/search/' . $ this ->input->post( 'q' ));

}

if ($search_terms)

{

//

//

$results_per_page = $ this ->config->item( 'results_per_page' );

// , ,

//

$ this ->load->model( 'page_model' );

$results = $ this ->page_model->search($search_terms, $start, $results_per_page);

$total_results = $ this ->page_model->count_search_results($search_terms);

//

$ this ->_setup_pagination( '/pages/search/' . $search_terms . '/' , $total_results, $results_per_page);

//

$first_result = $start + 1;

$last_result = min($start + $results_per_page, $total_results);

}

//

$ this ->load->view( 'search_results' , array(

'search_terms' => $search_terms,

'first_result' => @$first_result,

'last_result' => @$last_result,

'total_results' => @$total_results,

'results' => @$results

));

}

function _setup_pagination($url, $total_results, $results_per_page)

{

//

$ this ->load->library( 'pagination' );

$uri_segment = count(explode( '/' , $url));

//

//

$ this ->pagination->initialize(array(

'base_url' => site_url($url),

'uri_segment' => $uri_segment,

'total_rows' => $total_results,

'per_page' => $results_per_page

));

}

}




* This source code was highlighted with Source Code Highlighter .






рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред рд╣рдордиреЗ рдкреГрд╖реНрда рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ URL рдореЗрдВ рдирдП рдЦрдВрдб рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред рдпрд╣ рдЦрдВрдб рдПрдХ рд╕рд╛рде рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдПрдХ рдкреГрд╖реНрда рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИред

рдЦреЛрдЬ рдкреГрд╖реНрда рдкрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ / config / application.php рдпреБрдХреНрдд рд▓рд╛рдЗрди рдмрдирд╛рдПрдБ:

$config[ 'results_per_page' ] = 10;



* This source code was highlighted with Source Code Highlighter .






рдПрдкреНрд▓рд┐рдХреЗрд╢рди / config / autoload.php рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рдСрдЯреЛрд▓реИрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ $ autoload ['config'] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди' рдЬреЛрдбрд╝реЗрдВред

рд╣рдо рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА (рд╕реНрдирд┐рдкреЗрдЯ рдФрд░ рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛) рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╣реЗрд▓реНрдкрд░реНрд╕ / search_helper.php рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди search_highlight ($ text, $ search_terms) рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕реЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ search_extract ($ рд╕рд╛рдордЧреНрд░реА, $ search_terms, $ number_of_snippets = 3, $ snippet_length = 60) рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЦреЛрдЬ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╡реЗрд░реА рд╡рд╛рд▓реЗ рднрд╛рдЧ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

рдпрд╣ рдкреНрд░рдкрддреНрд░ рдХреА рд╣рдорд╛рд░реА рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

<? php $ this- > load- > helper(array('form', 'search')); ? >

<? php echo form_open ($ this- > uri- > uri_string); ? >

<? php echo form_label ( 'Search:' , 'search-box' ); ? >

<? php echo form_input ( array ( 'name' = > 'q', 'id' = > 'search-box', 'value' = > $search_terms)); ? >

<? php echo form_submit ( 'search' , 'Search' ); ? >

<? php echo form_close (); ? >

<? php if ( ! is_null ($ results )) : ? >

<? php if ( count ($ results )) : ? >

< p > Showing search results for ' <? php echo $ search_terms ; ? > ' ( <? php echo $ first_result ; ? > тАУ <? php echo $ last_result ; ? > of <? php echo $ total_results ; ? > ): </ p >

< ul >

<? php foreach ($ results as $ result ) : ? >

< li >< a href ="&# 60 ;? php echo $ result- > url; ? > " ><? php echo search_highlight ($ result- > title, $search_terms); ? ></ a >< br /><? php echo search_extract ($ result- > content, $search_terms); ? ></ li >

<? php endforeach ? >

</ ul >

<? php echo $ this- > pagination- > create_links(); ? >

<? php else: ? >

< p >< em > There are no results for your query. </ em ></ p >

<? php endif ? >

<? php endif ? >




* This source code was highlighted with Source Code Highlighter .






рдФрд░ рдЗрд╕рд▓рд┐рдП рдирдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо:

рдЫрд╡рд┐



7. рдФрд░ рднреА рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдЪрд┐рдкреНрд╕ред



CodeIgniter рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

// Mark the start of search

$ this ->benchmark->mark( 'search_start' );

// Load the model, perform the search and establish the total

// number of results

$ this ->load->model( 'page_model' );

$results = $ this ->page_model->search($search_terms, $start, $results_per_page);

$total_results = $ this ->page_model->count_search_results($search_terms);

// Mark the end of search

$ this ->benchmark->mark( 'search_end' );




* This source code was highlighted with Source Code Highlighter .






рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдлреЙрд░реНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЫрд╡рд┐







All Articles