From b829d3b6d6f6b79d8e844840d9bfa80866d8ed29 Mon Sep 17 00:00:00 2001 From: Repellent Date: Tue, 2 Dec 2025 21:24:57 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=A1=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fields/doc_link/field.php | 107 ++++++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 33 deletions(-) diff --git a/fields/doc_link/field.php b/fields/doc_link/field.php index 3f315d2..8082d2c 100644 --- a/fields/doc_link/field.php +++ b/fields/doc_link/field.php @@ -1,7 +1,7 @@ assign('field_id', $field_id); - $AVE_Template->assign('field_value', $field_value); + $AVE_Template->assign('field_value', $clean_field_value); $tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl); - + return $AVE_Template->fetch($tpl_file); break; case 'doc': - $field_value = clean_php($field_value); - $field_param = explode('|', $field_value); - $field_param[1] = empty($field_param[1]) ? $field_param[0] : $field_param[1]; - - if ($tpl_empty) - { - $field_value = ' ' . $field_param[1] . ''; - } - else - { - $field_value = preg_replace_callback( - '/\[tag:parametr:(\d+)\]/i', - function($data) use($field_param) - { - return $field_param[(int)$data[1]]; - }, - $tpl - ); - } - - $res = $field_value; - break; - case 'req': $field_value = clean_php($field_value); + $field_param = explode('|', $field_value); + + $doc_id = 0; - if (empty($field_param[1])) - $field_param[1] = $field_param[0]; + if (preg_match('/id=([0-9]+)/i', $field_param[0], $matches)) { + $doc_id = (int)$matches[1]; + } + + $url_href = ''; + $anchor = ''; + $title = ''; + $alias = ''; + $user_anchor = isset($field_param[1]) ? $field_param[1] : ''; - if (isset($document_fields[$rubric_id]['tpl_req_empty'])) + if ($doc_id > 0) { - $field_value = " " . $field_param[1] . ""; + $document_data = get_document($doc_id); + + if ($document_data) + { + $alias = isset($document_data['document_alias']) ? $document_data['document_alias'] : ''; + $title = isset($document_data['document_title']) ? $document_data['document_title'] : ''; + + if ($alias === '/') { + $url_href = '/'; + } else { + + $url_href = '/' . trim($alias, '/'); + if (defined('URL_SUFF') && URL_SUFF) { + $url_href .= URL_SUFF; + } + } + + if (!empty($user_anchor) && $user_anchor !== $field_param[0]) { + $anchor = $user_anchor; + } elseif (!empty($title)) { + $anchor = $title; + } elseif ($alias === '/') { + $anchor = 'Главная'; + } else { + $anchor = ''; + } + } + } + + if ($doc_id === 0) { + $url_href = $field_param[0]; + $anchor = isset($field_param[1]) ? $field_param[1] : $field_param[0]; + + $url_href = str_replace('//', '/', $url_href); + $url_href = str_replace('https:/', 'https://', $url_href); + $url_href = str_replace('http:/', 'http://', $url_href); + } + + $action_is_req = ($action === 'req'); + $use_inline_tpl = ($action_is_req && isset($document_fields[$rubric_id]['tpl_req_empty'])) || (!$action_is_req && $tpl_empty); + + if ($use_inline_tpl) + { + $field_value = ' ' . $anchor . ''; } else { $field_value = preg_replace_callback( '/\[tag:parametr:(\d+)\]/i', - function($data) use($field_param) + function($data) use($anchor, $url_href) { - return $field_param[(int)$data[1]]; + return $anchor; }, $tpl ); } $maxlength = null; - $res = $field_value; + + return $res; + break; case 'api' :