Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как в DLE разбить число пробелом?

Как в DLE разбить число пробелом?


     25.06.2022    DLE    Все вопросы » Хаки    275

вопрос
Приветствую, помогите пожалуйста разбить числа пробелами, что бы при добавлении новости в доп поле. в место 10000 писалось 10 000. Спасибо!

Ответа пока нет


17 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 27 июня 2022 10:58 -

Нужно поправить шаблонизатор таким образом, что бы применть по регулярке ^\d+$ вот такое выражение:

number_format($number, 2, ',', ' ');


либо делать через css (тут не подскажу)

либо через js (тоже не подскажу)

либо в стол заказов

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

TEDII
Юзер

TEDII - 4 июля 2022 17:41 -

есть у меня рабочий скрипт, ну не знаю как привязать его к тегу доп поля prays в моем случаи

var number = 12354987,
    output = [],
    sNumber = number.toString();

for (var i = 0, len = sNumber.length; i < len; i += 1) {
    output.push(+sNumber.charAt(i));
}

TeraMoune
Эксперт

TeraMoune - 5 июля 2022 02:56 -

Он не делает того чего нужно, он просто заполняет массив где число разбивается на по символу и создаётся массив [1,2,3,4,5,6,7], а это не число...

TEDII
Юзер

TEDII - 4 августа 2022 16:01 -

<script> 
  $('input').val(String([xfvalue_price]).replace(/(\d)(?=(\d{3})+([^\d]|$))/g, '$1 '));
    </script>
<input></input>

Пробую вывести через инпут и указываю до поле, ну почему то скрипт берет доп поле с айди первой новости и дублирует во все посты, как это можно исправить?

rewenas
Юзер

rewenas - 28 июня 2022 16:53 -

Посмотри здесь Возможно этот способ на JS тебе подойдет!

TEDII
Юзер

TEDII - 4 августа 2022 16:05 -

а как это вывести с привязкой к доп полю?

Dark5ider
Эксперт

Dark5ider - 4 августа 2022 16:27 -

Если в полной новости, то: engine/modules/show.full.php

Находим:


if ($config['image_lazy'] AND $view_template != "print") $xfieldsdata[$value[0]] = preg_replace_callback ( "#<(img|iframe)(.+?)>#i", "enable_lazyload", $xfieldsdata[$value[0]] );


Вставляем после:


if ( preg_match( "#\\[xfvalue_{$preg_safe_name} type=['\"](.+?)['\"]\\]#i", $tpl->copy_template, $matches ) ) {
					if ($matches[1] == 'price') {
					
						$xfieldsdata[$value[0]] = number_format($xfieldsdata[$value[0]], 0, ',', ' ');
						$tpl->set( $matches[0], $xfieldsdata[$value[0]] );
					
					}
				}


В шаблон fullstory.tpl:


[xfvalue_myxfname type="price"]


Где myxfname - имя вашего доп.поля

TEDII
Юзер

TEDII - 4 августа 2022 16:38 -

Спасибо добрый человек, очень помог!!!)
а почему к примеру так не получается? без всяких правок, просто на js
<script> 
  $('input').val(String([xfvalue_price]).replace(/(\d)(?=(\d{3})+([^\d]|$))/g, '$1 '));
    </script>
<input></input>

TeraMoune
Эксперт

TeraMoune - 4 августа 2022 22:03 -

Потому что $('input') значит все input на странице, нужно смотреть есть ли уникальные данные у каждого input и писать цикл обхода по изменению всех последовательно. Или оборачивать доп. поле в теги с уникальными id или class'ом и опять же через цикл обходить их и искать внутри input'ы и менять.

Так же рекомендую почитать про выборку селекторов в фреймворке jquery и как грамотно пользоваться этой возможностью.

TEDII
Юзер

TEDII - 4 августа 2022 16:42 -

а куда в коротких новостях вставить этот код?

TEDII
Юзер

TEDII - 4 августа 2022 18:13 -

подскажи пожалуйста как в других шаблонах код вставить, к примеру в коротких, топневс, похожих

TEDII
Юзер

TEDII - 4 августа 2022 18:14 -

или может есть один общий файл который везде отобразит

TeraMoune
Эксперт

TeraMoune - 4 августа 2022 22:22 -

main.tpl + avialable, однако так не получится передать в main.tpl последовательно все значения полей. Придётся изворачиваться и присваивать эти значения в data атрибуты, а после уже опять же как в ответах выше прогонять в цикле все эти атрибуты и производить замену соответствующим полям.

https://www.internet-technologies.ru/articles/5-primerov-ispolzovaniya-funkcii-jquery-each.html
Тут расписано о циклах с примерами и пояснениями.

TEDII
Юзер

TEDII - 4 августа 2022 22:33 -

пипец как все сложно, что бы просто разбить числа....я в этом вообще не шарю.... Подскажи пожалуйста куда хотя бы вставлять код высще в show.short для коротких. Спасибо за ответ)

Dark5ider
Эксперт

Dark5ider - 4 августа 2022 22:59 -

show.short.php

После:
if ($config['image_lazy']) $xfieldsdata[$value[0]] = preg_replace_callback ( "#<(img|iframe)(.+?)>#i", "enable_lazyload", $xfieldsdata[$value[0]] );


Хотя не сильно принципиально сюда, можно выше, можно ниже, главное понимать в каких рамках)

TEDII
Юзер

TEDII - 4 августа 2022 23:44 -

чет не сработало...

Dark5ider
Эксперт

Dark5ider - 5 августа 2022 11:47 -

Чет кэш почистите...

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх