How to Integrate SEOStats with Codeigniter?

时光怂恿深爱的人放手 提交于 2019-12-23 19:08:31

问题


Hello I want to integrate the SEOStats Class with a project in codeigniter , is anyone provide me solution ?

I have tried to make the SEOstats class as a helper and load the helper in the specific controler , but a blank page is showing , I also try to include it via view but the same blank page i am seeing ,

I have included this code in my view file , the SEOstats directory also in the same views directory .

    <?php
    require_once  'SEOstats/bootstrap.php';

  use \SEOstats\Services as SEOstats;

  try {
    $url = 'http://www.google.com/';

 // Create a new SEOstats instance.
 $seostats = new \SEOstats\SEOstats;

  // Bind the URL to the current SEOstats instance.
  if ($seostats->setUrl($url)) {

   echo SEOstats\Alexa::getGlobalRank();
   echo SEOstats\Google::getPageRank();
 }
 }
 catch (SEOstatsException $e) {
 die($e->getMessage());
 }

i have also used it as library

<?php
 namespace SEOstats;

 use SEOstats\Common\SEOstatsException as E;
 use SEOstats\Config as Config;
 use SEOstats\Helper as Helper;
use SEOstats\Services as Service;



 class SEOstats
 {
   const BUILD_NO = Config\Package::VERSION_CODE;

protected static $_url,
                 $_host,
                 $_lastHtml,
                 $_lastLoadedUrl
                 = false;

public function __construct($url = false)
{
    if (false !== $url) {
        self::setUrl($url);
    }
}

public function Alexa()
{
    return new Service\Alexa;
}

public function Google()
{
    return new Service\Google;
}

public function OpenSiteExplorer()
{
    return new Service\OpenSiteExplorer;
}

public function SEMRush()
{
    return new Service\SemRush;
}

public function Sistrix()
{
    return new Service\Sistrix;
}

public function Social()
{
    return new Service\Social;
}

public static function getHost()
{
    return self::$_host;
}

public static function getLastLoadedHtml()
{
    return self::$_lastHtml;
}

public static function getLastLoadedUrl()
{
    return self::$_lastLoadedUrl;
}

/**
 * Ensure the URL is set, return default otherwise
 * @return string
 */
public static function getUrl($url = false)
{
    $url = false !== $url ? $url : self::$_url;
    return $url;
}

public function setUrl($url)
{
    if (false !== Helper\Url::isRfc($url)) {
        self::$_url  = $url;
        self::$_host = Helper\Url::parseHost($url);
    }
    else {
        throw new E('Invalid URL!');
        exit();
    }
    return true;
}

/**
 * @return DOMDocument
 */
protected static function _getDOMDocument($html) {
    $doc = new \DOMDocument;
    @$doc->loadHtml($html);
    return $doc;
}

/**
 * @return DOMXPath
 */
protected static function _getDOMXPath($doc) {
    $xpath = new \DOMXPath($doc);
    return $xpath;
}

/**
 * @return HTML string
 */
protected static function _getPage($url) {
    $url = self::getUrl($url);
    if (self::getLastLoadedUrl() == $url) {
        return self::getLastLoadedHtml();
    }

    $html = Helper\HttpRequest::sendRequest($url);
    if ($html) {
        self::$_lastLoadedUrl = $url;
        self::_setHtml($html);
        return $html;
    }
    else {
        self::noDataDefaultValue();
    }
}

protected static function _setHtml($str)
{
    self::$_lastHtml = $str;
}

protected static function noDataDefaultValue()
{
    return Config\DefaultSettings::DEFAULT_RETURN_NO_DATA;
}

  }

and loaded the library as

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

回答1:


I know this post is old. But I was looking for a solution as well recently and ended up writing my own and figured I would leave it here in case anyone else was looking for a solution in the future.

Place the following in a library file and autoload if you want.

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

class SEOstatistics {

   private $seostats;

   function __construct() {
      require_once( APPPATH . 'third_party/seostats/bootstrap.php' );

      $this->seostats = new \SEOstats\SEOstats;
   }

   private function alexa() {
      return new \SEOstats\Services\Alexa;
   }

   private function google() {
      return new \SEOstats\Services\Google;
   }

   private function moz() {
      return new \SEOstats\Services\Mozscape();
   }

   private function openSiteExplorer() {
      return new \SEOstats\Services\OpenSiteExplorer();
   }

   private function semRush() {
      return new \SEOstats\Services\SemRush();
   }

   private function sistrix() {
      return new \SEOstats\Services\Sistrix();
   }

   private function social() {
      return new \SEOstats\Services\Social();
   }

   public function __call($method, $url) {
       if (method_exists($this, $method)) {
          if ($this->seostats->setUrl($url[0])) {
             return call_user_func_array(array($this, $method),array());
          }

          return false;
       }
   }
}

And then an example of using it in a controller or model is:

$google = $this->seostatistics->google($url);
$rank = $google->getPageRank();



回答2:


This is how I include SEOStats on my Codeigniter website

class Cron extends Frontend_Controller
{

    public function get_google_page_rank() {
        require_once (APPPATH . 'libraries/SEOstats/bootstrap.php');
        try {
            $url = 'http://www.google.com/';

            // Get the Google PageRank for the given URL.
            $pagerank = \SEOstats\Services\Google::getPageRank($url);
            echo "The current Google PageRank for {$url} is {$pagerank}." . PHP_EOL;
        }
        catch(\Exception $e) {
            echo 'Caught SEOstatsException: ' . $e->getMessage();
        }
    }
    public function get_alexa_page_rank() {
        require_once (APPPATH . 'libraries/SEOstats/bootstrap.php');

        //use \SEOstats\Services\Alexa as Alexa;

        try {
            $url = 'https://www.google.com/';

            // Create a new SEOstats instance.
            $seostats = new \SEOstats\SEOstats;

            // Bind the URL to the current SEOstats instance.
            if ($seostats->setUrl($url)) {

                /**
                 *  Print HTML code for the 'daily traffic trend'-graph.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(1);

                /**
                 *  Print HTML code for the 'daily pageviews (percent)'-graph.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(2);

                /**
                 *  Print HTML code for the 'daily pageviews per user'-graph.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(3);

                /**
                 *  Print HTML code for the 'time on site (in minutes)'-graph.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(4);

                /**
                 *  Print HTML code for the 'bounce rate (percent)'-graph.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(5);

                /**
                 *  Print HTML code for the 'search visits'-graph, using
                 *  specific graph dimensions of 320*240 px.
                 */
                echo \SEOstats\Services\Alexa::getTrafficGraph(6, false, 320, 240);
            }
        }
        catch(\Exception $e) {
            echo 'Caught SEOstatsException: ' . $e->getMessage();
        }
    }
}

Hope this helps

PS: Copy SEOstats folder in application/libraries folder



来源:https://stackoverflow.com/questions/19726314/how-to-integrate-seostats-with-codeigniter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!