1. Go to this page and download the library: Download fof/sitemap 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/ */
fof / sitemap example snippets
use FoF\Sitemap\Extend;
return [
(new Extend\Sitemap())
->addResource(YourCustomResource::class)
->removeResource(\FoF\Sitemap\Resources\Tag::class)
->replaceResource(\FoF\Sitemap\Resources\User::class, YourCustomUserResource::class)
->addStaticUrl('reviews.index')
->forceCached(),
];
use FoF\Sitemap\Resources\Resource;
use FoF\Sitemap\Sitemap\Frequency;
class YourCustomResource extends Resource
{
public function query(): Builder
{
return YourModel::query()->where('is_public', true);
}
public function url($model): string
{
return $this->generateRouteUrl('your.route', ['id' => $model->id]);
}
public function priority(): float
{
return 0.7;
}
public function frequency(): string
{
return Frequency::WEEKLY;
}
public function lastModifiedAt($model): Carbon
{
return $model->updated_at ?? $model->created_at;
}
// Optional: Dynamic values based on model data
public function dynamicFrequency($model): ?string
{
$daysSinceActivity = $model->updated_at->diffInDays(now());
if ($daysSinceActivity < 1) return Frequency::HOURLY;
if ($daysSinceActivity < 7) return Frequency::DAILY;
return Frequency::WEEKLY;
}
}
use FoF\Sitemap\Extend\Robots;
return [
(new Robots())
->addEntry(MyCustomRobotsEntry::class)
->removeEntry(\FoF\Sitemap\Robots\Entries\ApiEntry::class)
->replace(\FoF\Sitemap\Robots\Entries\AdminEntry::class, MyCustomAdminEntry::class),
];
use FoF\Sitemap\Robots\RobotsEntry;
class MyCustomRobotsEntry extends RobotsEntry
{
public function getRules(): array
{
return [
// Use helper methods for clean, readable code
$this->disallowForAll('/private'),
$this->crawlDelayFor('Googlebot', 10),
$this->allowFor('Googlebot', '/special-for-google'),
$this->disallowFor('BadBot', '/'),
$this->sitemap('https://example.com/news-sitemap.xml'),
];
}
public function enabled(): bool
{
return static::$settings->get('my-extension.enable-robots', true);
}
}
class CustomAdminEntry extends \FoF\Sitemap\Robots\Entries\AdminEntry
{
protected function buildAdminRules(string $adminPath): array
{
return [
$this->disallowForAll($adminPath),
$this->disallowForAll(rtrim($adminPath, '/') . '/'),
// Allow Googlebot to access public admin stats
$this->allowFor('Googlebot', $adminPath . '/public-stats'),
];
}
}
// Deprecated - use unified Sitemap extender instead
new \FoF\Sitemap\Extend\RegisterResource(YourResource::class);
new \FoF\Sitemap\Extend\RemoveResource(\FoF\Sitemap\Resources\Tag::class);
new \FoF\Sitemap\Extend\RegisterStaticUrl('reviews.index');
new \FoF\Sitemap\Extend\ForceCached();