Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29

Табличный вид вывода данных из инфоблока

31.07.2015, 14:23. Показов 8564. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Проблема заключается в следующем:
в стандартном шаблоне компонента catalog.section элементы инфоблога выводятся плиткой в виде эскизов. Мне было необходимо сделать вывод данной информации в виде таблицы (скрин прилагаю). После правки шаблона все, как вы можете видеть, в принципе получилось, за исключением того, что перестали работать выбор количества товара и кнопка купить. Я уже неделю убил на решение данной задачи, неоднократно начинал править данный шаблон с нуля...но все без толку. По сути я всего навсего помещаю те же данные, которые в стандартном шаблоне расположены в divах, в ячейки таблицы td, не (не в коем случае!) трогая логику, но результат всегда один и то же.
Может быть кто то из вас сталкивался с подобной ситуацией и сможет подсказать мне в чем дело? Я не нашел ни одной подобной темы ни на этом форуме ни вообще. Вся надежда только на вас, спасайте!

catalog_section_new.zip

Заранее благодарен за то, что уделите время моей проблеме.
Миниатюры
Табличный вид вывода данных из инфоблока  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2015, 14:23
Ответы с готовыми решениями:

Перевести в табличный вид
Всем привет, есть такая проблема, имеется перечень данных которые выводятся в всплывающем окне, их нужно привести в табличный вид(разбить...

Древовидная структура в Табличный вид
Ни как не могу решить следующую задачу. В базе имеется следующая таблица categories с полями id, name, level,...

Табличный вид и не заполненные свойства
в шаблоне табличная верстка <table> <thead> <th>Голы</th> <th>Передачи</th> ...

20
 Аватар для At0m1c
48 / 43 / 6
Регистрация: 09.06.2012
Сообщений: 152
01.08.2015, 09:55
Вам лучше не стандартный шаблон переписывать, а сделать свой с нуля. Сотрите весь код, вставьте свою вёрстку, проверьте работает ли увеличение/уменьшение товара, ниже сделайте print_r() массива $arResult и работайте, пишите цикл, условия...
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
04.08.2015, 13:18  [ТС]
После танца с бубном вокруг шаблонов catalog.section/.default и catalog.section/list мне таки удалось сделать шаблон, в котором корректно работает выбор количества товара для покупки и кнопка купить. Теперь возникла другая проблема:
при изменении количества товара не изменяется цена.
Скрипт выдает следующую ошибку:
Uncaught TypeError: Cannot read property 'currencyFormat' of undefined
- то есть считает свойство currencyFormat неопределенным.
Может кто подскажет где ошибка или как переписать код скрипта, что бы она не выскакивала?

Кусок кода скрипта, на первой строке которого выскакивает ошибка:

JavaScript
1
2
3
4
5
strPrice = BX.Currency.currencyFormat(price.DISCOUNT_VALUE, price.CURRENCY, true);
if (this.showOldPrice && (price.DISCOUNT_VALUE !== price.VALUE))
{
strPrice += ' <span>'+BX.Currency.currencyFormat(price.VALUE, price.CURRENCY, true)+'</span>';
}
код отображения цены из шаблона:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<td class="bx_catalog_item_price"> 
 
<? 
if ($minPrice['PRINT_DISCOUNT_VALUE'] > 0) 
{ 
?> 
<div id="<? echo $arItemIDs['PRICE']; ?>"> 
 
<span class="catalog-price"><?=$minPrice['PRINT_DISCOUNT_VALUE'];?></span> 
 
</div> 
<? 
} 
else 
{ 
?> 
<b id="not_available"><?=GetMessage('NOT_BEEN_SET')?></b> 
<? 
} 
?> 
 
</td>
print_r переменной $minPrice по одному из товаров:

Кликните здесь для просмотра всего текста

Array(
[VALUE_NOVAT] => 18
[PRINT_VALUE_NOVAT] => 18,00 руб.
[VALUE_VAT] => 18
[PRINT_VALUE_VAT] => 18,00 руб.
[VATRATE_VALUE] => 0
[PRINT_VATRATE_VALUE] => 0,00 руб.
[DISCOUNT_VALUE_NOVAT] => 18
[PRINT_DISCOUNT_VALUE_NOVAT] => 18,00 руб.
[DISCOUNT_VALUE_VAT] => 18
[PRINT_DISCOUNT_VALUE_VAT] => 18,00 руб.
[DISCOUNT_VATRATE_VALUE] => 0
[PRINT_DISCOUNT_VATRATE_VALUE] => 0,00 руб.
[CURRENCY] => RUB
[PRICE_ID] => 1
[ID] => 38726
[CAN_ACCESS] => Y
[CAN_BUY] => Y
[MIN_PRICE] => Y
[VALUE] => 18
[PRINT_VALUE] => 18,00 руб.
[DISCOUNT_VALUE] => 18
[PRINT_DISCOUNT_VALUE] => 18,00 руб.
[DISCOUNT_DIFF] => 0
[DISCOUNT_DIFF_PERCENT] => 0
[PRINT_DISCOUNT_DIFF] => 0,00 руб.
)
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 10:13
Цитата Сообщение от Sobi1214 Посмотреть сообщение
Uncaught TypeError: Cannot read property 'currencyFormat' of undefined
- то есть считает свойство currencyFormat неопределенным.
Неопределенным считается объект со свойством currencyFormat, то есть BX.Currency. Посмотрите в исходном шаблоне. что такое BX.Currency и откуда берется.
1
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 10:26  [ТС]
Ну хоть кто то ответил) И на том спасибо)
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 10:38
Sobi1214, потому что тема достаточно мутная, надо иметь перед глазами живой функционал и код.
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 10:51  [ТС]
Да без проблем, залил файлы на Яндекс диск)

Файлы шаблона templates.php result_modifier.php script.js

темп.zip

Если будет надо что то еще, скину. Помогите пожалуйста!

Добавлено через 3 минуты
К слову BX.Currency. встречается во всем документе script.js всего дважды:

здесь -
strPrice = BX.Currency.currencyFormat(price.DISCOUNT_VALUE, price.CURRENCY, true);

и тут -
strPrice += ' <span>'+BX.Currency.currencyFormat(price.VALUE, price.CURRENCY, true)+'</span>';
Комментарий администратора TaatshiЗагружайте изображения и файлы на форум и прикрепляйте к сообщению.
Обновленная Памятка «Как работать в редакторе сообщений»
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 11:48
Лучший ответ Сообщение было отмечено Sobi1214 как решение

Решение

В файле \bitrix\js\currency\core_currency.js видим:
JavaScript
1
2
3
4
5
6
7
8
9
BX.Currency = {
    currencyList: [],
    defaultFormat: {
        'FORMAT_STRING': '#',
        'DEC_POINT': '.',
        'THOUSANDS_SEP': ' ',
        'DECIMALS': 2,
        'HIDE_ZERO': 'N'
    },
в шаблоне:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$currencyList = '';
    if (!empty($arResult['CURRENCIES']))
    {
        $templateLibrary[] = 'currency';
        $currencyList = CUtil::PhpToJSObject($arResult['CURRENCIES'], false, true, true);
    }
    $templateData = array(
        'TEMPLATE_THEME' => $this->GetFolder().'/themes/'.$arParams['TEMPLATE_THEME'].'/style.css',
        'TEMPLATE_CLASS' => 'bx_'.$arParams['TEMPLATE_THEME'],
        'TEMPLATE_LIBRARY' => $templateLibrary,
        'CURRENCIES' => $currencyList
    );
    unset($currencyList, $templateLibrary);
$arResult['CURRENCIES'] у вас пустое, т.к. убрали из result_modifier.php его определение:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$arResult['CURRENCIES'] = array();
    if ($arResult['MODULES']['currency'])
    {
        if ($boolConvert)
        {
            $currencyFormat = CCurrencyLang::GetFormatDescription($arResult['CONVERT_CURRENCY']['CURRENCY_ID']);
            $arResult['CURRENCIES'] = array(
                array(
                    'CURRENCY' => $arResult['CONVERT_CURRENCY']['CURRENCY_ID'],
                    'FORMAT' => array(
                        'FORMAT_STRING' => $currencyFormat['FORMAT_STRING'],
                        'DEC_POINT' => $currencyFormat['DEC_POINT'],
                        'THOUSANDS_SEP' => $currencyFormat['THOUSANDS_SEP'],
                        'DECIMALS' => $currencyFormat['DECIMALS'],
                        'THOUSANDS_VARIANT' => $currencyFormat['THOUSANDS_VARIANT'],
                        'HIDE_ZERO' => $currencyFormat['HIDE_ZERO']
                    )
                )
            );
            unset($currencyFormat);
        }
        else
        {
            $currencyIterator = CurrencyTable::getList(array(
                'select' => array('CURRENCY')
            ));
            while ($currency = $currencyIterator->fetch())
            {
                $currencyFormat = CCurrencyLang::GetFormatDescription($currency['CURRENCY']);
                $arResult['CURRENCIES'][] = array(
                    'CURRENCY' => $currency['CURRENCY'],
                    'FORMAT' => array(
                        'FORMAT_STRING' => $currencyFormat['FORMAT_STRING'],
                        'DEC_POINT' => $currencyFormat['DEC_POINT'],
                        'THOUSANDS_SEP' => $currencyFormat['THOUSANDS_SEP'],
                        'DECIMALS' => $currencyFormat['DECIMALS'],
                        'THOUSANDS_VARIANT' => $currencyFormat['THOUSANDS_VARIANT'],
                        'HIDE_ZERO' => $currencyFormat['HIDE_ZERO']
                    )
                );
            }
            unset($currencyFormat, $currency, $currencyIterator);
        }
    }
1
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 14:01  [ТС]
Спасибо вам большое!) Буду сидеть, разбираться дальше)

Добавлено через 2 часа 7 минут
Но как мне теперь отредактировать файл result_modifier.php, если при добавлении в него вышеприведенного кода, шаблон перестает работать?
Помогите пожалуйста.
Заранее благодарен за уделенное время.
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 14:10
что значит "перестает работать"?
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 14:15  [ТС]
Белый экран, как при синтаксической ошибке. Но вроде все норм, дебагер ничего не обнаружил, все кавычки закрыты и т.д.
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 14:21
1. вынесите этот код из цикла
2. смотрите error_log
1
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 15:43  [ТС]
Все, мне удалось добавить определение $arResult['CURRENCIES'] в result_modifier.php так, что бы страница грузилась без проблем.
Но проблема не решилась, сумма по прежнему не меняется, а currencyFormat так и считается неопределенным(
Перезалил отредактированный result_modifier.php
https://yadi.sk/d/Xl7tFYzZiH5Xh
Мб еще чего не хватает? Гляньте пожалуйста своим наметанным глазом.
Заранее благодарен.

Добавлено через 5 минут
Только что попробовал загнать $arResult['CURRENCIES'] = array(); и условие if ($arResult['MODULES']['currency']) в foreach, результат тот же.
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
05.08.2015, 16:14
Цитата Сообщение от Sobi1214 Посмотреть сообщение
Перезалил отредактированный result_modifier.php
https://yadi.sk/d/Xl7tFYzZiH5Xh
в этом файле нет определения $arResult['CURRENCIES']

Цитата Сообщение от Sobi1214 Посмотреть сообщение
Только что попробовал загнать $arResult['CURRENCIES'] = array(); и условие if ($arResult['MODULES']['currency']) в foreach, результат тот же.
а это вообще зачем?
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
05.08.2015, 16:17  [ТС]
Извиняюсь, не ту ссылку скинул, вот:
result_modifier_new.zip
0
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
06.08.2015, 14:12
Sobi1214, в error_log есть что-нибудь?
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
06.08.2015, 15:05  [ТС]
Нет, никакие ошибки больше не выдает.

Добавлено через 29 минут
По крайней мере ошибки точно не пишутся в файлик error.log
код .settings.php у меня вот такой:

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?
return array (
  'utf_mode' => 
  array (
    'value' => false,
    'readonly' => true,
  ),
  'cache_flags' => 
  array (
    'value' => 
    array (
      'config_options' => 3600,
      'site_domain' => 3600,
    ),
    'readonly' => false,
  ),
  'cookies' => 
  array (
    'value' => 
    array (
      'debug' => true,
      'handled_errors_types' => 4437,
      'exception_errors_types' => 4437,
      'ignore_silence' => true,
      'assertion_throws_exception' => false,
      'assertion_error_type' => 256,
      'log' => array (
        'settings' => array (
          'file' => '/error.log',
          'log_size' => 1000000,
        ),
    ),
    ),
    'readonly' => true,
  ),
  'connections' => 
  array (
    'value' => 
    array (
      'default' => 
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
        'host' => 'localhost',
        'database' => 'zapchatf_btrx',
        'login' => 'zapchatf_btrx',
        'password' => 'jTMFEjTSR',
        'options' => 2,
      ),
    ),
    'readonly' => true,
  ),
);
?>
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
10.08.2015, 14:03  [ТС]
Вопрос еще актуален, может кто подскажет в чем проблема?
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
18.08.2015, 13:49  [ТС]
Мне никак не удается решить эту проблему самостоятельно, и помогать никто не хочет.
Прилагаю к сообщению шаблоны полностью:
sections - в котором работает все, и
list - в котором почему то не работает увеличение цены по увеличению количества товара.
Помогите хоть кто н будь, уже третья неделя пошла!
Вложения
Тип файла: zip sections.zip (128.0 Кб, 5 просмотров)
Тип файла: zip list.zip (82.8 Кб, 4 просмотров)
0
0 / 0 / 1
Регистрация: 31.07.2015
Сообщений: 29
21.08.2015, 09:46  [ТС]
Ну же, крутые программисты, где вы все?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.08.2015, 09:46
Помогаю со студенческими работами здесь

Перевод XML файла в табличный вид HTML-е
Здравствуйте! Не как не могув XSLT нормализовать цикл в &lt;th&gt; и в &lt;td&gt; -шках проставить ячейки в пустых местах, ну чтобы выглядел как на...

Компонент для вывода элементов инфоблока
Подскажите, какой компонент лучше использовать для данной задачи, у меня есть инфоблок &quot;информационные ресурсы&quot;, нужно вывести...

Нужен табличный компонент для вывода массива
Здравствуйте! Начал обучаться C# в Windows Form. Во всем вроде разобрался, но не могу сделать таблицу для массивов. Могли бы вы...

"Табличный вид" строки.
Итак, ребят, допустим у нас есть пару строк: Обе они находятся в StringList'e, но это не суть. Необходимо переделать строки таким...

Табличный процессор, табличный редактор, электронные таблицы
Пишу табличный процессор аналог Excel У кого есть исходники, скиньте буду благодарен очень


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru