Вопрос по биллингу.

InstantCMS 2.X
#1 13 декабря 2021 в 15:43

Привет. Списание баланса.

$billing->decrementUserBalance($user_id, $amount, $description, $action_id);

В каком формате отправить ссылку в переменной $description, что бы при выводе в истории биллинга она была бы ссылкой, а не строкой?

Пробовал так отправить

$description = sprintf(LANG_NOTIFY, href_to_profile($user),$nick);

Но пишет строку

#2 13 декабря 2021 в 18:08

Попробуйте вот так:

  1. $billing->decrementUserBalance($user_id, $amount, array(
  2. 'text' => LANG_NOTIFY,
  3. 'url' => href_to_profile($user),
  4. ), $action_id);

или же мудрить что то своё в этом файле: \templates\modern\controllers\billing\history.tpl.php, в районе 38 строки, где html_link($op['description'], $op['url']).

#3 13 декабря 2021 в 19:17

Про это то я прочитал в доках, но дело в том, что у меня в строке несколько разных ссылок, поэтому и использовал sprintf(), и хз как их передать. Ладно, буду мудрить что нибудь). Спасибо за участие). Просто дело в том, что если передаётся массив, то всё равно где то используется sprintf() и потом как то превращается в html...

#4 13 декабря 2021 в 20:52

Просто дело в том, что если передаётся массив, то всё равно где то используется sprintf() и потом как то превращается в html...

Lora

конкретно в случае вывода «истории операций», для вывода html используется html_link($op['description'], $op['url'])

так как исходный код компонента «Биллинг» закрыт, вам нужно или делать свою версию функции LoraChangeBalance/LoraDecrementUserBalance, или придумать как использовать sprintf в районе 38 строки файла history.tpl.php. Что-то типа того, чтобы вместо html_link($op['description'], $op['url']) было бы:

  1. $links = explode('*', $op['url']);
  2. sprintf($op['description'], $links[0], $links[1], ...));

чтобы это работало в момент записи операции вам нужно будет сохранять в базу данных что-то вроде

  1. $description = array(
  2. 'text' => 'строка в которой есть <a href="%s'">ссылка</a> 1 и гипер-текстовая <a href="%s'">ссылка 2</a>',
  3. 'url' => 'url1*url2',
  4. );

… что и называется мудрить… это не готовое решение, а просто набросок, как бы делал я.

#5 13 декабря 2021 в 21:02

Нет. Это не будет работать. Я пробовал все варианты. Вопервых html_link() просто превращает всю строку в ссылку. Во вторых в файле history.tpl.php ничего нельзя поправить и в третьих конструкция

$billing->decrementUserBalance($user_id, $amount, array(
    'text' => LANG_NOTIFY,
    'url' => href_to_profile($user),
), $action_id);

просто не работает). Хотя должна. Возможно, если бы всё это дело было в типе контента, то и работало бы, но в компоненте работать не хочет. Ну да и Бог с ним. Пойду другим путём).

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.