в общем шаблоне поля Теги разрешено испоьзовать системный тег [tag:parametr:-1] который выведет сразу все теги документа. каждый тег обернут в <span class="ave-tag">
This commit is contained in:
@@ -59,20 +59,20 @@
|
||||
array_push($field_tags, $row);
|
||||
|
||||
// Преобразуем сохраненные теги в массив
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
$field_value_arr = explode('|', $field_value);
|
||||
$field_value_arr = array_diff($field_value_arr, array(''));
|
||||
|
||||
$field_tags_combined = array_unique(array_merge($field_tags, $field_value));
|
||||
$field_tags_combined = array_unique(array_merge($field_tags, $field_value_arr));
|
||||
|
||||
$total = count($field_tags_combined);
|
||||
|
||||
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4));
|
||||
|
||||
$AVE_Template->assign('field_points', $field_points);
|
||||
$AVE_Template->assign('field_tags', $field_tags_combined); // Используем объединенный список
|
||||
$AVE_Template->assign('field_tags', $field_tags_combined);
|
||||
$AVE_Template->assign('field_dir', $fld_name);
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('field_value', $field_value);
|
||||
$AVE_Template->assign('field_value', $field_value_arr);
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
|
||||
|
||||
@@ -80,20 +80,29 @@
|
||||
break;
|
||||
|
||||
case 'doc':
|
||||
|
||||
case 'req':
|
||||
$AVE_Template->config_load($lang_file, 'public');
|
||||
|
||||
// Подготовка массива активных тегов (очистка и сброс индексов)
|
||||
$field_param = explode('|', $field_value);
|
||||
$field_param = array_values(array_diff($field_param, array('')));
|
||||
|
||||
if ($tpl_empty)
|
||||
{
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
$field_value = array_values($field_value);
|
||||
$field_value = $field_param;
|
||||
}
|
||||
else
|
||||
{
|
||||
$field_param = explode('|', $field_value);
|
||||
$field_param = array_diff($field_param, array(''));
|
||||
$field_param = array_values($field_param);
|
||||
// 1. Обработка универсального тега [-1] для вывода всего списка сразу
|
||||
if (strpos($tpl, '[tag:parametr:-1]') !== false) {
|
||||
$all_tags_html = '';
|
||||
foreach ($field_param as $tag_item) {
|
||||
$all_tags_html .= '<span class="ave-tag">' . $tag_item . '</span> ';
|
||||
}
|
||||
$tpl = str_replace('[tag:parametr:-1]', $all_tags_html, $tpl);
|
||||
}
|
||||
|
||||
// 2. Обработка точечных тегов [0], [1] и т.д. с защитой от ошибок PHP 8
|
||||
$field_value = preg_replace_callback(
|
||||
'/\[tag:parametr:(\d+)\]/i',
|
||||
function ($data) use ($field_param)
|
||||
@@ -105,47 +114,7 @@
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl);
|
||||
|
||||
if ($tpl_empty && $tpl_file)
|
||||
{
|
||||
$AVE_Template->assign('field_id', $field_id);
|
||||
$AVE_Template->assign('field_default', $default);
|
||||
$AVE_Template->assign('field_value', $field_value);
|
||||
|
||||
return $AVE_Template->fetch($tpl_file);
|
||||
}
|
||||
|
||||
return $field_value;
|
||||
break;
|
||||
|
||||
case 'req':
|
||||
|
||||
$AVE_Template->config_load($lang_file, 'public');
|
||||
|
||||
if ($tpl_empty)
|
||||
{
|
||||
$field_value = explode('|', $field_value);
|
||||
$field_value = array_diff($field_value, array(''));
|
||||
$field_value = array_values($field_value);
|
||||
}
|
||||
else
|
||||
{
|
||||
$field_param = explode('|', $field_value);
|
||||
$field_param = array_diff($field_param, array(''));
|
||||
$field_param = array_values($field_param);
|
||||
$field_value = preg_replace_callback(
|
||||
'/\[tag:parametr:(\d+)\]/i',
|
||||
function($data) use($field_param)
|
||||
{
|
||||
$index = (int)$data[1];
|
||||
return isset($field_param[$index]) ? $field_param[$index] : '';
|
||||
},
|
||||
$tpl
|
||||
);
|
||||
}
|
||||
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl);
|
||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, $action, $_tpl);
|
||||
|
||||
if ($tpl_empty && $tpl_file)
|
||||
{
|
||||
@@ -222,7 +191,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (! function_exists('afterTagsSave'))
|
||||
if (! function_exists('afterTagsSave'))
|
||||
{
|
||||
function afterTagsSave ($data)
|
||||
{
|
||||
@@ -234,7 +203,6 @@ if (! function_exists('afterTagsSave'))
|
||||
$AVE_Document = new AVE_Document();
|
||||
}
|
||||
|
||||
// Безопасное получение ID
|
||||
$document_id = isset($data['document_id']) ? (int)$data['document_id'] : 0;
|
||||
$rubric_id = isset($data['rubric_id']) ? (int)$data['rubric_id'] : 0;
|
||||
|
||||
@@ -287,7 +255,6 @@ if (! function_exists('afterTagsSave'))
|
||||
$used_tags_str = "'" . implode("','", $used_tags_array) . "'";
|
||||
$where_clause = "tag NOT IN ({$used_tags_str})";
|
||||
} else {
|
||||
// Если список используемых тегов пуст, удаляем ВСЕ теги рубрики (полная очистка)
|
||||
$where_clause = "1";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user