system.xml의“힌트”태그와의 거래는 무엇입니까?


12

파일 에서 <hint/>태그에 대한 불투명 한 참조를 찾았습니다 system.xml. 이 태그와의 거래는 무엇입니까? 어디에서나 사용합니까?


예를 들어 봤습니다. 나는 마법사 1.8 또는 1.9에서 하나를 찾을 수 없습니다
David Manners

@DavidManners 아래를 참조하십시오. 이것은 "문제가 있습니다"라는 질문보다 누군가가 트윗 한 질문에 대한 답변으로 "Magento를 문서화하고 싶습니다"라는 질문이었습니다. 다른 사람들의 지식과 맥락은 환영하는 것 이상입니다.
Alan Storm

아, 알겠다 실제로 모듈을 사용하거나 숨겨둔 모듈이 있습니까?
David Manners 2014 년

@DavidManners 숨겨져 있으며 시스템 구성 HTML이 설정되는 방식으로는 작동하지 않습니다. 내가 생각하는 다른 형태의 필드 렌더링 힘 작업 (제품 편집 등)의 힌트 기능을하지만이 된 system.xml에 의해 구동 아닙니다. 또한 Marius의 모듈 제작자는 자체 도움말 / 힌트 기능이 있습니다. alanstorm.com/magento_ultimate_module_creator_review
Alan Storm

답변:


16

나는 EE에 대해 확신하지 못하지만 CE에서는 결코 완성되지 않은 도움말 시스템의 흔적 태그입니다. 의도는 시스템 구성 섹션의 각 양식 필드에 작은 "힌트"또는 도움말 텍스트를 제공하는 것으로 보입니다.

필드 요소가 작성 될 때 도움말 텍스트가 추가됩니다.

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

첫 줄은 <hint/>in 값을 읽습니다 system.xml.

다음으로 Magento가 필드를 HTML로 렌더링 할 때 마지막으로하는 일은 중첩 된 div에 힌트를 추가하는 것입니다.

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

마지막으로 관리자 페이지로드에서 호출되는 약간의 자바 스크립트가 있습니다.

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

이 자바 스크립트는 도움말 텍스트 안팎으로 마우스를 가져 가서 이벤트 핸들러를 표시하도록 이벤트 핸들러를 설정합니다. 이 "힌트"의도는 사용자가 각 필드의 기능을 이해하는 데 도움이됩니다.

문제? 백엔드의 HTML / CSS는 힌트 td를 단일 픽셀 너비로 만듭니다. 이를 통해 힌트를 보는 사람이 힌트를 볼 수 없습니다. 필드 구성에 힌트를 추가 한 다음 브라우저의 자바 스크립트 콘솔에서 다음을 실행하십시오.

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

이와 같은 것을 보게 될 것입니다.

여기에 이미지 설명을 입력하십시오

( 이것은 힌트 텍스트입니다).

나는 항상 이것을 Magento가 출시 된 후 내려진 "최고의 계획"중 하나로 꼽았습니다.


6
마 젠토 고고학의 아름다운 비트-그것을 사랑하십시오!
kalenjordan

1
이것에 감동했습니다.
philwinkle

Magento 관리자 테마재정 의하여 힌트를 기본적으로 표시 할 수 있습니다 . 가독성 향상을 위해 텍스트 상자 글꼴을 Consolas로 변경하도록 수정했습니다.
thdoan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.