1. Go to this page and download the library: Download indexnowkit/yii3 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
indexnowkit / yii3 example snippets
// config/common/params.php
'indexnowkit/yii3' => [
'key' => $_ENV['INDEXNOW_KEY'] ?? null, // or leave it: the package reads INDEXNOW_KEY itself
'base_url' => 'https://www.example.com', // used by console commands (no request to take the host from)
// dev/staging: log the request, send nothing. Compare with the same list `production_environments` holds,
// or `YII_ENV=production` would switch dry-run on in production (check fails when this is unset outside it).
'dry_run' => !in_array($_ENV['YII_ENV'] ?? null, ['prod', 'production'], true),
],
use IndexNowKit\Attribute\{IndexNow, IndexNowDefaults};
use IndexNowKit\Yii3\ActiveRecord\IndexNowEvents;
use Yiisoft\ActiveRecord\ActiveQueryInterface;
use Yiisoft\ActiveRecord\ActiveRecord;
use Yiisoft\ActiveRecord\Trait\EventsTrait;
use Yiisoft\ActiveRecord\Trait\MagicRelationsTrait;
#[IndexNowDefaults(when: 'published', fields: ['slug', 'title', 'body', 'published'])]
#[IndexNow(route: 'post/view', params: ['slug' => 'slug'])]
#[IndexNow(route: 'post/amp', params: ['slug' => 'slug'], when: 'amp')]
#[IndexNow(via: 'category')] // a changed post also refreshes its category page
#[IndexNow(urls: ['/'])] // and the homepage
#[IndexNowEvents] // the hook: yiisoft/active-record dispatches events only with EventsTrait
final class Post extends ActiveRecord
{
use EventsTrait;
use MagicRelationsTrait;
public ?int $id = null;
public string $slug = '';
public string $title = '';
public ?string $body = null;
public bool $published = true;
public bool $amp = false;
public ?int $category_id = null;
public function tableName(): string
{
return 'posts';
}
public function getCategoryQuery(): ActiveQueryInterface
{
return $this->hasOne(Category::class, ['id' => 'category_id']);
}
}
'indexnowkit/yii3' => [
// ...
'history' => [
'store' => 'pdo', // null (default, nothing kept) | psr16 (the debounce cache) | pdo
'pdo' => ['service' => ConnectionInterface::class], // the yiisoft/db connection id holding the table — or 'dsn' => 'sqlite:/var/data/indexnow.sqlite'
],
],
use IndexNowKit\Attribute\{IndexNow, IndexNowDefaults};
use IndexNowKit\Yii3\ActiveRecord\IndexNowEvents;
use Yiisoft\ActiveRecord\ActiveRecord;
use Yiisoft\ActiveRecord\Trait\EventsTrait;
use Yiisoft\ActiveRecord\Trait\MagicRelationsTrait;
#[IndexNowDefaults(when: 'published', fields: ['slug', 'title', 'published'])]
#[IndexNow(route: 'post/view', params: ['slug' => 'slug'])]
#[IndexNow(via: 'category')] // needs MagicRelationsTrait, like any dotted path through a relation
#[IndexNow(urls: ['/'])]
#[IndexNowEvents]
final class Post extends ActiveRecord { use EventsTrait; use MagicRelationsTrait; public ?int $id = null; public string $slug = ''; public string $title = ''; public bool $published = true; public ?int $category_id = null; public function tableName(): string { return 'posts'; } public function getCategoryQuery(): \Yiisoft\ActiveRecord\ActiveQueryInterface { return $this->hasOne(Category::class, ['id' => 'category_id']); } }
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.