Всё таки с помощью приятелей удалось доковырять скрипт под ЖШ 4
Отчитаюсь, может кому пригодится.
Прежде всего нужно подгрузить ещё одну таблицу, где есть названия всех характеристик, потому что в таблице -
jshopping_products только их ID...
К коду:
$res = $pdo->query("SELECT id, `name_ru-RU` as name FROM {$cfg->dbprefix}jshopping_products_extra_fields");
$extra_info = $res->fetchAll(PDO::FETCH_ASSOC);
$extra_info = nomalizeArray($extra_info, 'name');
Дописал ещё одну подгрузку, аналогичную (в данном примере просто заменить прежний код, на предлагаемый):
$res = $pdo->query("SELECT id, `name_ru-RU` as name FROM {$cfg->dbprefix}jshopping_products_extra_fields");
$extra_info = $res->fetchAll(PDO::FETCH_ASSOC);
$extra_info = nomalizeArray($extra_info, 'name');
$res = $pdo->query("SELECT `id`, `name_ru-RU` as exv_name FROM {$cfg->dbprefix}jshopping_products_extra_field_values");
$extra_info_val = $res->fetchAll(PDO::FETCH_ASSOC);
$extra_info_val = nomalizeArray($extra_info_val, 'exv_name');
Далее вместо вот этого кода:
echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($row['extra_field_'.$i])."</param>\n";
Вставил вот такой:
echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($extra_info_val[(int)$row['extra_field_'.$i]])."</param>\n";
И всё начинает правильно работать.
В ЖШ4 есть возможность выбирать характеристики из множественного списка и сразу несколько. В этом случае в таблице
jshopping_products их ID записываются через запятую. В данной реализации скрипта - берётся только одна характеристика, первая, а все прочие опускаются. Для меня это несущественно, а кому важно, думаю и сам доковыряет, если захочет.
И ещё момент. В типах характеристик есть возможность вводить текстовые характеристика, а не списки. Тогда в таблице
jshopping_products записывается уже введённый текст, а не ID на характеристику. В этом случает нужно выбрать эти позиции и выводить их так, как описано в первоначальном скрипте. В моём случает это реализовано так:
if ($i >= 14 and $i <= 18 ) { echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($row['extra_field_'.$i])."</param>\n"; }
else { echo "<param name=\"{$extra_info[$i]}\">".htmlspecialchars($extra_info_val[(int)$row['extra_field_'.$i]])."</param>\n"; }
В общем - огромное спасибо автору скрипта. Всё работает.
_____________________________________________________________________________________________________________________________
Одежду обувь купить можно, совесть не купишь.