2012-03-09 21 views
0

私はgoogle codeigniterを使用していますが、私はサイトマップを使用したいのですがエラーを受け取ります。致命的なエラー:クラス 'google_sitemap'が見つかりません

私はここからこのクラスを取得:http://codeigniter.com/wiki/Google_Sitemaps

エラー:

Fatal error: Class 'google_sitemap' not found in D:\xampp\htdocs\application\controllers\sitemap_google.php on line 13

をこれは、ここでコントローラで完全なコードです:D:\ xamppの\ htdocsに\アプリケーション\コントローラ\ sitemap_google.php:

<?php 
class Sitemap_google extends CI_Controller 
{ 
    function My_controller() 
    { 
     parent::Controller(); 
     $this->load->helper(array('text','url')); 
     $this->load->plugin('google_sitemap'); //Load Plugin 
    } 

    function index() 
    { 
     $sitemap = new google_sitemap; //This is line 13 
     $item = new google_sitemap_item(base_url()."MY_WEBSITE_URL",date("Y-m-d"), 'weekly', '0.8'); //Create a new Item 
     $sitemap->add_item($item); //Append the item to the sitemap object 
     $sitemap->build("./sitemap.xml"); //Build it... 

     //Let's compress it to gz 
     $data = implode("", file("./sitemap.xml")); 
     $gzdata = gzencode($data, 9); 
     $fp = fopen("./sitemap.xml.gz", "w"); 
     fwrite($fp, $gzdata); 
     fclose($fp); 

     //Let's Ping google 
     $this->_pingGoogleSitemaps(base_url()."/sitemap.xml.gz"); 
    } 

    function _pingGoogleSitemaps($url_xml) 
    { 
     $status = 0; 
     $google = 'www.google.com'; 
     if([email protected]($google, 80)) 
     { 
      $req = 'GET /webmasters/sitemaps/ping?sitemap=' . 
        urlencode($url_xml) . " HTTP/1.1\r\n" . 
        "Host: $google\r\n" . 
        "User-Agent: Mozilla/5.0 (compatible; " . 
        PHP_OS . ") PHP/" . PHP_VERSION . "\r\n" . 
        "Connection: Close\r\n\r\n"; 
      fwrite($fp, $req); 
      while(!feof($fp)) 
      { 
      if(@preg_match('~^HTTP/\d\.\d (\d+)~i', fgets($fp, 128), $m)) 
      { 
       $status = intval($m[1]); 
       break; 
      } 
      } 
      fclose($fp); 
     } 
     return($status); 
    } 

} 
+0

function My_controller() { parent::Controller(); $this->load->helper(array('text','url')); $this->load->plugin('google_sitemap'); //Load Plugin } 

はこのことでしょうか? 'echo CI_VERSION'で確認できます。私は "プラグイン"がしばらく削除されているので尋ねます。 –

+0

私はCodeigniterの最新バージョンを使用しています。 –

+0

'My_controller'がコンストラクタであると思われる場合は、間違っています。私はあなたがライブラリと普通のコントローラーを混ぜ合わせたと思う。 'MY_Controller()'の代わりに '__construct()'を呼び出してください。 – JohnP

答えて

0
$this->load->plugin('google_sitemap'); //Load Plugin 

あなたは言った:

I use last version of Codeigniter.

Codeigniterにはこれ以上プラグインはありません。

google_sitemap_itemgoogle_sitemapという2つのクラスが1つのファイルにあると思われます。 CIのローダは、(それがファイルごとに1つのクラスを期待)それとうまく再生されないので、でもCIローダーを気にしていない、ただまっすぐには含まれない:

include APPPATH.'path/to/file/google_sitemap.php'); 

あなたはまた古いPHP4を使用していますあなたがCIの古いバージョンを使用していることを示唆しているコンストラクタ(現在は2.1.0です。echo CI_VERSION;で確認できます)。だから、この:あなたが使用しているCodeIgniterのどのバージョンの

function __construct() 
{ 
    parent::__construct(); 
    $this->load->helper(array('text','url')); 
    include APPPATH.'path/to/file/google_sitemap.php'); 
} 
+0

私はそれを試して、エラーを取得し、私のURLを参照してください:http://www.neginph.com/sitemap_google/ –

+0

あなたのパス'。/ sitemap.xml'は正しくありません。 CIは常に 'index.php'で動作しているので、すべてのパスは相対パスでなければなりません。ファイルがルートディレクトリに存在しないか、間違ったパスを指定したかのいずれかです。それに失敗した場合は、 'FCPATH.'sitemap.xml 'のような絶対パスを試してください。少なくとも、クラスファイルが適切に読み込まれています。 –

関連する問題