System.xml dosyasındaki “İpucu” Etiketi ile Anlaşma Nedir?


12

Dosyalardaki bir <hint/>etikete opak referans buldum system.xml. Bu etiketle anlaşma nedir? Kullanımı herhangi bir yerde belgelenmiş mi?


Bir örnek var mı? Mage 1.8 veya 1.9'da bir tane bulamadım
David Manners

@DavidManners Aşağıya bakın - bu, birisinin bana tweet attığı bir soruya "bir sorunum var" sorusundan daha fazla "Magento'yu belgelemek istiyorum" sorusuydu. Diğer insanların bilgi ve bağlamı da hoş karşılanır.
Alan Storm

Ah seni anlıyorum. Gerçi herhangi bir modül onu gerçekten kullanıyor mu yoksa gizlenmiş mi?
David Manners

@DavidManners Gizlidir ve sistem yapılandırma HTML'sinin kurulum şekli çalışmaz. Ben düşünüyorum diğer formları saha render kudreti çalışmaları (ürün düzenleme, vs) ipucu özelliğini, ama bu System.XML ile tahrik değil. Ayrıca, Marius'un modül yaratıcısının kendi yardım / ipucu özelliği vardır. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

Yanıtlar:


16

Enerji Verimliliği konusunda emin değilim, ancak CE'de bu hiç tamamlanmamış bir yardım sisteminden alınan bir etiket. Amaç, Sistem yapılandırması bölümündeki her form alanına küçük bir "ipucu" veya yardım metni vermek gibi görünüyor.

Alan metni oluşturulduğunda yardım metni eklenir

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

Bu ilk satır bir <hint/>in değerini okur system.xml.

Daha sonra, Magento alanı HTML olarak oluşturduğunda, yaptığı son şey ipucunu iç içe bir div'a eklemek.

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

Son olarak, yönetici sayfası yüklemesinde çağrılan küçük bir javascript var.

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

Bu javascript, olay işleyicilerini yardım metninin içine veya dışına farenin görünmesini sağlayacak şekilde ayarlar. Bu "ipucu" olma amacı, kullanıcıların her alanın ne yaptığını anlamalarına yardımcı olur.

Sorun? Arka uçtaki HTML / CSS ipucunu tdtek bir piksel genişliğinde yapar. Bu, ipucunun üzerinde farenin görmesini engeller. Alan yapılandırmanıza bir ipucu eklemeyi ve ardından tarayıcınızın javascript konsolundan aşağıdakileri çalıştırmayı deneyin

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

Böyle bir şey göreceksiniz.

resim açıklamasını buraya girin

( Bu bir ipucu metnidir).

Bunu her zaman Magento piyasaya sürüldükten sonra atılan "En İyi İş Planları" ndan biri olarak ilan ettim.


6
Magento arkeolojisinin güzel parçası - love it!
kalenjordan

1
Bu beni çok etkiledi.
philwinkle

Not ki Magento yönetici tema geçersiz varsayılan olarak ipuçlarını göstermek için. Ayrıca daha iyi okunabilirlik, vb için metin kutusu yazı tipini Consolas olarak değiştirmek için değiştirdim
thdoan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.