@alekseyy__9090
frontend-разработчик

Как создать автогенерируемый sitemap на сайте для изображений?

Есть необходимость создать sitemap-image.xml для изображений.Важная деталь - он должен быть автогенерируемым. Не важно как это будет реализовано, с помощью скрипта js, таска для gulp, и тд.
После нескольких дней поисков в интернете, так и не нашел никакого решения.В большинстве случаев об этом почти ничего не написано в принципе.
Было бы хорошо увидеть скрипт или может быть ссылку на какой-либо ресурс где это нормально поясняется.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
rpsv
@rpsv
делай либо хорошо, либо никак
Если у вас вся статика лежит в одной директории:
Спойлер

class SitemapImageBuilder
{
	public function __construct(string $imagesDir)
	{
		$this->dir = $imagesDir;
	}

	public function run()
	{
		$imageFiles = $this->getImageFiles($this->dir);
		$this->generateXml($imageFiles);
	}

	public function getImageFiles(string $path)
	{
		$ret = [];
		$files = scandir($path);
		$explodeNames = [
			'.',
			'..',
		];
		$mimeRe = "/^image/";
		foreach ($files as $name) {
			if (in_array($name, $explodeNames)) {
				continue;
			}

			$filePath = $path .'/'. $name;
			if (is_dir($filePath)) {
				$childs = $this->getImageFiles($filePath);
				if ($childs) {
					array_push($ret, ...$childs);
				}
			}
			else if (is_file($filePath)) {
				$mime = mime_content_type($name);
				if (preg_match($mimeRe, $mime)) {
					$ret[] = $filePath;
				}
			}
		}
		return $ret;
	}

	public function generateXml(array $pathes)
	{
		// генерация XML sitemap
	}
}

$imagesDir = 'path/to/static';
(new SitemapImageBuilder($imagesDir))->run();

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы