Интеграция с сайтом: публикация цен на лом из CRM
Цены на лом меняются часто — иногда ежедневно. Вручную обновлять их на сайте неудобно, а устаревшие цены отпугивают клиентов. Интеграция VtormetCRM с вашим сайтом позволяет публиковать актуальные цены автоматически, в реальном времени. Разбираем все способы: от простых виджетов до полной кастомизации через API.
Зачем публиковать актуальные цены на лом на сайте
Исследования поведения пользователей показывают:
- 85% посетителей сайта пункта приема первым делом ищут цены.
- Если цены устаревшие или их нет, 70% уходят к конкурентам.
- Актуальные цены повышают доверие к компании.
Ручное обновление цен — это:
- Риск ошибок и опечаток.
- Затраты времени сотрудников.
- Задержки (сегодня цена изменилась, а на сайте обновят только завтра).
Автоматическая публикация решает все эти проблемы:
- Цены обновляются мгновенно при изменении в CRM.
- Исключен человеческий фактор.
- Экономия времени.
- Возможность показывать цены в красивом виде с фильтрацией.
Ключевой фактор
Поисковые системы учитывают свежесть контента. Автоматическое обновление цен положительно влияет на SEO.
Способы интеграции VtormetCRM с сайтом
1. Готовый JavaScript-виджет
Самый простой способ. Вставляете на сайт код виджета, и он автоматически подгружает цены из CRM.
Плюсы: не требует программирования, обновляется автоматически.
Минусы: ограниченные возможности дизайна.
2. API-запросы (REST)
Сайт самостоятельно запрашивает цены через API VtormetCRM и выводит их в нужном дизайне.
Плюсы: полная свобода в оформлении, возможность кеширования.
Минусы: требуется разработка.
3. Прямая выгрузка в БД сайта
CRM по расписанию выгружает цены в базу данных сайта.
Плюсы: минимальная нагрузка на сайт, высокая скорость.
Минусы: настройка сложнее, требует доступа к БД.
В этой статье мы рассмотрим первые два способа как наиболее популярные.
Использование API VtormetCRM для получения цен
API VtormetCRM предоставляет удобный метод для получения актуальных цен на лом.
Метод: GET /v1/nomenclature/prices
Возвращает список всех позиций с актуальными ценами.
Пример запроса:
GET https://api.vtormetcrm.ru/v1/nomenclature/prices HTTP/1.1
Authorization: Bearer YOUR_API_KEY
Пример ответа (JSON):
{
"success": true,
"data": [
{
"id": 101,
"name": "Лом 3А",
"gost": "3А",
"type": "ferrous",
"price": 16500,
"price_unit": "руб/т",
"updated_at": "2025-05-15 10:30:00"
},
{
"id": 102,
"name": "Лом 5А",
"gost": "5А",
"type": "ferrous",
"price": 14000,
"price_unit": "руб/т",
"updated_at": "2025-05-15 10:30:00"
},
{
"id": 201,
"name": "Медь (блеск)",
"gost": null,
"type": "non_ferrous",
"price": 580000,
"price_unit": "руб/т",
"updated_at": "2025-05-15 10:30:00"
}
]
}
API поддерживает фильтрацию по типу металла (?type=ferrous), поиск по названию и другие параметры.
Готовый PHP-виджет для публикации цен
Мы подготовили простой PHP-скрипт, который можно вставить на любую страницу сайта. Скрипт получает цены из CRM и выводит их в виде красивой таблицы.
Код виджета:
<?php
// Параметры подключения
$api_key = "YOUR_API_KEY";
$api_url = "https://api.vtormetcrm.ru/v1/nomenclature/prices";
// Получаем данные
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code == 200) {
$data = json_decode($response, true);
$prices = $data["data"];
} else {
$prices = [];
// Можно вывести заглушку или сообщение об ошибке
}
?>
<div class="prices-widget">
<h3>Актуальные цены на лом</h3>
<table class="price-table">
<thead>
<tr>
<th>Вид лома</th>
<th>Цена, руб/т</th>
<th>Обновлено</th>
</tr>
</thead>
<tbody>
<tr>
<td>= htmlspecialchars($item["name"]) ?></td>
<td class="price">= number_format($item["price"], 0, ".", " ") ?> ₽</td>
<td class="date">= date("d.m.Y", strtotime($item["updated_at"])) ?></td>
</tr>
</tbody>
</table>
</div>
<style>
.prices-widget {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
}
.price-table {
width: 100%;
border-collapse: collapse;
}
.price-table th {
background: #333;
color: white;
padding: 10px;
text-align: left;
}
.price-table td {
padding: 8px 10px;
border-bottom: 1px solid #ddd;
}
.price-table .price {
font-weight: bold;
color: #2c7da0;
}
.price-table .date {
color: #666;
font-size: 0.9em;
}
</style>
Интеграция с WordPress (шорткод + виджет)
Для сайтов на WordPress мы подготовили простой плагин или код для functions.php.
Добавьте в functions.php:
// Шорткод для вывода цен из VtormetCRM
function vtormetcrm_prices_shortcode($atts) {
$api_key = "YOUR_API_KEY";
$cache_time = 3600; // кешируем на 1 час
$transient_key = "vtormetcrm_prices";
$prices = get_transient($transient_key);
if (false === $prices) {
$response = wp_remote_get("https://api.vtormetcrm.ru/v1/nomenclature/prices", [
"headers" => [
"Authorization" => "Bearer " . $api_key
],
"timeout" => 5
]);
if (wp_remote_retrieve_response_code($response) == 200) {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
$prices = $data["data"];
set_transient($transient_key, $prices, $cache_time);
} else {
return "<p>Цены временно недоступны</p>";
}
}
$output = "<div class="vtormetcrm-prices">";
$output .= "<h3>Актуальные цены на лом</h3>";
$output .= "<table class="wp-list-table widefat fixed striped">";
$output .= "<thead><tr><th>Вид лома</th><th>Цена, руб/т</th></tr></thead>";
$output .= "<tbody>";
foreach ($prices as $item) {
$output .= "<tr>";
$output .= "<td>" . esc_html($item["name"]) . "</td>";
$output .= "<td>" . number_format($item["price"], 0, ".", " ") . " ₽</td>";
$output .= "</tr>";
}
$output .= "</tbody></table>";
$output .= "<small>Обновлено: " . date("d.m.Y H:i") . "</small>";
$output .= "</div>";
return $output;
}
add_shortcode("vtormetcrm_prices", "vtormetcrm_prices_shortcode");
Теперь вы можете вставить шорткод [vtormetcrm_prices] в любую запись или страницу, и там отобразятся актуальные цены.
Интеграция с другими CMS и конструкторами
1C-Битрикс
В Битрикс можно создать компонент, который будет получать данные через API. Примерное расположение: Служебные модули → Веб-сервисы → REST API.
MODX
Создайте сниппет, аналогичный PHP-виджету выше, и вызывайте его в шаблоне.
Tilda, Wix, Readymag
Эти конструкторы не поддерживают серверный код. Для них можно использовать:
- HTML-iframe + наш виджет на отдельном хостинге: разместите PHP-виджет на своем хостинге, а на Тильде вставьте iframe.
- JavaScript-виджет: мы можем предоставить JS-код, который будет подгружать цены напрямую из API (с ограничениями по безопасности).
Чистый HTML + JavaScript (с использованием API)
<div id="prices-container">Загрузка цен...</div>
<script>
fetch("https://api.vtormetcrm.ru/v1/nomenclature/prices", {
headers: {
"Authorization": "Bearer YOUR_API_KEY"
}
})
.then(response => response.json())
.then(data => {
let html = "<table><tr><th>Вид лома</th><th>Цена</th></tr>";
data.data.forEach(item => {
html += `<tr><td>${item.name}</td><td>${item.price.toLocaleString()} ₽</td></tr>`;
});
html += "</table>";
document.getElementById("prices-container").innerHTML = html;
})
.catch(error => {
document.getElementById("prices-container").innerHTML = "Ошибка загрузки цен";
});
</script>
Дизайн и кастомизация таблицы цен
Чтобы таблица цен органично вписалась в ваш сайт, вы можете кастомизировать ее внешний вид.
Группировка по типам
Разделите черные и цветные металлы на разные блоки:
$ferrous = array_filter($prices, fn($item) => $item["type"] == "ferrous");
$non_ferrous = array_filter($prices, fn($item) => $item["type"] == "non_ferrous");
Иконки и изображения
Добавьте иконки для каждого вида металла (медь, алюминий, чугун и т.д.) — это улучшит визуальное восприятие.
Сортировка
Отсортируйте по популярности или по алфавиту:
usort($prices, fn($a, $b) => $a["name"] <=> $b["name"]);
Адаптивность для мобильных
На мобильных устройствах таблицу лучше превращать в карточки или использовать горизонтальную прокрутку.
Кеширование и оптимизация скорости
Чтобы не перегружать сервер CRM и ускорить загрузку сайта, рекомендуется использовать кеширование.
Кеширование в WordPress (transient API)
Как показано в примере для WordPress, используйте set_transient() для сохранения цен на 1-2 часа. Этого достаточно, так как цены меняются не так часто.
Кеширование на сервере (файлы)
Для самописных сайтов можно сохранять результат в JSON-файл и обновлять его по расписанию через cron.
Redis/Memcached
Для высоконагруженных проектов используйте in-memory кеширование.
CDN
Если цены меняются редко, можно выгружать статический HTML на CDN.
Часто задаваемые вопросы
Преимущества автоматической публикации цен из CRM:
- Цены всегда актуальны — клиенты видят реальные цифры.
- Экономия времени сотрудников.
- Повышение доверия к компании.
- Увеличение конверсии в заявки.
- Положительное влияние на SEO.
- Возможность анализировать, на какие цены кликают чаще.