2011-07-21 18 views
1

私はCodeIgniterの使用を開始しました。私は少し問題がありますが、それはかなり良いと感じています。CodeIgniter - ダイナミックメタデータの表示と入力

メタデータを処理するにはどうすればよいですか? ... viewsフォルダでは、 'includes'という別のフォルダを作成してそこにヘッダー、フッター、ナビゲーションビューを追加しました。

だから、各コントローラのメタデータを入力し、ヘッダービューに渡す必要があります。

私がこのことについてどのようにしているかの例を得ることができれば、それは素晴らしいことでしょう。次に、あなたのコントローラでは、このライブラリをロード

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class View_lib { 

    public function __construct() 
    { 
    $this->CI =& get_instance(); 
    } 

    public function load_view($template, $data = NULL) 
    { 
    $this->CI->load->view('header', $data); 
    $this->CI->load->view($template); 
    $this->CI->load->view('footer'); 
    } 

} 

/* End of file view_lib.php */ 
/* Location: ./system/application/libraries/view_lib.php */ 

乾杯、

答えて

1

は、あなたのライブラリフォルダに新しいファイルを作成します

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

はその後のような機能であなたのビューファイルを呼び出しますこれは:

$this->view_lib->load_view('name_of_view_file', $data); 

または(あなたが合格するために、任意のデータなしで静的ファイルを呼び出す場合):

$this->view_lib->load_view('name_of_view_file'); 

あり、これを行うための多くの方法がありますが、この1つは、私が働いているアプリケーションのためにうまく動作します。私のプロジェクトの1つでは、ユーザがログインしているかどうかによって、サイドバーの有無にかかわらず、別のヘッダとフッタをロードするために、view_libライブラリに複数の関数があります。

これは役に立ちます。

+0

ねえ、先端をありがとう...それはあなたがメタデータを渡すことができ – BigJobbies

+0

主なものであるメタタグの問題を解決するためのdoesntが。 'load_view'関数をチェックインすると、ヘッダに** $ data **が渡されます。私はこのように私のビューファイルのすべてにメタデータとページタイトルを渡します。 – tomthorgal

-1

私は見つけるそのちょうどアレイとページの頭の中でそれを渡すためにeasiet

$meta = array(
    array('name' => 'description', 'content' => 'Political website, Liberal, progressive, blog, posts,'), 
    array('name' => 'keywords', 'content' => 'politics, McCain, Beck, Hannity, Rush Limbaugh, Environment, Obama, ZB Block, Sarah Palin, Republicans, GOP, Democrats, Liberals, Conservatives, Reagan, Politicususa, FreakOut Nation, Raw Story, Congress, Senate, Representatives, Constitution, White, Black, racial, racsim, blog, blogging, Lemon, Lemonrose, Fox, Fox News, 
    political, partys, president'), 
    array('name' => 'Content-type', 'content' => 'text/html; charset=utf-8', 'type' => 'equiv'),  
    ); 
    echo meta($meta); 
1

私は、これは日付の質問のうちですけど、場合には、誰もがこのための簡単な解決策を探していますCodeigniter 2.2

最も簡単なことは、このためのヘルパーを作成することでした。

ヘルパーをアップロードのconfig/seo_config.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$config['seo_title'] = 'My title'; 
$config['seo_desc'] = 'My description'; 
$config['seo_robot'] = true; 

/* End of file seo_config.php */ 
/* Location: ./application/config/seo_config.php */ 

アプリケーション/ helers/seo_helper.phpにあるファイルを作成します

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* SEO Helper function 
* 
* Generates Meta tags for SEO 
* 
* @author Henrik Oldenborg 
* @version 1.0 
*/ 

/** 
* meta_tags() 
* 
* Generates tags for title, description and robots 
* Using title and description from config file as default 
* 
* @access public 
* @param string Title 
* @param string Description (155 characters) 
* @param bool Robots follow or no folow 
*/ 

if(! function_exists('meta_tags')){ 
    function meta_tags($meta) 
    { 
    $CI =& get_instance(); 
    $CI->config->load('seo_config'); 

    if(!isset($meta['title'])) 
     $meta['title'] = $CI->config->item('seo_title'); 

    if(!isset($meta['desc'])) 
     $meta['desc'] = $CI->config->item('seo_desc'); 

    if(!isset($meta['robot'])) 
     $meta['robot'] = $CI->config->item('seo_robot'); 

    $html = ''; 

    //uses default set in seo_config.php 

    $html .= '<title>'.$meta['title'].'</title>'; 
    $html .= '<meta name="title" content="'.$meta['title'].'"/>'; 
    $html .= '<meta name="description" content="'.$meta['desc'].'"/>'; 
    if($meta['robot'] == true){ 
     $html .= '<meta name="robots" content="index,follow"/>'; 

    } else { 
     $html .= '<meta name="robots" content="noindex,nofollow"/>'; 
    } 
    echo $html; 
    } 
} 

/* End of file seo_helper.php */ 
/* Location: ./application/helpers/seo_helper.php */ 

にあるファイルを作成します。 - (コントローラまたはconfig/autoloadのいずれか)。PHP)

$this->load->helper('seo_helper'); 

2個のヘッダータグ今

<?=(isset($meta) ? meta_tags($meta) : meta_tags());?> 

の間、あなたのビューで次のコードを追加し、あなたがする必要があるすべてはそうのようなあなたのコントローラで$メタ変数を宣言しています

$data['meta']['title'] = 'My special title'; 
$data['meta']['desc'] = 'My special description'; 
$this->load->view('mytemplate',$data) 

使用フルチップ コントローラのコンストラクタでメタデータを宣言することができます。このようにして、基礎となる関数に必要なときに簡単に上書きすることができます。

class Forum extends CI_Controller { 

    private $data = array(); 

    function __construct() 
    { 
    $this->data['meta']['title'] = 'My forum title'; 
    $this->data['meta']['robot'] = false; 
    parent::__construct(); 
    } 

    public function index() 
    { 
    $this->data['content'] = 'forum'; 
    $this->load->view('userarea/template',$this->data); 
    } 

    public function topic($topic_id) 
    { 
    $this->data['meta']['title'] = 'My specific title'; 
    $this->data['content'] = 'topic'; 
    $this->load->view('userarea/template',$this->data); 
    } 
} 
関連する問題