Thỏa thuận với Thẻ của Hint thế nào trong system.xml?


12

Tôi đã tìm thấy tài liệu tham khảo mờ cho một <hint/>thẻ trong system.xmlcác tập tin. Thỏa thuận với thẻ này là gì? Là sử dụng của nó được ghi nhận ở bất cứ đâu?


Bạn có một ví dụ. Tôi không thể tìm thấy ai trong Mage 1.8 hoặc 1.9
David Manners

@DavidManners Xem bên dưới - đây là câu hỏi "Tôi muốn ghi lại Magento" để trả lời câu hỏi mà ai đó đã tweet cho tôi hơn là câu hỏi "Tôi có vấn đề". Kiến thức và bối cảnh của người khác được chào đón nhiều hơn mặc dù.
Alan Storm

À tôi hiểu bạn Mặc dù có bất kỳ mô-đun thực sự sử dụng nó hoặc nó ẩn đi?
David Manners

@DavidManners Nó bị ẩn đi và cách HTML cấu hình hệ thống được thiết lập, nó thậm chí không hoạt động. Tôi nghĩ rằng tính năng gợi ý của kết xuất trường có thể hoạt động trên các biểu mẫu khác (chỉnh sửa sản phẩm, v.v.), nhưng điều đó không được điều khiển bởi system.xml. Cũng liên quan, người tạo mô-đun của Marius có tính năng trợ giúp / gợi ý riêng. alanstorm.com/magento_ultimate_module_creator_Vview
Alan Storm

Câu trả lời:


16

Tôi không chắc chắn về EE, nhưng trong CE đây là thẻ tiền đình từ một hệ thống trợ giúp chưa bao giờ hoàn thành. Mục đích dường như là cung cấp cho mỗi trường mẫu trong phần cấu hình hệ thống một "gợi ý" nhỏ hoặc văn bản trợ giúp.

Văn bản trợ giúp được thêm khi phần tử trường được tạo

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

Dòng đầu tiên đọc giá trị của một <hint/>trong system.xml.

Tiếp theo, khi Magento biểu diễn trường dưới dạng HTML, điều cuối cùng nó làm là thêm gợi ý trong một div lồng nhau.

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

Cuối cùng, có một chút javascript được gọi khi tải trang quản trị.

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

Javascript này thiết lập các trình xử lý sự kiện sao cho nhập vào hoặc ra khỏi văn bản trợ giúp sẽ làm cho nó xuất hiện. Mục đích là "gợi ý" này sẽ giúp người dùng hiểu từng lĩnh vực làm gì.

Vấn đề? HTML / CSS trên phụ trợ làm cho gợi ý rộng tdmột pixel. Điều này ngăn chặn bất cứ ai di chuyển qua gợi ý để xem nó. Hãy thử thêm một gợi ý vào cấu hình trường của bạn và sau đó chạy phần sau từ bảng điều khiển javascript của trình duyệt của bạn

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

Bạn sẽ thấy một cái gì đó như thế này.

nhập mô tả hình ảnh ở đây

( Đây là một văn bản gợi ý ).

Tôi đã luôn nhấn mạnh điều này như là một trong những "Kế hoạch được trả tiền tốt nhất" đã bị loại bỏ sau khi Magento ra mắt.


6
Một chút tuyệt đẹp của khảo cổ học Magento - thích nó!
kalenjordan

1
Tôi rất ấn tượng với điều này.
philwinkle

Lưu ý rằng bạn có thể ghi đè chủ đề quản trị Magento để hiển thị gợi ý theo mặc định. Tôi cũng đã sửa đổi nó để thay đổi phông chữ của hộp văn bản thành Consolas để dễ đọc hơn, v.v.
thdoan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.