Лесен начин за създаване на xml Sitemap в симфони 1.4

xml в Симфони уеб сайтовеВ тази статия, която е насочена към начинаещите разработчици на Symfony Framework, ще ви покажем как да направите по най-простия начин динамична XML карта на вашия уеб сайт.
За тези от вас, които не знаят какво е xmlSitemap и има ли то почва у нас, препоръчвам да разгледате многобройните описателни статии по темата в google. Ако вече имате представа и се чудите как точно да го направите, този урок е за вас. Не претендираме за изчерпателност, но като за начало това е добър пример за въвеждане в тази материя.
За да има карта на уеб сайта, би следвало да има сайт с някакво съдържание, което да се описва. Да предположим, че имаме простичка система за новини, където новините може да са в различни категории. Във всяка категория се предполага че има статии. Ролята на динамичната карта е при всяко разширение на базата данни, добавяне на новина или категория, това да бъде генерирано автоматично в картата.
Симфони програмиране
Първата стъпка, която ще предприемем е да програмираме празен модул с име sitemap. След това отиваме в routing.yml за да създадем път. Той може да е примерно този:

xmlSitemap:
url:   /xmlsitemap
param: { module: sitemap, action: xmlSitemap }

В пътя указваме името на модула (този, който създадохме току що) и името на темплейта, който ще създадем сега. В папката templates на новосъздадения модул, правим нов файл с име xmlSitemapSuccess.php, който за сега ще оставим без съдържание. В actions.class.php на модула въвеждаме следната функция, която представлява екшън-а към нашия темплейт:

public function executeXmlSitemap(sfRequest $request){
   $this->setLayout(false);
   $this->getResponse()->setContentType('text/xml');
   $this->categories = Doctrine_Core::getTable('categories')->showSitemap();
}

В реда:

$this->categories = Doctrine_Core::getTable('categories')->showSitemap();

извикваме функцията showSitemap() от класа categoriesTable.class.php
Тя трябва да представлява нещо като следната заявка:

public static function showSitemap() {
   $q = Doctrine_Query::create()
      ->from('categories c')
      ->leftJoin('c.news n)
      ->where('n.active = ?', 1);
   return $q->execute();
}

В тази примерна заявка извикваме всички категории. С LeftJoin извикваме прилежащите към тях новини, а с where клаузата проверяваме дали новината е активна. Разбира се това е само пример за това как трябва да функционират нещата.
Сега, след като програмирахме action, заявка която обхожда нашите категории и прилежащите към тях новини, е време да попълним файла xmlSitemapSuccess.php, който оставихме празен.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
  <url>
    <loc><?php echo 'http://www.Вашия домейн'.url_for('index') ?></loc>
  </url>
  <url>
    <loc><?php echo 'http://www. Вашия домейн '.url_for('about') ?></loc>
  </url>
  <url>
    <loc><?php echo 'http://www. Вашия домейн '.url_for('contact') ?></loc>
  </url>

В първата част от файла описваме типа файл. Имаме също така три връзки, които са статични. Те са на страници, които не се променят постоянно, а именно заглавната страница и примерните страници “За нас” и “Контакти”. След това идва динамичната част. В нея чрез foreach първо извеждаме всички категории. С втория вложен foreach всички новини към прилежащата категория. Във вторият вложен цикъл оказваме пътя до новината в нашия сайт.

   <?php foreach($categories as $category): ?>
      <?php foreach($category->getNews() as $news):?>  
         <url>
            <loc><?php echo 'http://www. Вашия домейн '.url_for('news',array('testId'=>$news->getId())) ?></loc>
            <lastmod><?php echo $news->getDateTimeObject('updated_at')->format('c')?></lastmod>
         </url>
      <?php endforeach; ?>
   <?php endforeach; ?>
</urlset>

Така се програмира xml в най-общи линии.
Надяваме се, да сме били полезни. Сега вече знаете как се създава прост xml sitemap за вашите уеб сайтове. За повече информация относно правилните начини за конструирането му, тежестта на отделните връзки и т.н., се обърнете към google.
symfony websites

One thought on “Лесен начин за създаване на xml Sitemap в симфони 1.4

Вашият коментар

Вашият email адрес няма да бъде публикуван Задължителните полета са отбелязани с *