public function actionMap() { Yii::$app->response->format = Response::FORMAT_RAW; $headers = Yii::$app->response->headers; $headers->add('Content-Type', 'text/xml'); $dom = new \DOMDocument("1.0", "utf-8"); $root = $dom->createElement("urlset"); $root->setAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"); $dom->appendChild($root); $categories = Category::findAll(['is_active' => 1]); $articles = Article::findAll(['is_active' => 1]); $items = array_merge($categories, $articles); foreach ($items as $item) { $url = $dom->createElement("url"); $loc = $dom->createElement("loc"); if ($item instanceof Article) { $loc->appendChild($dom->createTextNode(Url::to(['article/view', 'id' => $item->id], true))); } else { $loc->appendChild($dom->createTextNode(Url::to(['category/view', 'id' => $item->id], true))); } $lastmod = $dom->createElement("lastmod"); $lastmod->appendChild($dom->createTextNode($item->timestamp)); $changefreq = $dom->createElement("changefreq"); $changefreq->appendChild($dom->createTextNode("monthly")); $priority = $dom->createElement("priority"); $priority->appendChild($dom->createTextNode("0.5")); $url->appendChild($loc); $url->appendChild($lastmod); $url->appendChild($changefreq); $url->appendChild($priority); $root->appendChild($url); } return $dom->saveXML(); }