Example #1
0
 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();
 }