добрый день, подскажите, есть ли какая-либо возможность заменять внешние ссылки, например, в описании товаров от продавцов в версии Мультивендор на текст. Но при этом внутренние ссылки, оставить в рабочем состоянии? Т.е. на уровне загрузки текста продавцами, сам движок форматирует каким-то образом текст
/app/functions/fn.catalog.php
функция fn_update_product есть строки (у меня 2632)
// add new product
if (empty($product_id)) {
$create = true;
$product_data['create'] = true;
// product title can't be empty and not set product_id
if (empty($product_data['product']) || !empty($product_data['product_id'])) {
fn_set_notification('E', __('error'), __('need_product_name'));
return false;
}
$product_id = db_query("INSERT INTO ?:products ?e", $_data);
if (empty($product_id)) {
$product_id = false;
}
//
// Adding same product descriptions for all cart languages
//
$_data = $product_data;
$_data['product_id'] = $product_id;
$_data['product'] = trim($_data['product'], " -");
foreach (fn_get_translation_languages() as $_data['lang_code'] => $_v) {
db_query("INSERT INTO ?:product_descriptions ?e", $_data);
}
после $_data[‘product’] = trim($_data[‘product’], " -");
и чуть ниже в строках (перед db_query)
$_data = $product_data;
if (!empty($_data['product'])) {
$_data['product'] = trim($_data['product'], " -");
}
db_query(
'UPDATE ?:product_descriptions SET ?u WHERE product_id = ?i AND lang_code = ?s',
$_data, $product_id, $lang_code
);
вставить
$_data['full_description'] = preg_replace(регулярка для выделения тэга ссылки и самой ссылки, маска замены, $_data['full_description']);
хуков в этом месте нет, придется прямо в коде ставить. Ну и повозиться чтобы регулярку придумать - это уж сами
1 лайк
спасибо! при обновлении софта слететь может или нет?
Скорее всего даже обязательно слетит при каждом обновлении, за исключением самых мелких фиксов, так как в этом файле всё сосредоточение функций управления и отображения каталога товаров
Чтобы не слетело можно
- Обработать в хуке
fn_set_hook('update_product_pre', $product_data, $product_id, $lang_code, $can_update);
- Сделать post контроллер на просмотр карточки товара, там извлекать описание и также как коллега выше писал, скрывать ссылки.
Такие варианты не слетят при обновлении.