Здравствуйте!
Есть такой сайт
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