Qual è il problema con il tag "Suggerimento" in system.xml?


12

Ho trovato un riferimento opaco a un <hint/>tag nei system.xmlfile. Qual è il problema con questo tag? Il suo uso è documentato ovunque?


Hai un esempio. Non ne ho trovato uno nel Mage 1.8 o 1.9
— David Manners,

@DavidManners Vedi sotto - questa era una domanda più "Voglio documentare Magento" in risposta a una domanda che qualcuno mi ha twittato di una domanda "Ho un problema". La conoscenza e il contesto delle altre persone sono più che benvenuti.
— Alan Storm,

Ah, ti capisco. Anche se alcuni moduli lo usano effettivamente o sono nascosti?
— David Manners,

@DavidManners È nascosto e il modo in cui è configurato l'HTML di configurazione del sistema non funziona nemmeno. Penso che la funzione di suggerimento del rendering sul campo potrebbe funzionare su altri moduli (modifica del prodotto, ecc.), Ma non è guidato da system.xml. Anche rilevante, il creatore di moduli di Marius ha la sua funzione di aiuto / suggerimento. alanstorm.com/magento_ultimate_module_creator_review
— Alan Storm

Risposte:


16

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 tdlargo 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.

inserisci qui la descrizione dell'immagine

(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.


6
Splendido pezzo di archeologia del Magento: adoralo!
— Kalenjordan,

1
Sono impressionato da questo, lo sono.
— Filwinkle,

Si noti che è possibile ignorare il tema dell'amministratore di Magento per mostrare i suggerimenti per impostazione predefinita. L'ho anche modificato per cambiare il carattere della casella di testo in Consolas per una migliore leggibilità, ecc.
— thdoan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.