system.xmlの「ヒント」タグとは何ですか?


12

ファイル内の<hint/>タグへの不透明な参照が見つかりましたsystem.xml。このタグの対処法は何ですか?その使用はどこにも文書化されていますか?


例がありますか。メイジ1.8または1.9で見つけることができませんでした
デビッドマナー14年

@DavidManners以下を参照してください-これは、「問題があります」という質問よりも、誰かが私にツイートした質問に対する「Magentoを文書化したい」という質問でした。しかし、他の人々の知識とコンテキストは歓迎以上のものです。
アランストーム14年

ああ、わかった。モジュールは実際にそれを使用していますか、それとも隠されていますか?
デビッドマナーズ14年

@DavidMannersこれは隠されており、システム構成HTMLのセットアップ方法も機能しません。私が考えて、フィールドのヒント機能は、他の形態(製品編集など)上のかもしれない作業をレンダリングするが、そのSystem.Xmlのによって駆動されていません。また、関連性の高いMariusのモジュール作成者には、独自のヘルプ/ヒント機能があります。alanstorm.com/magento_ultimate_module_creator_review
アランストーム

回答:


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

最後に、管理ページのロード時に呼び出されるJavaScriptが少しあります。

#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は、ヘルプテキストの内外にマウスを置くと表示されるようにイベントハンドラーを設定します。この「ヒント」であるという意図は、ユーザーが各フィールドの機能を理解するのに役立ちます。

問題?バックエンドのHTML / CSSは、ヒントtdを1ピクセル幅にします。これにより、ヒントを表示するためにマウスをマウスで動かすことができなくなります。フィールド設定にヒントを追加してから、ブラウザのjavascriptコンソールから次を実行してみてください

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

このようなものが表示されます。

ここに画像の説明を入力してください

これはヒントテキストです)。

私はこれを、Magentoがローンチされてからドロップされた「ベストレイドプラン」の1つとして、常にこれを取り上げてきました。


6
美しいMagentoの考古学-それが大好き!
kalenjordan

1
これに感心しました。
philwinkle

デフォルトでヒントを表示するためにMagento管理テーマオーバーライドできることに注意してください。また、読みやすくするためにテキストボックスのフォントをConsolasに変更するように変更しました。
thdoan16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.