Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

четверг, 22 марта 2012 г.

PHP. Публикация вакансий для поискового сервиса Trovit.

Однажды потребовалось генерировать xml-поток объявлений о работе для поискового сервиса http://www.trovit.com/. Сервис довольно популярен в штатах. Позволяет размещать объявления о работе, недвижимости и продаже автомобилей. Так как задача ограничивалась объявлениями о работе а человек я ленивый, то любой желающий может запросто дописать пару очень коротких классов для работы с другими разделами. Написал очень маленькую библиотеку.

Тут собственно требования к потоку http://about.trovit.com/your-ads-on-trovit/russia/feed-ru-rabota/

 Страница валидатора http://about.trovit.com/your-ads-on-trovit/russia/feed-ru-rabota/

Клиентский код, так примерно это может выглядеть

require_once 'Trovit/Ad.php';
require_once 'Trovit/JobsAd.php';
require_once 'Trovit/Feed.php';
require_once 'Trovit/JobsFeed.php';

// Некий класс вакансии (объявления о работе)
class Vacancy {

   public $id;
   public $url;
   public $title;
   public $content;
   public $date;
   public $company;

}

// Некий адаптер клиентских данных,
// расширяющий абстрактный класс объявления о работе
class Ad extends Trovit_JobsAd {

   protected $vacancy;

   public function __construct(Vacancy $vacancy) {
      $this->vacancy = $vacancy;
   }

   public function getId() {
      return $this->vacancy->id;
   }

   public function getUrl() {
      return $this->vacancy->url;
   }

   public function getTitle() {
      return $this->vacancy->title;
   }

   public function getContent() {
      return $this->vacancy->content;
   }

   public function getDate() {
      return $this->vacancy->date;
   }

   public function getCompany() {
      return $this->vacancy->company;
   }
 
   public function getPostcode() {
      return '099900';
   }

   ...

   // Опциональные методы определены в классе-родителе

}

$vacancy = new Vacancy();
$vacancy->id = 1;
$vacancy->url = 'http://example.com';
$vacancy->title = 'Tester Vacancy';
$vacancy->content = 'Lorem ipsum dolor sit amet, consectetur 
 adipisicing elit, sed do eiusmod tempor incididunt ut labore
 et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
 exercitation ullamco laboris nisi ut aliquip ex ea commodo
 consequat. Duis aute irure dolor in reprehenderit in
 voluptate velit esse cillum dolore eu fugiat nulla pariatur.
 Excepteur sint occaecat cupidatat non proident,
 sunt in culpa qui officia deserunt
 mollit anim id est laborum.';
$vacancy->company = 'Tester Company';
$vacancy->date = '22/03/2012 17:30:00';

$vacancy1 = new Vacancy();
$vacancy1->id = 2;
$vacancy1->url = 'http://example1.com';
$vacancy1->title = 'Tester Vacancy';
$vacancy1->content = 'Lorem ipsum dolor sit amet, consectetur
 adipisicing elit, sed do eiusmod tempor incididunt ut labore
 et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
 exercitation ullamco laboris nisi ut aliquip ex ea commodo
 consequat. Duis aute irure dolor in reprehenderit
 in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
 Excepteur sint occaecat cupidatat non proident,
 sunt in culpa qui officia deserunt mollit anim id est laborum.';
$vacancy1->company = 'Tester Company';
$vacancy1->date = '22/03/2012 17:30:00'; //ДД/ММ/ГГГГ ЧЧ:ММ:CC

$ad = new Ad($vacancy);
$ad1 = new Ad($vacancy1);

$feed = new Trovit_JobsFeed();
$feed->addAd($ad);
$feed->addAd($ad1);
file_put_contents('trovit.xml', $feed->getXML());

Проходит валидацию



Скачать архив с библиотекой Post to Trovit.com with PHP easy

2 комментария: