如何处理system.xml中的“提示”标签?


12

<hint/>system.xml文件中发现对标签的不透明引用。这个标签怎么办?它的使用记录在任何地方吗?


你有一个例子。我在法师1.8或1.9中找不到一个
David Manners 2014年

@DavidManners参见下文-与“我有问题”问题相比,这是对有人发给我的问题的“我想记录Magento”问题。但是,其他人的知识和背景绝对值得欢迎。
艾伦·斯托姆

啊,我懂了。虽然有模块实际使用它还是将其隐藏?
David Manners 2014年

@DavidManners它被隐藏了,并且设置系统配置HTML的方式甚至无法工作。我认为字段呈现的提示功能可能适用于其他形式(产品编辑等),但这不是由system.xml驱动的。同样重要的是,Marius的模块创建者具有自己的帮助/提示功能。alanstorm.com/magento_ultimate_module_creator_review
艾伦·斯托姆

Answers:


16

我对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/>in中的值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推出后就被抛弃的“最佳计划”之一。


6
美丽的Magento考古学-喜欢它!
kalenjordan 2014年

1
我对此印象深刻。
philwinkle

请注意,默认情况下,您可以覆盖Magento管理主题以显示提示。我还就修改,以改变文本框字体索拉更好的可读性等
thdoan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.