Що стосується тегу "Підказка" у system.xml?


12

Я знайшов непрозоре посилання на <hint/>тег у system.xmlфайлах. Яка угода з цим тегом? Чи документоване його використання де-небудь?


У вас є приклад. Я не зміг знайти його у Мазі 1.8 чи 1.9
Девід Маннерс

@DavidManners Дивіться нижче - це було скоріше питання "Я хочу документувати Magento" у відповідь на запитання, який хтось написав мені, ніж на питання "У мене проблема". Знання та контекст інших людей більш ніж вітаються.
Алан Шторм

Ах, я розумію. Хоча які-небудь модулі насправді використовують його чи приховано?
Девід Маннерс

@DavidManners Це приховано, і спосіб налаштування HTML-системи конфігурації навіть не працює. Я думаю, що функція натяку на поле може працювати в інших формах (редагування продукту тощо), але це не керується system.xml. Також важливо, що у розробника модуля Marius є своя функція допомоги / підказки. alanstorm.com/magento_ultimate_module_creator_review
Алан Шторм

Відповіді:


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/>в 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
Прекрасний шматочок археології Магенто - люби!
kalenjordan

1
Вражений цим, я.
philwinkle

Зауважте, що ви можете змінити тему адміністратора Magento, щоб показувати підказки за замовчуванням. Я також змінив його, щоб змінити шрифт текстового поля на "Консолі" для кращої розбірливості тощо.
1616
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.