Kopusha |
|
---|---|
Помогите написать код или поделитесь готовым. Есть такая функция - "PRDADD_FORM_CAT" => cot_selectbox_structure('market', $ritem['item_cat'], 'rcat'), Она формирует выпадающий список из структуры модуля. У меня в i18n_structure есть переведенная структура, как дописать свою функцию для вывода с учетом локализации? function cot_selectbox_structure($extension, $check, $name, $subcat = '', $hideprivate = true, $is_module = true, $add_empty = false, $attrs = '', $custom_rc = '') { global $structure; $structure[$extension] = (is_array($structure[$extension])) ? $structure[$extension] : array(); $result_array = array(); foreach ($structure[$extension] as $i => $x) { $display = ($hideprivate && $is_module) ? cot_auth($extension, $i, 'W') : true; if ($display && !empty($subcat) && isset($structure[$extension][$subcat])) { $mtch = $structure[$extension][$subcat]['path']."."; $mtchlen = mb_strlen($mtch); $display = (mb_substr($x['path'], 0, $mtchlen) == $mtch || $i === $subcat); } if ((!$is_module || cot_auth($extension, $i, 'R')) && $i!='all' && $display) { $result_array[$i] = $x['tpath']; } } $result = cot_selectbox($check, $name, array_keys($result_array), array_values($result_array), $add_empty, $attrs, $custom_rc); return($result); }
Added 55 minutes later: В итоге благодаря Виктору сделал, с небольшим комстылем. Готовый код - function cot_selectbox_structure($extension, $check, $name, $subcat = '', $hideprivate = true, $is_module = true, $add_empty = false, $attrs = '', $custom_rc = '') { require_once cot_incfile('i18n', 'plug'); global $structure, $i18n_structure, $i18n_enabled, $i18n_read, $i18n_notmain, $i18n_locale; $i18n_locale = cot_import('l', 'G', 'ALP'); $structure[$extension] = (is_array($structure[$extension])) ? $structure[$extension] : array(); $result_array = array(); foreach ($structure[$extension] as $i => $x) { $display = ($hideprivate && $is_module) ? cot_auth($extension, $i, 'W') : true; if ($display && !empty($subcat) && isset($structure[$extension][$subcat])) { $mtch = $structure[$extension][$subcat]['path']."."; $mtchlen = mb_strlen($mtch); $display = (mb_substr($x['path'], 0, $mtchlen) == $mtch || $i === $subcat); } if ((!$is_module || cot_auth($extension, $i, 'R')) && $i!='all' && $display) { $result_array[$i] = $x['tpath']; } if ($i18n_locale && $i18n_locale != 'en') { $cat_title = $i18n_structure[$i][$i18n_locale]; $result_array[$i] = $cat_title['title']; } } $result = cot_selectbox($check, $name, array_keys($result_array), array_values($result_array), $add_empty, $attrs, $custom_rc); return($result); } Пришлось if ($i18n_locale && $i18n_locale != 'en') так как почемуто в forms.php не идет проверка на $cfg['plugin']['i18n']['defaultlang'] Added 15 minutes later: И не смог справится с подкатегориями Вот код где надо добавить условие если не en язык то брать title подкатегории с i18n, помогите function cot_structure_children($area, $cat, $allsublev = true, $firstcat = true, $userrights = true, $sqlprep = true) { global $structure, $db; $mtch = ''; $mtchlen = $mtchlvl = 0; if ($cat != '') { $mtch = $structure[$area][$cat]['path'] . '.'; $mtchlen = mb_strlen($mtch); $mtchlvl = mb_substr_count($mtch, "."); } $catsub = array(); if ($cat != '' && $firstcat && (($userrights && cot_auth($area, $cat, 'R') || !$userrights))) { $catsub[] = $cat; } foreach ($structure[$area] as $i => $x) { if (($cat == '' || mb_substr($x['path'], 0, $mtchlen) == $mtch) && (($userrights && cot_auth($area, $i, 'R') || !$userrights))) { //$subcat = mb_substr($x['path'], $mtchlen + 1); if ($allsublev || (!$allsublev && mb_substr_count($x['path'],".") == $mtchlvl)) { $i = ($sqlprep) ? $db->prep($i) : $i; $catsub[] = $i; } } } return($catsub); }
|
|
This post was edited by Kopusha (2020-11-05 10:46, 4 years ago) |