J'ai trouvé une référence opaque à une <hint/>
balise dans les system.xml
fichiers. Quel est le problème avec cette balise? Son utilisation est-elle documentée quelque part?
J'ai trouvé une référence opaque à une <hint/>
balise dans les system.xml
fichiers. Quel est le problème avec cette balise? Son utilisation est-elle documentée quelque part?
Réponses:
Je ne suis pas sûr d'EE, mais dans CE, il s'agit d'une balise résiduelle d'un système d'aide jamais terminé. L'intention semble avoir été de donner à chaque champ de formulaire dans la section Configuration du système un petit "conseil" ou un texte d'aide.
Le texte d'aide est ajouté lors de la création de l'élément de champ
#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),
));
Cette première ligne lit la valeur d'un <hint/>
in system.xml
.
Ensuite, lorsque Magento rend le champ au format HTML, la dernière chose qu'il fait est d'ajouter le conseil dans un div imbriqué.
#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>';
Enfin, il y a un petit peu de javascript qui est appelé lors du chargement d'une page d'administration.
#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()
});
});
}
Ce javascript configure les gestionnaires d'événements de telle sorte que le fait d'entrer ou de sortir du texte d'aide le fera apparaître. L'intention étant cette "indication" aiderait les utilisateurs à comprendre ce que fait chaque champ.
Le problème? Le HTML / CSS sur le backend fait de l'indice td
un pixel de large. Cela empêche quiconque de survoler l'astuce pour l'afficher. Essayez d'ajouter un indice à la configuration de votre champ, puis exécutez ce qui suit à partir de la console javascript de votre navigateur
$$('.hint').each(function(el){
el.down().show();
});
Vous verrez quelque chose comme ça.
(Le texte est un indice ).
J'ai toujours noté cela comme l'un de ces "meilleurs plans" qui a été abandonné après le lancement de Magento.