Я нашел непрозрачную ссылку на <hint/>
тег в system.xml
файлах. Что за дело с этим тегом? Задокументировано ли его использование где-либо?
Я нашел непрозрачную ссылку на <hint/>
тег в system.xml
файлах. Что за дело с этим тегом? Задокументировано ли его использование где-либо?
Ответы:
Я не уверен насчет EE, но в CE это рудиментарный тег из никогда не завершенной справочной системы. Представляется, что целью было дать каждому полю формы в разделе «Конфигурация системы» небольшую «подсказку» или текст справки.
Текст справки добавляется при создании элемента поля
#File: app/code/core/Mage/Adminhtml/Block/System/Config/Form.php
$hint = (string)$element->hint ? Mage::helper($helperName)->__((string)$element->hint) : '';
//...
$field = $fieldset->addField($id, $fieldType, array(
'name' => $name,
'label' => $label,
'comment' => $comment,
'tooltip' => $tooltip,
'hint' => $hint,
'value' => $data,
'inherit' => $inherit,
'class' => $element->frontend_class . $sharedClass . $requiresClass,
'field_config' => $element,
'scope' => $this->getScope(),
'scope_id' => $this->getScopeId(),
'scope_label' => $this->getScopeLabel($element),
'can_use_default_value' => $this->canUseDefaultValue((int)$element->show_in_default),
'can_use_website_value' => $this->canUseWebsiteValue((int)$element->show_in_website),
));
Эта первая строка читает значение <hint/>
в system.xml
.
Затем, когда Magento отображает поле как HTML, последнее, что он делает, это добавляет подсказку во вложенный div.
#File: app/code/core/Mage/Adminhtml/Block/System/Config/Form/Field.php
$html.= '<td class="">';
if ($element->getHint()) {
$html.= '<div class="hint" >';
$html.= '<div style="display: none;">' . $element->getHint() . '</div>';
$html.= '</div>';
}
$html.= '</td>';
Наконец, есть небольшой кусочек JavaScript, который вызывается при загрузке страницы администратора.
#File: app/design/adminhtml/default/default/template/system/config/js.phtml
function showHint() {
$$('.hint').each(function(element){
Event.observe(element, 'mouseover', function(){
element.down().show()
});
Event.observe(element, 'mouseout', function(){
element.down().hide()
});
});
}
Этот javascript настраивает обработчики событий таким образом, чтобы при отображении или вставке текста справки он отображался. Эта «подсказка» поможет пользователям понять, что делает каждое поле.
Проблема? HTML / CSS на серверной части делает подсказку td
шириной в один пиксель. Это препятствует тому, чтобы кто-нибудь намекал на подсказку, чтобы просмотреть его. Попробуйте добавить подсказку к вашей конфигурации поля, а затем выполните следующую команду из консоли javascript вашего браузера.
$$('.hint').each(function(el){
el.down().show();
});
Вы увидите что-то подобное.
( Это текст подсказки ).
Я всегда считал это одним из тех «Лучших планов», который упал после запуска Magento.