PDF rausgenommen
This commit is contained in:
75
msd2/tracking/piwik/plugins/SEO/API.php
Normal file
75
msd2/tracking/piwik/plugins/SEO/API.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO;
|
||||
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\SEO\Metric\Aggregator;
|
||||
use Piwik\Plugins\SEO\Metric\Metric;
|
||||
use Piwik\Plugins\SEO\Metric\ProviderCache;
|
||||
use Piwik\Url;
|
||||
|
||||
/**
|
||||
* @see plugins/Referrers/functions.php
|
||||
* @method static API getInstance()
|
||||
*/
|
||||
require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/functions.php';
|
||||
|
||||
/**
|
||||
* The SEO API lets you access a list of SEO metrics for the specified URL: Google PageRank, Google/Bing indexed pages
|
||||
* Alexa Rank and age of the Domain name.
|
||||
*
|
||||
* @method static API getInstance()
|
||||
*/
|
||||
class API extends \Piwik\Plugin\API
|
||||
{
|
||||
/**
|
||||
* Returns SEO statistics for a URL.
|
||||
*
|
||||
* @param string $url URL to request SEO stats for
|
||||
* @return DataTable
|
||||
*/
|
||||
public function getRank($url)
|
||||
{
|
||||
Piwik::checkUserHasSomeViewAccess();
|
||||
|
||||
$metricProvider = new ProviderCache(new Aggregator());
|
||||
$domain = Url::getHostFromUrl($url);
|
||||
$metrics = $metricProvider->getMetrics($domain);
|
||||
|
||||
return $this->toDataTable($metrics);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Metric[] $metrics
|
||||
* @return DataTable
|
||||
*/
|
||||
private function toDataTable(array $metrics)
|
||||
{
|
||||
$translated = array();
|
||||
|
||||
foreach ($metrics as $metric) {
|
||||
if (!$metric instanceof Metric) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$label = Piwik::translate($metric->getName());
|
||||
$translated[$label] = array(
|
||||
'id' => $metric->getId(),
|
||||
'rank' => $metric->getValue(),
|
||||
'logo' => $metric->getLogo(),
|
||||
'logo_link' => $metric->getLogoLink(),
|
||||
'logo_tooltip' => Piwik::translate($metric->getLogoTooltip()),
|
||||
'rank_suffix' => Piwik::translate($metric->getValueSuffix()),
|
||||
);
|
||||
}
|
||||
|
||||
return DataTable::makeFromIndexedArray($translated);
|
||||
}
|
||||
}
|
64
msd2/tracking/piwik/plugins/SEO/Metric/Aggregator.php
Normal file
64
msd2/tracking/piwik/plugins/SEO/Metric/Aggregator.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Piwik\Piwik;
|
||||
|
||||
/**
|
||||
* Aggregates metrics from several providers.
|
||||
*/
|
||||
class Aggregator implements MetricsProvider
|
||||
{
|
||||
/**
|
||||
* @var MetricsProvider[]
|
||||
*/
|
||||
private $providers;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->providers = $this->getProviders();
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
$metrics = array();
|
||||
|
||||
foreach ($this->providers as $provider) {
|
||||
$metrics = array_merge($metrics, $provider->getMetrics($domain));
|
||||
}
|
||||
|
||||
return $metrics;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MetricsProvider[]
|
||||
*/
|
||||
private function getProviders()
|
||||
{
|
||||
$container = StaticContainer::getContainer();
|
||||
|
||||
$providers = array(
|
||||
$container->get('Piwik\Plugins\SEO\Metric\Google'),
|
||||
$container->get('Piwik\Plugins\SEO\Metric\Bing'),
|
||||
$container->get('Piwik\Plugins\SEO\Metric\Alexa'),
|
||||
$container->get('Piwik\Plugins\SEO\Metric\DomainAge'),
|
||||
);
|
||||
|
||||
/**
|
||||
* Use this event to register new SEO metrics providers.
|
||||
*
|
||||
* @param array $providers Contains an array of Piwik\Plugins\SEO\Metric\MetricsProvider instances.
|
||||
*/
|
||||
Piwik::postEvent('SEO.getMetricsProviders', array(&$providers));
|
||||
|
||||
return $providers;
|
||||
}
|
||||
}
|
69
msd2/tracking/piwik/plugins/SEO/Metric/Alexa.php
Normal file
69
msd2/tracking/piwik/plugins/SEO/Metric/Alexa.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Http;
|
||||
use Piwik\NumberFormatter;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Retrieves the Alexa rank.
|
||||
*/
|
||||
class Alexa implements MetricsProvider
|
||||
{
|
||||
const URL = 'https://data.alexa.com/data?cli=10&url=';
|
||||
const URL_FALLBACK = 'https://www.alexa.com/minisiteinfo/';
|
||||
const LINK = 'https://www.alexa.com/siteinfo/';
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
public function __construct(LoggerInterface $logger)
|
||||
{
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
try {
|
||||
$response = Http::sendHttpRequest(self::URL . urlencode($domain), $timeout = 10, @$_SERVER['HTTP_USER_AGENT']);
|
||||
$xml = @simplexml_load_string($response);
|
||||
$value = $xml ? NumberFormatter::getInstance()->formatNumber((int)$xml->SD->POPULARITY['TEXT']) : null;
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while getting Alexa SEO stats: {message}', array('message' => $e->getMessage()));
|
||||
$value = $this->tryFallbackMethod($domain);
|
||||
}
|
||||
|
||||
$logo = "plugins/Morpheus/icons/dist/SEO/alexa.com.png";
|
||||
$link = self::LINK . urlencode($domain);
|
||||
|
||||
return array(
|
||||
new Metric('alexa', 'SEO_AlexaRank', $value, $logo, $link)
|
||||
);
|
||||
}
|
||||
|
||||
private function tryFallbackMethod($domain)
|
||||
{
|
||||
try {
|
||||
$response = Http::sendHttpRequest(self::URL_FALLBACK . urlencode($domain), $timeout = 10, @$_SERVER['HTTP_USER_AGENT']);
|
||||
$dom = new \DomDocument();
|
||||
$dom->loadHTML($response);
|
||||
$nodes = (new \DomXPath($dom))->query("//div[contains(@class, 'data')]");
|
||||
if (isset($nodes[0]->nodeValue)) {
|
||||
$globalRanking = (int) str_replace(array(',', '.'), '', $nodes[0]->nodeValue);
|
||||
return NumberFormatter::getInstance()->formatNumber($globalRanking);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while getting Alexa SEO stats via fallback method: {message}', array('message' => $e->getMessage()));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
56
msd2/tracking/piwik/plugins/SEO/Metric/Bing.php
Normal file
56
msd2/tracking/piwik/plugins/SEO/Metric/Bing.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Http;
|
||||
use Piwik\NumberFormatter;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Fetches the number of pages indexed in Bing.
|
||||
*/
|
||||
class Bing implements MetricsProvider
|
||||
{
|
||||
const URL = 'https://www.bing.com/search?setlang=en-US&rdr=1&q=site%3A';
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
public function __construct(LoggerInterface $logger)
|
||||
{
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
$url = self::URL . urlencode($domain);
|
||||
|
||||
try {
|
||||
$response = str_replace(' ', ' ', Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
|
||||
$response = str_replace(' ', '', $response); // number uses nbsp as thousand seperator
|
||||
|
||||
if (preg_match('#([0-9,\.]+) results#i', $response, $p)) {
|
||||
$pageCount = NumberFormatter::getInstance()->formatNumber((int)str_replace(array(',', '.'), '', $p[1]));
|
||||
} else {
|
||||
$pageCount = 0;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while getting Bing SEO stats: {message}', array('message' => $e->getMessage()));
|
||||
$pageCount = null;
|
||||
}
|
||||
|
||||
$logo = "plugins/Morpheus/icons/dist/SEO/bing.com.png";
|
||||
|
||||
return array(
|
||||
new Metric('bing-index', 'SEO_Bing_IndexedPages', $pageCount, $logo, null, null, 'General_Pages')
|
||||
);
|
||||
}
|
||||
}
|
139
msd2/tracking/piwik/plugins/SEO/Metric/DomainAge.php
Normal file
139
msd2/tracking/piwik/plugins/SEO/Metric/DomainAge.php
Normal file
@ -0,0 +1,139 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Http;
|
||||
use Piwik\Metrics\Formatter;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Fetches the domain age using archive.org, who.is and whois.com.
|
||||
*/
|
||||
class DomainAge implements MetricsProvider
|
||||
{
|
||||
/**
|
||||
* @var Formatter
|
||||
*/
|
||||
private $formatter;
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
public function __construct(Formatter $formatter, LoggerInterface $logger)
|
||||
{
|
||||
$this->formatter = $formatter;
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
$domain = str_replace('www.', '', $domain);
|
||||
|
||||
$ages = array();
|
||||
|
||||
$age = $this->getAgeArchiveOrg($domain);
|
||||
if ($age > 0) {
|
||||
$ages[] = $age;
|
||||
}
|
||||
|
||||
$age = $this->getAgeWhoIs($domain);
|
||||
if ($age > 0) {
|
||||
$ages[] = $age;
|
||||
}
|
||||
|
||||
$age = $this->getAgeWhoisCom($domain);
|
||||
if ($age > 0) {
|
||||
$ages[] = $age;
|
||||
}
|
||||
|
||||
if (count($ages) > 0) {
|
||||
$value = min($ages);
|
||||
$value = $this->formatter->getPrettyTimeFromSeconds(time() - $value, true);
|
||||
} else {
|
||||
$value = null;
|
||||
}
|
||||
|
||||
return array(
|
||||
new Metric('domain-age', 'SEO_DomainAge', $value, 'plugins/Morpheus/icons/dist/SEO/whois.png')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the domain age archive.org lists for the current url
|
||||
*
|
||||
* @param string $domain
|
||||
* @return int
|
||||
*/
|
||||
private function getAgeArchiveOrg($domain)
|
||||
{
|
||||
$response = $this->getUrl('https://archive.org/wayback/available?timestamp=19900101&url=' . urlencode($domain));
|
||||
$data = json_decode($response, true);
|
||||
if (empty($data["archived_snapshots"]["closest"]["timestamp"])) {
|
||||
return 0;
|
||||
}
|
||||
return strtotime($data["archived_snapshots"]["closest"]["timestamp"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the domain age who.is lists for the current url
|
||||
*
|
||||
* @param string $domain
|
||||
* @return int
|
||||
*/
|
||||
private function getAgeWhoIs($domain)
|
||||
{
|
||||
$data = $this->getUrl('https://www.who.is/whois/' . urlencode($domain));
|
||||
preg_match('#(?:Creation Date|Created On|created|Registered on)\.*:\s*([ \ta-z0-9\/\-:\.]+)#si', $data, $p);
|
||||
if (!empty($p[1])) {
|
||||
$value = strtotime(trim($p[1]));
|
||||
if ($value === false) {
|
||||
return 0;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the domain age whois.com lists for the current url
|
||||
*
|
||||
* @param string $domain
|
||||
* @return int
|
||||
*/
|
||||
private function getAgeWhoisCom($domain)
|
||||
{
|
||||
$data = $this->getUrl('https://www.whois.com/whois/' . urlencode($domain));
|
||||
preg_match('#(?:Creation Date|Created On|created|Registration Date):\s*([ \ta-z0-9\/\-:\.]+)#si', $data, $p);
|
||||
if (!empty($p[1])) {
|
||||
$value = strtotime(trim($p[1]));
|
||||
if ($value === false) {
|
||||
return 0;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private function getUrl($url)
|
||||
{
|
||||
try {
|
||||
return $this->getHttpResponse($url);
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while getting SEO stats (domain age): {message}', array('message' => $e->getMessage()));
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
private function getHttpResponse($url)
|
||||
{
|
||||
return str_replace(' ', ' ', Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
|
||||
}
|
||||
}
|
64
msd2/tracking/piwik/plugins/SEO/Metric/Google.php
Normal file
64
msd2/tracking/piwik/plugins/SEO/Metric/Google.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Http;
|
||||
use Piwik\NumberFormatter;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Retrieves Google PageRank.
|
||||
*/
|
||||
class Google implements MetricsProvider
|
||||
{
|
||||
const SEARCH_URL = 'https://www.google.com/search?hl=en&q=site%3A';
|
||||
|
||||
/**
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* @param LoggerInterface $logger
|
||||
*/
|
||||
public function __construct(LoggerInterface $logger)
|
||||
{
|
||||
$this->logger = $logger;
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
$pageCount = $this->fetchIndexedPagesCount($domain);
|
||||
|
||||
$logo = "plugins/Morpheus/icons/dist/SEO/google.com.png";
|
||||
|
||||
return array(
|
||||
new Metric('google-index', 'SEO_Google_IndexedPages', $pageCount, $logo, null, null, 'General_Pages'),
|
||||
);
|
||||
}
|
||||
|
||||
public function fetchIndexedPagesCount($domain)
|
||||
{
|
||||
$url = self::SEARCH_URL . urlencode($domain);
|
||||
|
||||
try {
|
||||
$response = str_replace(' ', ' ', Http::sendHttpRequest($url, $timeout = 10, @$_SERVER['HTTP_USER_AGENT']));
|
||||
|
||||
if (preg_match('#([0-9,\.]+) results#i', $response, $p)) {
|
||||
return NumberFormatter::getInstance()->formatNumber((int)str_replace(array(',', '.'), '', $p[1]));
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->warning('Error while getting Google search SEO stats: {message}', array('message' => $e->getMessage()));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
145
msd2/tracking/piwik/plugins/SEO/Metric/Metric.php
Normal file
145
msd2/tracking/piwik/plugins/SEO/Metric/Metric.php
Normal file
@ -0,0 +1,145 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
/**
|
||||
* Describes a SEO metric.
|
||||
*/
|
||||
class Metric
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $name;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $value;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $logo;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
private $logoLink;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
private $logoTooltip;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
private $valueSuffix;
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
* @param string $name Can be a string or a translation ID.
|
||||
* @param string $value Rank value.
|
||||
* @param string $logo URL to a logo.
|
||||
* @param string|null $logoLink
|
||||
* @param string|null $logoTooltip
|
||||
* @param string|null $valueSuffix
|
||||
*/
|
||||
public function __construct($id, $name, $value, $logo, $logoLink = null, $logoTooltip = null, $valueSuffix = null)
|
||||
{
|
||||
$this->id = $id;
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
$this->logo = $logo;
|
||||
$this->logoLink = $logoLink;
|
||||
$this->logoTooltip = $logoTooltip;
|
||||
$this->valueSuffix = $valueSuffix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getLogo()
|
||||
{
|
||||
return $this->logo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getLogoLink()
|
||||
{
|
||||
return $this->logoLink;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getLogoTooltip()
|
||||
{
|
||||
return $this->logoTooltip;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null|string
|
||||
*/
|
||||
public function getValueSuffix()
|
||||
{
|
||||
return $this->valueSuffix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows the class to be serialized with var_export (in the cache).
|
||||
*
|
||||
* @param array $array
|
||||
* @return Metric
|
||||
*/
|
||||
public static function __set_state($array)
|
||||
{
|
||||
return new self(
|
||||
$array['id'],
|
||||
$array['name'],
|
||||
$array['value'],
|
||||
$array['logo'],
|
||||
$array['logoLink'],
|
||||
$array['logoTooltip'],
|
||||
$array['valueSuffix']
|
||||
);
|
||||
}
|
||||
}
|
21
msd2/tracking/piwik/plugins/SEO/Metric/MetricsProvider.php
Normal file
21
msd2/tracking/piwik/plugins/SEO/Metric/MetricsProvider.php
Normal file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
/**
|
||||
* Provides SEO metrics for a domain.
|
||||
*/
|
||||
interface MetricsProvider
|
||||
{
|
||||
/**
|
||||
* @param string $domain
|
||||
* @return Metric[]
|
||||
*/
|
||||
public function getMetrics($domain);
|
||||
}
|
48
msd2/tracking/piwik/plugins/SEO/Metric/ProviderCache.php
Normal file
48
msd2/tracking/piwik/plugins/SEO/Metric/ProviderCache.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace Piwik\Plugins\SEO\Metric;
|
||||
|
||||
use Piwik\Cache;
|
||||
|
||||
/**
|
||||
* Caches another provider.
|
||||
*/
|
||||
class ProviderCache implements MetricsProvider
|
||||
{
|
||||
/**
|
||||
* @var MetricsProvider
|
||||
*/
|
||||
private $provider;
|
||||
|
||||
/**
|
||||
* @var Cache\Lazy
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
public function __construct(MetricsProvider $provider)
|
||||
{
|
||||
$this->provider = $provider;
|
||||
$this->cache = Cache::getLazyCache();
|
||||
}
|
||||
|
||||
public function getMetrics($domain)
|
||||
{
|
||||
$cacheId = 'SEO_getRank_' . md5($domain);
|
||||
|
||||
$metrics = $this->cache->fetch($cacheId);
|
||||
|
||||
if (! is_array($metrics)) {
|
||||
$metrics = $this->provider->getMetrics($domain);
|
||||
|
||||
$this->cache->save($cacheId, $metrics, 60 * 60 * 6);
|
||||
}
|
||||
|
||||
return $metrics;
|
||||
}
|
||||
}
|
34
msd2/tracking/piwik/plugins/SEO/SEO.php
Normal file
34
msd2/tracking/piwik/plugins/SEO/SEO.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*
|
||||
*/
|
||||
namespace Piwik\Plugins\SEO;
|
||||
use Piwik\Plugins\SEO\Widgets\GetRank;
|
||||
use Piwik\SettingsPiwik;
|
||||
use Piwik\Widget\WidgetsList;
|
||||
|
||||
/**
|
||||
*/
|
||||
class SEO extends \Piwik\Plugin
|
||||
{
|
||||
public function registerEvents()
|
||||
{
|
||||
return [
|
||||
'Widget.filterWidgets' => 'filterWidgets'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WidgetsList $list
|
||||
*/
|
||||
public function filterWidgets($list)
|
||||
{
|
||||
if (!SettingsPiwik::isInternetEnabled()) {
|
||||
$list->remove(GetRank::getCategory(), GetRank::getName());
|
||||
}
|
||||
}
|
||||
}
|
64
msd2/tracking/piwik/plugins/SEO/Widgets/GetRank.php
Normal file
64
msd2/tracking/piwik/plugins/SEO/Widgets/GetRank.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*
|
||||
*/
|
||||
namespace Piwik\Plugins\SEO\Widgets;
|
||||
|
||||
use Piwik\Common;
|
||||
use Piwik\DataTable\Renderer;
|
||||
use Piwik\Widget\WidgetConfig;
|
||||
use Piwik\Site;
|
||||
use Piwik\Url;
|
||||
use Piwik\UrlHelper;
|
||||
use Piwik\Plugins\SEO\API;
|
||||
|
||||
class GetRank extends \Piwik\Widget\Widget
|
||||
{
|
||||
public static function getCategory()
|
||||
{
|
||||
return 'SEO';
|
||||
}
|
||||
|
||||
public static function getName()
|
||||
{
|
||||
return 'SEO_SeoRankings';
|
||||
}
|
||||
|
||||
public static function configure(WidgetConfig $config)
|
||||
{
|
||||
$config->setCategoryId(self::getCategory());
|
||||
$config->setName(self::getName());
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
$idSite = Common::getRequestVar('idSite');
|
||||
$site = new Site($idSite);
|
||||
|
||||
$url = urldecode(Common::getRequestVar('url', '', 'string'));
|
||||
|
||||
if (!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
|
||||
$url = 'http://' . $url;
|
||||
}
|
||||
|
||||
if (empty($url) || !UrlHelper::isLookLikeUrl($url)) {
|
||||
$url = $site->getMainUrl();
|
||||
}
|
||||
|
||||
$dataTable = API::getInstance()->getRank($url);
|
||||
|
||||
/** @var \Piwik\DataTable\Renderer\Php $renderer */
|
||||
$renderer = Renderer::factory('php');
|
||||
$renderer->setSerialize(false);
|
||||
|
||||
return $this->renderTemplate('getRank', array(
|
||||
'urlToRank' => Url::getHostFromUrl($url),
|
||||
'ranks' => $renderer->render($dataTable)
|
||||
));
|
||||
}
|
||||
|
||||
}
|
31
msd2/tracking/piwik/plugins/SEO/javascripts/rank.js
Normal file
31
msd2/tracking/piwik/plugins/SEO/javascripts/rank.js
Normal file
@ -0,0 +1,31 @@
|
||||
/*!
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
*/
|
||||
|
||||
$(document).ready(function () {
|
||||
function getRank() {
|
||||
var ajaxRequest = new ajaxHelper();
|
||||
ajaxRequest.setLoadingElement('#ajaxLoadingSEO');
|
||||
ajaxRequest.addParams({
|
||||
module: 'SEO',
|
||||
action: 'getRank',
|
||||
url: encodeURIComponent($('#seoUrl').val())
|
||||
}, 'get');
|
||||
ajaxRequest.setCallback(
|
||||
function (response) {
|
||||
$('#SeoRanks').html(response);
|
||||
}
|
||||
);
|
||||
ajaxRequest.setFormat('html');
|
||||
ajaxRequest.send();
|
||||
}
|
||||
|
||||
// click on Rank button
|
||||
$('#rankbutton').on('click', function () {
|
||||
getRank();
|
||||
return false;
|
||||
});
|
||||
});
|
9
msd2/tracking/piwik/plugins/SEO/lang/ar.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/ar.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "رتبة أليكسا",
|
||||
"DomainAge": "عمر اسن النطاق",
|
||||
"Rank": "الرتبة",
|
||||
"SeoRankings": "رتب ملائمة محركات البحث",
|
||||
"SEORankingsFor": "رتبة ملائمة محركات البحث في %s"
|
||||
}
|
||||
}
|
9
msd2/tracking/piwik/plugins/SEO/lang/be.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/be.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa ранг",
|
||||
"DomainAge": "Узрост дамена",
|
||||
"Rank": "Ранг",
|
||||
"SeoRankings": "SEO рэйтынгі",
|
||||
"SEORankingsFor": "SEO рэйтынгі для %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/bg.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/bg.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Този плъгин извлича и показва SEO метрики: Alexa уеб ранк, Google Pagerank, брой индексирани страници и брой обратни връзки за избраната уеб страница.",
|
||||
"AlexaRank": "Alexa ранг",
|
||||
"Bing_IndexedPages": "Bing индексирани страници",
|
||||
"DomainAge": "Възраст на домейна",
|
||||
"Google_IndexedPages": "Google индексирани страници",
|
||||
"Rank": "Ранг",
|
||||
"SeoRankings": "SEO ранг",
|
||||
"SEORankingsFor": "SEO ранг за %s"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/ca.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/ca.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Ranking Alexa",
|
||||
"Bing_IndexedPages": "Pàgines indexades per Bing",
|
||||
"DomainAge": "Edat del domini",
|
||||
"Google_IndexedPages": "Pàgines indexades per Google",
|
||||
"Rank": "Ranking",
|
||||
"SeoRankings": "Ranking SEO",
|
||||
"SEORankingsFor": "Ranking SEO per %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/cs.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/cs.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Tento plugin extrahuje a zobrazuje SEO metriky: pořadí v Alexa web, Google PageRank, počet indexovaných stránek a zpětných odkazů aktuálně vybraného webu.",
|
||||
"AlexaRank": "Hodnocení Alexa",
|
||||
"Bing_IndexedPages": "Stránek zaindexovaných Bingem",
|
||||
"DomainAge": "Staří domény",
|
||||
"Google_IndexedPages": "Stránek zaindexovaných Googlem",
|
||||
"Rank": "Hodnocení",
|
||||
"SeoRankings": "Hodnocení SEO",
|
||||
"SEORankingsFor": "SEO hodnocení pro %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/da.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/da.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Denne programtilføjelse udtrækker og viser SEO måleværdier: Alexa webranking, Google Pagerank, antallet af indexerede sider, og linker tilbage til den nuværende webside.",
|
||||
"AlexaRank": "Alexa-placering",
|
||||
"Bing_IndexedPages": "Bing-indekserede sider",
|
||||
"DomainAge": "Domænealder",
|
||||
"Google_IndexedPages": "Google-indekserede sider",
|
||||
"Rank": "Rang",
|
||||
"SeoRankings": "SEO - søgemaskineoptimering",
|
||||
"SEORankingsFor": "SEO for %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/de.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/de.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Dieses Plugin ermittelt SEO Metriken und zeigt diese an: Alexa Web Ranking, Google RageRank, Anzahl der indizierten Seiten sowie Backlinks der aktuell ausgewählten Website.",
|
||||
"AlexaRank": "Alexa Rang",
|
||||
"Bing_IndexedPages": "Bing indizierte Seiten",
|
||||
"DomainAge": "Alter der Domain",
|
||||
"Google_IndexedPages": "Google indizierte Seiten",
|
||||
"Rank": "Rang",
|
||||
"SeoRankings": "SEO-Bewertungen",
|
||||
"SEORankingsFor": "SEO-Bewertungen für %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/el.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/el.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Το πρόσθετο εξάγει και εμφανίζει μετρικές SEO: ταξινόμηση ιστού από το Alexa, Google Pagerank, αριθμός σελίδων στο ευρετήριο και σύνδεσμοι του επιλεγμένου ιστοτόπου.",
|
||||
"AlexaRank": "Βαθμολόγηση Alexa",
|
||||
"Bing_IndexedPages": "Σελίδες σε ευρετήριο Bing",
|
||||
"DomainAge": "Ηλικία Domain",
|
||||
"Google_IndexedPages": "Σελίδες σε ευρετήριο Google",
|
||||
"Rank": "Βαθμολόγηση",
|
||||
"SeoRankings": "Βαθμολόγηση BMA",
|
||||
"SEORankingsFor": "Βαθμολόγηση BMA για %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/en.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/en.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "This Plugin extracts and displays SEO metrics: Alexa web ranking, Google Pagerank, number of Indexed pages and backlinks of the currently selected website.",
|
||||
"AlexaRank": "Alexa Rank",
|
||||
"Bing_IndexedPages": "Bing indexed pages",
|
||||
"DomainAge": "Domain Age",
|
||||
"Google_IndexedPages": "Google indexed pages",
|
||||
"Rank": "Rank",
|
||||
"SeoRankings": "SEO Rankings",
|
||||
"SEORankingsFor": "SEO Rankings for %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/es-ar.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/es-ar.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Este plugin extrae y muestra mediciones SEO: el posicionamiento web de Alexa, Google Pagerank, el número de páginas indexadas y los enlaces de visita del sitio web seleccionado actualmente.",
|
||||
"AlexaRank": "Posicionamiento de Alexa",
|
||||
"Bing_IndexedPages": "Páginas indexadas por Bing",
|
||||
"DomainAge": "Edad del dominio",
|
||||
"Google_IndexedPages": "Páginas indexadas por Google",
|
||||
"Rank": "Posicionamiento",
|
||||
"SeoRankings": "Posicionamientos SEO",
|
||||
"SEORankingsFor": "Posicionamiento SEO para %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/es.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/es.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Este complemento extrae y visualiza las métricas SEO: ranking de internet Alexa, Google Pagerank, número de páginas indexadas y enlaces de retorno del sitio de internet actualmente seleccionado.",
|
||||
"AlexaRank": "Ranking Alexa",
|
||||
"Bing_IndexedPages": "páginas indexadas por Bing",
|
||||
"DomainAge": "Edad del dominio",
|
||||
"Google_IndexedPages": "Páginas indexadas por Google",
|
||||
"Rank": "Rango",
|
||||
"SeoRankings": "Rankings SEO",
|
||||
"SEORankingsFor": "Rankings SEO de %s"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/et.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/et.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa reiting",
|
||||
"Bing_IndexedPages": "Bingi indekseeritud lehti",
|
||||
"DomainAge": "Domeeni vanus",
|
||||
"Google_IndexedPages": "Googles indekseeritud lehed",
|
||||
"Rank": "Reiting",
|
||||
"SeoRankings": "SEO reiting",
|
||||
"SEORankingsFor": "SEO reiting %s jaoks"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/fa.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/fa.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "رتبه الکسا",
|
||||
"Bing_IndexedPages": "صفحه های نمایه (ایندکس) شده در بینگ",
|
||||
"DomainAge": "سن دامنه",
|
||||
"Google_IndexedPages": "صفحه های نمایه (ایندکس) شده در گوگل",
|
||||
"Rank": "رنک",
|
||||
"SeoRankings": "رتبه سئو",
|
||||
"SEORankingsFor": "رتبه سئو برای %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/fi.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/fi.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Tämä lisäosa hakee ja näyttää SEO-tietoja: Alexan web ranking, Googlen Pagerank, indeksoitujen sivujen lukumäärän, ja takaisin osoittavien linkkien määrän valitulle sivulle.",
|
||||
"AlexaRank": "Alexa-tulos",
|
||||
"Bing_IndexedPages": "Bingin indeksoidut sivut",
|
||||
"DomainAge": "Sivun ikä",
|
||||
"Google_IndexedPages": "Googlen indeksoimat sivut",
|
||||
"Rank": "Sijoitus",
|
||||
"SeoRankings": "SEO-tulos",
|
||||
"SEORankingsFor": "SEO-sijoitus %s:lle"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/fr.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/fr.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Ce composant extrait et affiche les indicateurs de SEO : Alexa web ranking, Google Pagerank, le nombre de pages indexées et les rétroliens du site actuellement sélectionné.",
|
||||
"AlexaRank": "Notation Alexa",
|
||||
"Bing_IndexedPages": "Pages indexées sur Bing",
|
||||
"DomainAge": "Âge du domaine",
|
||||
"Google_IndexedPages": "Page indexées sur Google",
|
||||
"Rank": "Notation",
|
||||
"SeoRankings": "Notations des SEO",
|
||||
"SEORankingsFor": "Notations SEO pour %s"
|
||||
}
|
||||
}
|
5
msd2/tracking/piwik/plugins/SEO/lang/he.json
Normal file
5
msd2/tracking/piwik/plugins/SEO/lang/he.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"SEO": {
|
||||
"Rank": "דירוג"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/hi.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/hi.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "इस प्लगइन अर्क और प्रदर्शित करता है SEO मेट्रिक्स: एलेक्सा वेब रैंकिंग, गूगल पेजरेंक, क्रमाँक पृष्ठों और वर्तमान में चयनित वेबसाइट के पश्च की संख्या।",
|
||||
"AlexaRank": "एलेक्सा दरजा",
|
||||
"Bing_IndexedPages": "बिंग अनुक्रमित पृष्ठों",
|
||||
"DomainAge": "डोमेन आयु",
|
||||
"Google_IndexedPages": "गूगल पृष्ठों से अनुक्रमित",
|
||||
"Rank": "श्रेणी",
|
||||
"SeoRankings": "एसईओ रैंकिंग",
|
||||
"SEORankingsFor": "%s के लिए एसईओ रैंकिंग"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/hu.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/hu.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa rangsor",
|
||||
"Bing_IndexedPages": "Bing által indexelt oldalak",
|
||||
"DomainAge": "Domain életkor",
|
||||
"Google_IndexedPages": "Google által indexelt oldalak",
|
||||
"Rank": "Rangsor",
|
||||
"SeoRankings": "Keresőoptimalizálási rangsor",
|
||||
"SEORankingsFor": "%s oldalhoz tartozó keresőoptimalizálási adatok"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/id.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/id.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Peringkat Alexa",
|
||||
"Bing_IndexedPages": "Halaman terindeks Bing",
|
||||
"DomainAge": "Umut Ranah",
|
||||
"Google_IndexedPages": "Halaman terindeks Google",
|
||||
"Rank": "Peringkat",
|
||||
"SeoRankings": "Peringkat SEO",
|
||||
"SEORankingsFor": "Peringkat SEO untuk %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/it.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/it.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Questo plugin estrae e visualizza le metriche SEO: Alexa web ranking, Google Pagerank, numero di pagine indicizzate e i backlink del sito al momento selezionato.",
|
||||
"AlexaRank": "Alexa Rank",
|
||||
"Bing_IndexedPages": "Pagine indicizzate da Bing",
|
||||
"DomainAge": "Età del dominio",
|
||||
"Google_IndexedPages": "Pagine indicizzate da Google",
|
||||
"Rank": "Rank",
|
||||
"SeoRankings": "Ranking SEO",
|
||||
"SEORankingsFor": "SEO Ranking per %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/ja.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/ja.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "このプラグインは SEO メトリクスを抽出し、表示します。: Alexa web ランキング, Google ページランク,インデックスされたページ数やバックリンクの数。",
|
||||
"AlexaRank": "Alexa ランク",
|
||||
"Bing_IndexedPages": "Bing インデックスページ",
|
||||
"DomainAge": "ドメインエイジ",
|
||||
"Google_IndexedPages": "Google インデックスページ",
|
||||
"Rank": "ランク",
|
||||
"SeoRankings": "SEO ランキング",
|
||||
"SEORankingsFor": "%s の SEO ランキング"
|
||||
}
|
||||
}
|
9
msd2/tracking/piwik/plugins/SEO/lang/ka.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/ka.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa რანგი",
|
||||
"DomainAge": "დომენის ასაკი",
|
||||
"Rank": "რანგი",
|
||||
"SeoRankings": "SEO რენგები",
|
||||
"SEORankingsFor": "SEO რანგები %s–სთვის"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/ko.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/ko.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "이 플러그인은 Alexa 웹 랭킹, 구글 페이지랭크, 색인된 페이지 수, 선택된 웹사이트의 백링크와 같은 SEO 측정 기준을 추출하고 보여줍니다.",
|
||||
"AlexaRank": "Alexa 랭크",
|
||||
"Bing_IndexedPages": "Bing에 색인된 페이지",
|
||||
"DomainAge": "도메인 에이지",
|
||||
"Google_IndexedPages": "Google에 색인된 페이지",
|
||||
"Rank": "순위",
|
||||
"SeoRankings": "SEO 랭킹",
|
||||
"SEORankingsFor": "%s의 SEO 순위"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/lt.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/lt.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Šis įskiepis išskleidžia ir rodo SEO metriką: Alexa saityno reitingą, Google puslapių reitingą, indeksuotų puslapių skaičių ir atgalines nuorodas į šiuo metu pasirinktą svetainę.",
|
||||
"AlexaRank": "Alexa reitingas",
|
||||
"Bing_IndexedPages": "Bing indeksuoti puslapiai",
|
||||
"DomainAge": "Adresų srities amžius",
|
||||
"Google_IndexedPages": "Google indeksuoti puslapiai",
|
||||
"Rank": "Reitingas",
|
||||
"SeoRankings": "SEO reitingai",
|
||||
"SEORankingsFor": "SEO reitingai, skirti %s"
|
||||
}
|
||||
}
|
9
msd2/tracking/piwik/plugins/SEO/lang/lv.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/lv.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa ranks",
|
||||
"DomainAge": "Domēna vecums",
|
||||
"Rank": "ranks",
|
||||
"SeoRankings": "SEO ranks",
|
||||
"SEORankingsFor": "%s SEO ranks"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/nb.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/nb.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Denne utvidelsen ekstraherer og viser SEO-tall: Alexa web-rangering, Google Pagerank, antall indekserte sider og tilbakelenker til det valgte nettstedet.",
|
||||
"AlexaRank": "Alexa-rangering",
|
||||
"Bing_IndexedPages": "Indekserte sider hos Bing",
|
||||
"DomainAge": "Domenets alder",
|
||||
"Google_IndexedPages": "Indekserte sider hos Google",
|
||||
"Rank": "Rangering",
|
||||
"SeoRankings": "SEO-rangeringer",
|
||||
"SEORankingsFor": "SEO-rangeringer for %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/nl.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/nl.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Deze plugin extraheert en toon SEO metrics: Alexa web ranking, Google Pagerank, het aantal geïndexeerde pagina's en backlinks naar de huidige geselecteerde website.",
|
||||
"AlexaRank": "Alexa Rank",
|
||||
"Bing_IndexedPages": "Bing geindexeerde pagina's",
|
||||
"DomainAge": "Domein leeftijd",
|
||||
"Google_IndexedPages": "Google geindexeerde pagina's",
|
||||
"Rank": "Ranking",
|
||||
"SeoRankings": "SEO rankings",
|
||||
"SEORankingsFor": "SEO rankings voor %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/pl.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/pl.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Wtyczka pobiera i wyświetla wskaźniki SEO: rankingu Alexa, Google Pagerank, liczbę zindeksowanych stron oraz linki zwrotne do aktualnie wybranego serwisu.",
|
||||
"AlexaRank": "Ranking Alexa",
|
||||
"Bing_IndexedPages": "Zindeksowane w Bing",
|
||||
"DomainAge": "Wiek domeny",
|
||||
"Google_IndexedPages": "Zindeksowane w Google",
|
||||
"Rank": "Pozycja",
|
||||
"SeoRankings": "Pozycja SEO",
|
||||
"SEORankingsFor": "Pozycja SEO dla %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/pt-br.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/pt-br.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Este plugin extratai e exibe métricas de SEO: Alexa web ranking, Google PageRank, número de páginas indexadas e backlinks do site selecionado.",
|
||||
"AlexaRank": "Rank Alexa",
|
||||
"Bing_IndexedPages": "Páginas indexadas no Bing",
|
||||
"DomainAge": "Idade de Domínio",
|
||||
"Google_IndexedPages": "Páginas indexadas pelo Google",
|
||||
"Rank": "Classificação",
|
||||
"SeoRankings": "Ranking SEO",
|
||||
"SEORankingsFor": "Ranking SEO para %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/pt.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/pt.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Esta extensão extrai e apresenta métricas de SEO: Classificação web da Alexa, Google Pagerank, número de páginas indexadas e de ligações de retorno para o site atualmente selecionado.",
|
||||
"AlexaRank": "Classificação Alexa",
|
||||
"Bing_IndexedPages": "Páginas indexadas pelo Bing",
|
||||
"DomainAge": "Idade do domínio",
|
||||
"Google_IndexedPages": "Páginas indexadas pelo Google",
|
||||
"Rank": "Classificação",
|
||||
"SeoRankings": "Classificações SEO",
|
||||
"SEORankingsFor": "Classificações SEO para %s"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/ro.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/ro.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Poziţie în Alexa",
|
||||
"Bing_IndexedPages": "Pagini indexate de Bing",
|
||||
"DomainAge": "Vechime domeniu",
|
||||
"Google_IndexedPages": "Pagini indexate de Google",
|
||||
"Rank": "Poziţie",
|
||||
"SeoRankings": "Poziţionări SEO",
|
||||
"SEORankingsFor": "Poziţionări SEO pentru %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/ru.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/ru.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Этот плагин извлекает и отображает метрику SEO: веб-ранг Alexa, Google Pagerank, количество индексированных страниц и обратных ссылок на текущий выбранный веб-сайт.",
|
||||
"AlexaRank": "Рейтинг Alexa",
|
||||
"Bing_IndexedPages": "Страниц в индексе Bing",
|
||||
"DomainAge": "Возраст домена",
|
||||
"Google_IndexedPages": "Страниц в индексе Google",
|
||||
"Rank": "Рейтинг",
|
||||
"SeoRankings": "SEO-Рейтинги",
|
||||
"SEORankingsFor": "SEO Рейтинги для %s"
|
||||
}
|
||||
}
|
9
msd2/tracking/piwik/plugins/SEO/lang/sk.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/sk.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Alexa hodnotenie",
|
||||
"DomainAge": "Vek domény",
|
||||
"Rank": "Hodnotenie",
|
||||
"SeoRankings": "SEO hodnotenie",
|
||||
"SEORankingsFor": "SEO hodnotenie pre %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/sl.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/sl.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Ta vtičnik izlušči in prikaže SEO metriko: Alexa web rangiranje, Google Pagerank, število indeksiranih strani in povratnih povezav za trenutno izbrane spletne strani.",
|
||||
"AlexaRank": "Alexa položaj",
|
||||
"Bing_IndexedPages": "Bing indeksirane strani",
|
||||
"DomainAge": "Starost domene",
|
||||
"Google_IndexedPages": "Google indeksirane strani",
|
||||
"Rank": "Položaj",
|
||||
"SeoRankings": "SEO položaji",
|
||||
"SEORankingsFor": "SEO položaji za %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/sq.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/sq.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Kjo shtojcë përfton dhe shfaq vlera SEO: renditje web Alexa, Google Pagerank, numër faqesh të përfshira në tregues dhe paslidhje të sajtit të përzgjedhur në atë çast.",
|
||||
"AlexaRank": "Renditje Alexa",
|
||||
"Bing_IndexedPages": "Faqe të indeksuara nga Bing",
|
||||
"DomainAge": "Moshë Përkatësie",
|
||||
"Google_IndexedPages": "Faqe të indeksuara nga Google",
|
||||
"Rank": "Renditje",
|
||||
"SeoRankings": "Renditje SEO",
|
||||
"SEORankingsFor": "Renditje SEO për %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/sr.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/sr.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Ovaj dodatak prikuplja i prikazuje SEO metrike: Aleksa rangiranje, Gugl rangiranje, broj indeksiranih stranica i povratnih linkova za trenutno odabrani sajt.",
|
||||
"AlexaRank": "Alexa rangiranje",
|
||||
"Bing_IndexedPages": "Stranice koje je indeksirao Bing",
|
||||
"DomainAge": "Starost domena",
|
||||
"Google_IndexedPages": "Stranice koje je indeksirao Google",
|
||||
"Rank": "Rang",
|
||||
"SeoRankings": "SEO rangiranje",
|
||||
"SEORankingsFor": "SEO rangiranje za %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/sv.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/sv.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Detta plugin framställer och visar SEO-värden: Alexa webbranking , Google Pagerank , antalet indexerade sidor och länkar för den valda webbplatsen.",
|
||||
"AlexaRank": "Alexa Rank",
|
||||
"Bing_IndexedPages": "Bing indexerade sidor",
|
||||
"DomainAge": "Domänålder",
|
||||
"Google_IndexedPages": "Google indexerade sidor",
|
||||
"Rank": "Rank",
|
||||
"SeoRankings": "SEO Ranking",
|
||||
"SEORankingsFor": "SEO Ranking för %s"
|
||||
}
|
||||
}
|
6
msd2/tracking/piwik/plugins/SEO/lang/te.json
Normal file
6
msd2/tracking/piwik/plugins/SEO/lang/te.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "అలెక్సా ర్యాంకు",
|
||||
"Rank": "ర్యాంకు"
|
||||
}
|
||||
}
|
9
msd2/tracking/piwik/plugins/SEO/lang/th.json
Normal file
9
msd2/tracking/piwik/plugins/SEO/lang/th.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "อันดับใน Alexa",
|
||||
"DomainAge": "อายุโดเมน",
|
||||
"Rank": "อันดับ",
|
||||
"SeoRankings": "อันดับ SEO",
|
||||
"SEORankingsFor": "SEO จัดอันดับไว้ที่ %s"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/tl.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/tl.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Ranggo sa Alexa",
|
||||
"Bing_IndexedPages": "Mga na index na pahina ng bing",
|
||||
"DomainAge": "Edad ng Domain",
|
||||
"Google_IndexedPages": "Na index ng Google ang mga pahina",
|
||||
"Rank": "Ranggo",
|
||||
"SeoRankings": "Ranggo sa SEO",
|
||||
"SEORankingsFor": "Ranggo ng SEO para sa %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/tr.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/tr.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Bu uygulama eki AMD ölçütlerini ayıklar ve görüntüler: Alexa web derecelendirmesi, Google sayfa sıralaması, dizine eklenmiş sayfa sayısı ve seçilmiş web sitesine giden bağlantılar.",
|
||||
"AlexaRank": "Alexa Derecelendirmesi",
|
||||
"Bing_IndexedPages": "Bing dizinine eklenmiş sayfalar",
|
||||
"DomainAge": "Etki Alanı Yaşı",
|
||||
"Google_IndexedPages": "Google dizinine eklenmiş sayfalar",
|
||||
"Rank": "Derecelendirme",
|
||||
"SeoRankings": "AMD Derecelendirmeleri",
|
||||
"SEORankingsFor": "'%s'için AMD Derecelendirmeleri"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/uk.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/uk.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "Цей плагін витягує і відображає метрики SEO: Alexa рейтинг, Google Pagerank, кількість проіндексованих сторінок і зворотних посилань в даний момент на сайт.",
|
||||
"AlexaRank": "Рейтинг Alexa",
|
||||
"Bing_IndexedPages": "Сторінок в індексі Bing",
|
||||
"DomainAge": "Вік домену",
|
||||
"Google_IndexedPages": "Сторінок в індексі Google",
|
||||
"Rank": "Рейтинг",
|
||||
"SeoRankings": "SEO-рейтинги",
|
||||
"SEORankingsFor": "SEO рейтинги для %s"
|
||||
}
|
||||
}
|
11
msd2/tracking/piwik/plugins/SEO/lang/vi.json
Normal file
11
msd2/tracking/piwik/plugins/SEO/lang/vi.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"SEO": {
|
||||
"AlexaRank": "Xếp hạng Alexa",
|
||||
"Bing_IndexedPages": "Các trang được lập chỉ mục Bing",
|
||||
"DomainAge": "Tuổi tên miền",
|
||||
"Google_IndexedPages": "Các trang được lập chỉ mục Google",
|
||||
"Rank": "Xếp hạng",
|
||||
"SeoRankings": "Xếp hạng SEO",
|
||||
"SEORankingsFor": "Xếp hạng SEO cho %s"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/zh-cn.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/zh-cn.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "这个插件提取和显示的搜索引擎优化指标:Alexa的网站排名,谷歌的PageRank,索引和反向当前选择的网站数。",
|
||||
"AlexaRank": "Alexa 排名",
|
||||
"Bing_IndexedPages": "Bing 索引页面",
|
||||
"DomainAge": "域名年限",
|
||||
"Google_IndexedPages": "Google 索引页面",
|
||||
"Rank": "排名",
|
||||
"SeoRankings": "SEO排名",
|
||||
"SEORankingsFor": "%s 的SEO排名"
|
||||
}
|
||||
}
|
12
msd2/tracking/piwik/plugins/SEO/lang/zh-tw.json
Normal file
12
msd2/tracking/piwik/plugins/SEO/lang/zh-tw.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"SEO": {
|
||||
"PluginDescription": "此外掛提取和顯示 SEO 數據:目前網站的 Alexa 排名、Google Pagerank、收錄的頁面數量和反向連結。",
|
||||
"AlexaRank": "Alexa 排名",
|
||||
"Bing_IndexedPages": "Bing 收錄頁面",
|
||||
"DomainAge": "網域年齡",
|
||||
"Google_IndexedPages": "Google 收錄頁面",
|
||||
"Rank": "評級",
|
||||
"SeoRankings": "SEO 評級",
|
||||
"SEORankingsFor": "%s 的 SEO 評級"
|
||||
}
|
||||
}
|
52
msd2/tracking/piwik/plugins/SEO/templates/getRank.twig
Normal file
52
msd2/tracking/piwik/plugins/SEO/templates/getRank.twig
Normal file
@ -0,0 +1,52 @@
|
||||
<div id='SeoRanks'>
|
||||
<script type="text/javascript" src="plugins/SEO/javascripts/rank.js"></script>
|
||||
|
||||
<form method="post" style="padding: 8px;">
|
||||
<div align="left" class="row">
|
||||
<div class="col s8 input-field">
|
||||
<label for="seoUrl" class="active">{{ 'Installation_SetupWebSiteURL'|translate|capitalize }}</label>
|
||||
<input type="text" id="seoUrl" size="15" value="{{ urlToRank }}" class="textbox "/>
|
||||
</div>
|
||||
<div class="col s4">
|
||||
<input type="submit" class="btn btn-small" style='margin-top: 2em' id="rankbutton" value="{{ 'SEO_Rank'|translate }}"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% import "ajaxMacros.twig" as ajax %}
|
||||
{{ ajax.LoadingDiv('ajaxLoadingSEO') }}
|
||||
|
||||
<div id="rankStats" align="left" style="margin-top:10px;margin-left: 5px;font-size:14px;">
|
||||
{% if ranks is empty %}
|
||||
{{ 'General_Error'|translate }}
|
||||
{% else %}
|
||||
{% set cleanUrl %}
|
||||
<a href="http://{{ urlToRank }}" rel="noreferrer noopener" target="_blank">{{ urlToRank }}</a>
|
||||
{% endset %}
|
||||
{{ 'SEO_SEORankingsFor'|translate(cleanUrl)|raw }}
|
||||
<table cellspacing="2" style="margin:auto;line-height:3.5em !important;margin-top:20px;">
|
||||
|
||||
{% for rank in ranks %}
|
||||
<tr>
|
||||
{% set seoLink %}{% if rank.logo_link is not empty %}<a class="linkContent" href="{{ rank.logo_link }}"
|
||||
target="_blank" rel="noreferrer noopener"
|
||||
{% if rank.logo_tooltip is not empty %}title="{{ rank.logo_tooltip }}"{% endif %}>{% endif %}{% endset %}
|
||||
<td>{% if rank.logo_link is not empty %}{{ seoLink|raw }}{% endif %}<img width="24px" height="24px"
|
||||
style='vertical-align:middle;margin-right:6px;' src='{{ rank.logo }}' border='0'
|
||||
alt="{{ rank.label }}">{% if rank.logo_link is not empty %}</a>{% endif %} {{ rank.label|raw }}
|
||||
</td>
|
||||
<td>
|
||||
<div style="margin-left:15px;">
|
||||
{% if rank.logo_link is not empty %}{{ seoLink|raw }}{% endif %}
|
||||
{% if rank.rank %}{{ rank.rank|raw }}{% else %}-{% endif %}
|
||||
{{ rank.rank_suffix }}
|
||||
{% if rank.logo_link is not empty %}</a>{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</table>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
Reference in New Issue
Block a user