Ho trovato un riferimento opaco a un <hint/>
tag nei system.xml
file. Qual è il problema con questo tag? Il suo uso è documentato ovunque?
Ho trovato un riferimento opaco a un <hint/>
tag nei system.xml
file. Qual è il problema con questo tag? Il suo uso è documentato ovunque?
Risposte:
Non sono sicuro di EE, ma in CE questo è un tag rudimentale di un sistema di aiuto mai completato. L'intento sembra essere stato quello di dare un piccolo "suggerimento" a ciascun campo del modulo nella sezione Configurazione di sistema, o testo di aiuto.
Il testo della guida viene aggiunto quando viene creato l'elemento campo
#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),
));
Quella prima riga legge il valore di un <hint/>
in system.xml
.
Successivamente, quando Magento esegue il rendering del campo come HTML, l'ultima cosa che fa è aggiungere il suggerimento in un div nidificato.
#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>';
Infine, c'è un po 'di javascript che viene chiamato al caricamento della pagina di amministrazione.
#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()
});
});
}
Questo javascript imposta i gestori di eventi in modo tale da far apparire il mouse all'interno o all'esterno del testo di aiuto. L'intento di questo "suggerimento" aiuterebbe gli utenti a capire cosa fa ogni campo.
Il problema? L'HTML / CSS sul backend rende il suggerimento td
largo un singolo pixel. Questo impedisce a chiunque di passare il mouse sopra il suggerimento per visualizzarlo. Prova ad aggiungere un suggerimento alla configurazione del tuo campo e quindi esegui quanto segue dalla console javascript del tuo browser
$$('.hint').each(function(el){
el.down().show();
});
Vedrai qualcosa del genere.
(il testo Questo è un suggerimento ).
L'ho sempre definito come una di quelle cose "I migliori piani previsti" che sono state abbandonate una volta lanciato Magento.