| 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)
|