Was ist der Deal mit dem "Hinweis" -Tag in system.xml?

12

Ich habe einen undurchsichtigen Verweis auf ein <hint/>Tag in system.xmlDateien gefunden. Was ist der Deal mit diesem Tag? Ist seine Verwendung irgendwo dokumentiert?

Alan Storm
quelle
Hast du ein Beispiel? Ich konnte keinen in Mage 1.8 oder 1.9 finden
David Manners
@DavidManners Siehe unten - dies war eher eine "Ich möchte Magento dokumentieren" -Frage als eine Antwort auf eine Frage, die mir jemand getwittert hat, als eine "Ich habe ein Problem" -Frage. Das Wissen und der Kontext anderer Menschen sind jedoch mehr als willkommen.
Alan Storm
Ah, ich verstehe dich. Ob es tatsächlich von Modulen verwendet oder versteckt wird?
David Manners
@DavidManners Es ist versteckt und die Art und Weise, wie die Systemkonfiguration eingerichtet ist, funktioniert nicht einmal. Ich denke , dass die Hinweisfunktion des Feld-Renderings auf anderen Formularen (Produktbearbeitung usw.) funktionieren könnte, aber das wird nicht von system.xml gesteuert. Ebenfalls relevant ist, dass Marius 'Modulersteller eine eigene Hilfe- / Hinweisfunktion hat. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Antworten:

16

Ich bin mir bei EE nicht sicher, aber in CE ist dies ein Überbleibsel eines nie abgeschlossenen Hilfesystems. Die Absicht scheint gewesen zu sein, jedem Formularfeld im Abschnitt Systemkonfiguration einen kleinen "Hinweis" oder Hilfetext zu geben.

Der Hilfetext wird hinzugefügt, wenn das Feldelement erstellt wird

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

Diese erste Zeile liest den Wert von a <hint/>in system.xml.

Wenn Magento das Feld als HTML rendert, wird als letztes der Hinweis in ein verschachteltes Div eingefügt.

#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>';

Schließlich gibt es ein kleines bisschen Javascript, das beim Laden einer Admin-Seite aufgerufen wird.

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

Dieses Javascript richtet Ereignishandler so ein, dass sie angezeigt werden, wenn der Hilfetext mit der Maus ein- oder ausgeblendet wird. Die Absicht, dieser "Hinweis" zu sein, würde den Benutzern helfen, zu verstehen, was jedes Feld tut.

Das Problem? Das HTML / CSS im Backend macht den Hinweis tdein Pixel breit. Dies verhindert, dass jemand mit der Maus über den Hinweis fährt, um ihn anzuzeigen. Versuchen Sie, Ihrer Feldkonfiguration einen Hinweis hinzuzufügen, und führen Sie dann die folgenden Schritte in der Javascript-Konsole Ihres Browsers aus

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

Sie werden so etwas sehen.

Bildbeschreibung hier eingeben

( Dies ist ein Hinweistext ).

Ich habe dies immer als eines der "Best Laid Plans" bezeichnet, die nach dem Start von Magento fallengelassen wurden.

Alan Storm
quelle
6
Wunderschönes Stück Magento-Archäologie - ich liebe es!
Kalenjordan
1
Beeindruckt davon bin ich.
Philwinkle
Beachten Sie, dass Sie das Magento-Admin-Design überschreiben können, um standardmäßig Hinweise anzuzeigen. Ich habe es auch geändert, um die Schriftart der Textbox zu Consolas zu ändern, um die Lesbarkeit zu
verbessern