Неустранимая ошибка: класс "google_sitemap" не найден - PullRequest
0 голосов
/ 09 марта 2012

Я использую Google Codeigniter и хочу использовать карту сайта, но получаю следующую ошибку, как ее исправить?

Я получаю этот класс здесь: http://codeigniter.com/wiki/Google_Sitemaps

Ошибка:

Неустранимая ошибка: класс 'google_sitemap' не найден в D: \ xampp \ htdocs \ application \ controllers \ sitemap_google.php в строке 13

Это полный код в Controller здесь:D: \ xampp \ htdocs \ application \ controllers \ 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( $fp=@fsockopen($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 );
    }

} 

1 Ответ

0 голосов
/ 09 марта 2012
$this->load->plugin('google_sitemap'); //Load Plugin

Вы сказали:

Я использую последнюю версию Codeigniter.

В Codeigniter больше нет плагинов.

Похоже, вы ожидаете как минимум два класса в одном файле: google_sitemap_item и google_sitemap. Загрузчик CI не очень хорошо с этим работает (он рассчитывает на один класс на файл), поэтому даже не беспокойтесь о загрузчике CI, просто сделайте прямой переход:

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

Вы также используете старые конструкторы PHP4, что предполагает использование более старой версии CI (текущая версия 2.1.0, вы можете проверить с помощью echo CI_VERSION;). Итак, это:

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

Должно быть так:

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