2017-09-01 21 views
0

URLごとに同じコンテンツを表示したい。たとえば:同じページを別のURLで表示することはできますか?

website.com/controllername/country/state1/dist1/ 
website.com/controllername/country/state2/dist2/ 

私はいくつかのコンテンツが(国家と地区の名前のような)URLに基​​づいて変化するであろうけれどもこれらの二つのURLが同じcontent.Evenを示したいと思います。私はすべてのURLに別々のコンテンツ/ページを作成したくありません。 Codeigniterで可能かどうか知りたいですか? Codeigniterに上記のようなURLを表示することは可能ですか?

+0

2つの異なるルートを持つ同じ 'view'ファイルが必要でしょうか。 – C2486

+0

そうでしょう、このようなURLパターンの全体のポイントです。それはすべてあなたのルーティングルールなどを設定することに依存します。私はあなたがドキュメントでこれを調べることができると確信しています。 – ADyson

答えて

0

他のフレームワークとは異なり、CodeIgniterにはグローバルテンプレートシステムはありません。各コントローラは、システムとは独立した独自の出力を制御し、特に指定しない限り、FIFOはFIFOです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" > 
<html> 
    <head> 
     <title><?=$title?></title> 
     <!-- Javascript --> 
     <?=$javascript ?> 
     <!-- Stylesheets --> 
     <?=$css ?> 
    </head> 
    <body> 
     <div id="header"> 
      <!-- Logos, menus, etc... --> 
     </div> 
     <div id="content"> 

とグローバルフッタ:

</div> 
     <div id="footer"> 
      <!-- Copyright, sitemap, links, etc... --> 
     </div> 
    </body> 
</html> 

その後、私たちのコントローラははいあなたができる

class Welcome extends Controller { 

    function index() { 
     $data['title'] = 'My title'; 
     // Javascript, CSS, etc... 

     $this->load->view('header', $data); 

     $data = array(); 
     // Content view data 
     $this->load->view('my_content_view', $data); 

     $data = array(); 
     // Copyright, sitemap, links, etc... 
     $this->load->view('footer', $data); 
    } 
} 
0

のように見えなければならないだろう、我々はグローバルヘッダーを持っている場合たとえば、

ルーティングで異なるURL設定で同じページを設定します。 詳細は下のリンクを参照してください。 https://www.codeigniter.com/userguide3/general/routing.html

$ルート[ '/ dist1 /コントローラ/国/ STATE1'] = 'カタログ/ product_lookup'; $ route ['controllername/country/state1/dist2 /'] = 'catalog/product_lookup';

1

はい、それは、CodeIgniterのルーティングを使用してapplication/config/routes.php krishnarajの答えを改善、

$route['([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])'] = 'your_controller_name/your_function_name/$1/$1/$1';

+0

同じページにアクセスする2つのパラメータを持つすべてのページをルーティングします。その良い解決策はありません。 –

0

を以下のコードを貼り付け、あなたが使用されているコントローラと機能名を変更...

可能です

あなたが必要です website.com/controllername/method1/st/dist/ website.com/controllername/method2/st/dist/

// i'veは、より良い理解のためにいくつかの変数を変更し、「国が」 は//の場合

ので、あなたのコントローラで、あなただけの

public function method1($st1,$st2){ 
    $this->load->view('header'); 

    $this->load->model('data_processing'); 
    $data['data'] = $this->data_processing->any_model_function($st1,$st2); 

    $this->load->view('page_you_want',$data); 
    //here you choose the same view for both methods 

    $this->load->view('footer'); 
} 

public function method2($st1,$st2){ 
    $this->load->view('header'); 

    $this->load->model('data_processing'); 
    $data['data'] = $this->data_processing->any_model_function($st1,$st2); 

    $this->load->view('page_you_want',$data); 
    //here you choose the same view 

    $this->load->view('footer'); 
} 

主な変更になりますKavin SMKで説明ルート設定は、

'your_controller_name/your_function_name/$1/$1/$1'; 

するのではなく、ただのミスに気づいたにそれがあることshoud

'your_controller_name/your_function_name/$1/$2/$3'; 

まあ、同じことをする方法はたくさんありますが、あなたのものを選択してください。 幸運を祈る!

関連する問題