Убирать ссылки на внешние ресурсы в текстах Мультивендор

добрый день, подскажите, есть ли какая-либо возможность заменять внешние ссылки, например, в описании товаров от продавцов в версии Мультивендор на текст. Но при этом внутренние ссылки, оставить в рабочем состоянии? Т.е. на уровне загрузки текста продавцами, сам движок форматирует каким-то образом текст

/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']);

хуков в этом месте нет, придется прямо в коде ставить. Ну и повозиться чтобы регулярку придумать - это уж сами :slight_smile:

1 лайк

спасибо! при обновлении софта слететь может или нет?

Скорее всего даже обязательно слетит при каждом обновлении, за исключением самых мелких фиксов, так как в этом файле всё сосредоточение функций управления и отображения каталога товаров

Чтобы не слетело можно

  1. Обработать в хуке
fn_set_hook('update_product_pre', $product_data, $product_id, $lang_code, $can_update);
  1. Сделать post контроллер на просмотр карточки товара, там извлекать описание и также как коллега выше писал, скрывать ссылки.

Такие варианты не слетят при обновлении.