O co chodzi z tagiem „Podpowiedź” w pliku system.xml?

12

<hint/>W system.xmlplikach znalazłem nieprzejrzyste odniesienie do znacznika . O co chodzi z tym tagiem? Czy jego stosowanie jest gdziekolwiek udokumentowane?

Alan Storm
źródło
Masz przykład? Nie mogłem go znaleźć w Maga 1.8 lub 1.9
David Manners
@DavidManners Zobacz poniżej - było to bardziej pytanie „Chcę dokumentować Magento” w odpowiedzi na pytanie, które ktoś napisał na Twitterze, niż pytanie „Mam problem”. Wiedza i kontekst innych ludzi są jednak mile widziane.
Alan Storm,
Ach, rozumiem cię. Chociaż jakieś moduły faktycznie go używają lub są ukryte?
David Manners,
@DavidManners Jest ukryty, a sposób konfiguracji systemu HTML w konfiguracji nie działa. Myślę, że funkcja podpowiedzi renderowania w polu może działać w innych formularzach (edycja produktu itp.), Ale nie jest obsługiwana przez system.xml. Również istotne, twórca modułu Mariusa ma własną funkcję pomocy / podpowiedzi. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Odpowiedzi:

16

Nie jestem pewien co do EE, ale w CE jest to szczątkowa metka z nigdy nieukończonego systemu pomocy. Wydaje się, że celem było nadanie każdemu polu formularza w sekcji konfiguracji systemu małej „podpowiedzi” lub tekstu pomocy.

Tekst pomocy jest dodawany podczas tworzenia elementu pola

#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),
));

Że pierwsza linia odczytuje wartość <hint/>IN system.xml.

Następnie, gdy Magento renderuje pole jako HTML, ostatnią rzeczą, jaką robi, jest dodanie podpowiedzi w zagnieżdżonym 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>';

Na koniec jest trochę kodu JavaScript, który jest wywoływany podczas ładowania strony administratora.

#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()
        });
    });
}

W tym javascript konfiguruje się programy obsługi zdarzeń, dzięki którym pojawia się przesunięcie do lub z tekstu pomocy. Celem tego „podpowiedzi” byłoby pomóc użytkownikom zrozumieć, co robi każde pole.

Problem? HTML / CSS na backendzie sprawia, że ​​podpowiedź tdma szerokość jednego piksela. Dzięki temu nikt nie przesunie myszy nad wskazówką, aby ją wyświetlić. Spróbuj dodać podpowiedź do konfiguracji pola, a następnie uruchom następujące polecenie z konsoli javascript w przeglądarce

$$('.hint').each(function(el){
    el.down().show();
});

Zobaczysz coś takiego.

wprowadź opis zdjęcia tutaj

( To jest podpowiedź ).

Zawsze opisywałem to jako jedną z tych „najlepszych rozłożonych planów”, które zostały porzucone po uruchomieniu Magento.

Alan Storm
źródło
6
Piękny kawałek archeologii Magento - uwielbiam to!
kalenjordan
1
Jestem pod wrażeniem tego.
philwinkle
Pamiętaj, że możesz zastąpić motyw administratora Magento, aby domyślnie wyświetlać podpowiedzi. Zmodyfikowałem go również, aby zmienić czcionkę pola tekstowego na Consolas dla lepszej czytelności itp.
thdoan