Показать сообщение отдельно
  #1 (permalink)  
Старый 12.02.2018, 16:40
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Вывод ссылки на оригинально объявление.
Здравствуйте!

Есть такой сайт trudvsem.ru

Там есть свой api и открытые данные по вакансиям.

У меня есть скрипт, он находит вакансии по определённому городу и публикует на другой сайт.

Работает он хорошо, в конце публикует ссылку на источник.

Источник: <a href="http://trudvsem.ru" target="_blank" rel="nofollow noopenerz">trudvsem.ru</a>


146 строка в коде

Подскажите как сделать что бы ссылка была не на корень сайта, а на оригинальное объявление?

Например:

Вакансия, требуется бухгалтер, там текст и ниже ссылка, человек нажимает на неё и переходит на оригинальное объявление.

В самом json есть ссылка на оригинал. Просто я не знаю PHP.

пример json по региону, лимит 100 вакансий вроде

сам php

<?php

require_once __DIR__ . '/UApiModule.php';
$dir = __DIR__;
$pdo = new PDO("sqlite:{$dir}/base.sqlite");


$myWebsite = 'домен.ру';

$config = [
    'oauth_consumer_key'    => '***',
    'oauth_consumer_secret' => '***',
    'oauth_token'           => '**',
    'oauth_token_secret'    => ***',
];

$uApiClient = new UApiModule($myWebsite, $config);
function loadAllVacancies()
{
    $allVacancies = [];
    $regionId     = '6200000000000';
    $offset       = 0;
    $limit        = 100;

    do {
        $queryParams  = [
            'limit'  => $limit,
            'offset' => $offset,
        ];
        $query        = http_build_query($queryParams);
        $vacanciesUrl = "http://opendata.trudvsem.ru/api/v1/vacancies/region/{$regionId}?{$query}";

        $vacanciesData = json_decode(file_get_contents($vacanciesUrl), true);
        if (count($vacanciesData['results'])) {
            $allVacancies = array_merge($allVacancies, $vacanciesData['results']['vacancies']);
            $hasNextPage  = true;
            //            echo "load {$offset}\n";
            $offset++;
        } else {
            $hasNextPage = false;
        }

    } while ($hasNextPage);

    return $allVacancies;
}

function filterLoadedVacanciesByRelevance($vacancies)
{
    $relevant = [];
    foreach ($vacancies as $vacancy) {

        foreach ($vacancy['vacancy']['addresses'] as $address) {
            foreach ($address as $address) {
                if (mb_stripos($address['location'], 'Название города') !== false) {
                    $relevant[] = $vacancy;
                }
            }
        }
    }

    return $relevant;
}

function getVacanciesForRemoving($publishedVacancies, $allExistsVacancies)
{
    $existsIds = [];
    foreach ($allExistsVacancies as $vacancy) {
        $existsIds[] = $vacancy['vacancy']['id'];
    }
    $idsForRemove = [];

    foreach ($publishedVacancies as $publishedVacancy) {
        if (!in_array($publishedVacancy['trudvsem_id'], $existsIds)) {
            $idsForRemove[] = $publishedVacancy;
        }
    }

    return $idsForRemove;
}

function getVacanciesForPublishing($publishedVacancies, $allExistsVacancies)
{
    $existsIds = [];
    foreach ($publishedVacancies as $vacancy) {
        $existsIds[] = $vacancy['trudvsem_id'];
    }
    $vacanciesForPublish = [];
    foreach ($allExistsVacancies as $vacancy) {
        if (!in_array($vacancy['vacancy']['id'], $existsIds)) {
            $vacanciesForPublish[] = $vacancy;
        }
    }

    return $vacanciesForPublish;

}

function getPublishedVacancies()
{
    global $pdo;
    $sql       = "SELECT * FROM vacancies";
    $statement = $pdo->prepare($sql);
    $statement->execute();

    return $statement->fetchAll(PDO::FETCH_ASSOC);
}

function removeVacancy($vacancySiteId)
{
    global $uApiClient, $pdo;

    $r = $uApiClient->delete('/board/posts', ['id' => $vacancySiteId]);
    var_dump(['id' => $vacancySiteId], json_decode($r));
    $sql       = "DELETE FROM vacancies WHERE `board_id` = ?";
    $statement = $pdo->prepare($sql);
    $statement->execute([$vacancySiteId]);
}

function publishVacancy($vacancy)
{
    global $uApiClient, $pdo;

    $description = <<<TEXT
Должностные обязанности:
{$vacancy['duty']}

Дополнительная информация по вакансии:
{$vacancy['requirement']['qualification']}

Образование:
{$vacancy['requirement']['education']}

График работы:
{$vacancy['schedule']}

Тип занятости:
{$vacancy['employment']}

Дополнительные бонусы:
{$vacancy['term']['text']}

Контакт:
{$vacancy['company']['name']}

Источник: <a href="http://trudvsem.ru" target="_blank" rel="nofollow noopenerz">trudvsem.ru</a>
TEXT;

    $addressParts = explode(',', $vacancy['addresses']['address'][0]['location']);
    unset($addressParts[0]);
    unset($addressParts[0]);
    $address = join(', ', $addressParts);
    $address = str_replace('Рязанская область', '', $address);

    $data = [
        'category'         => '276',
         'title'            => $vacancy['job-name'],
         'description'      => $description,
         'description_type' => 'html',
         'name'             => mb_strimwidth($vacancy['company']['name'], 0, 30),
         'author_phone'     => mb_strimwidth($vacancy['company']['phone'],0, 30),
         'other1'           => 'От ' . number_format($vacancy['salary_min'], 0, ',', ' ') . ' руб',
         'other2'           => 'Рязанская область',
         'other3'           => mb_strimwidth($address, 0, 100),
    ];
    
    $response = json_decode($uApiClient->post('/board', $data));
 var_dump($data, $response);
    $vacancyId   = $vacancy['id'];
    $publishedId = $response->id;


    $sql       = "INSERT INTO vacancies (`trudvsem_id`, `board_id`) VALUES (?, ?)";
    $statement = $pdo->prepare($sql);
    $statement->execute([$vacancyId, $publishedId]);

}

$vacancies         = loadAllVacancies();
$relevantVacancies = filterLoadedVacanciesByRelevance($vacancies);

$publishedVacancies = getPublishedVacancies();
$vacanciesForRemove = getVacanciesForRemoving($publishedVacancies, $relevantVacancies);

if ($vacanciesForRemove) {
    removeVacancy($vacanciesForRemove[0]['board_id']);

} else {
    $vacanciesForPublish = getVacanciesForPublishing($publishedVacancies, $relevantVacancies);

    if ($vacanciesForPublish) {

        publishVacancy($vacanciesForPublish[0]['vacancy']);
    }
}

?>


Так побывали публикуется ссылка на мой сайт а не на сайт источник
"<a href=".{$vacancy['requirement']['vac_url']}." target='_blank' rel='nofollow noopenerz'>ССЫЛКА</a>";


фото https://sun1-3.userapi.com/c840639/v...kreFyHBMmI.jpg

Последний раз редактировалось spinastr, 12.02.2018 в 16:42.
Ответить с цитированием