2017-06-29 14 views
0

私は、チャンクとスニペットで構成されるModXアプリケーションの検索フォームを作成しています。私が達成しようとしているのは、検索ボックスに入力されたものをjavascript変数に渡してからスニペットに渡すことですが、スニペットはリテラルテキストを受け取ります。あれを呼べ。JavaScript変数をスニペットに渡す

私が試みていることがModXで可能か、別のアプローチをとる必要があるかどうかはわかりませんが、洞察力を提供できる人にとっては大変感謝しています。

チャンク:

<script> 
$('.search-btn').click(function() { 
    var search = $('.search-entry').val(); 
    [[showSearchResults? &q=`search`]] 
}); 
</script> 

スニペット:

<?php 
$search = $modx->getOption('q', $scriptProperties); 
echo $search; // this always prints "search" 
?> 

答えて

1

私はこのコードは理にかなっていることを疑う:

<script> 
    $('.search-btn').click(function() { 
    var search = $('.search-entry').val(); 
    [[showSearchResults? &q=`search`]] 
    }); 
</script> 

スニペットコールは、スニペットの実行結果を返します。 w i番目のparam あなたのケースでは、文字列と常に等しいQ「検索」、そして最後に、あなたのページでは、このようなものがあります:あなたは、単純なトリックを使用することができ、あなたのタスクを達成するために

<script> 
    $('.search-btn').click(function() { 
    var search = $('.search-entry').val(); 
    'search' // assuming your snippet just returns what has been passed to it. 
    }); 
</script> 

を。

[[!yourSnippet? &yourVar=`[[!#POST.yourVar]]` ]] // or GET 

このスニペットコールは、サーバー上のurl/test /を介してアクセスできるページにあります。だから、今あなたは自分のスニペットがある/テスト/ページにAJAXを使用して、あなたの検索フォームから収集されたパラメータを送信する必要があります。

var yourVar = $('.search-entry').val(); 
$.ajax({ 
    type: "POST", 
    url: "/test/", 
    data: {yourVar: yourVar}, 
    success: success, 
    dataType: "html" 
}); 

はそれが役に立てば幸い:)

PSあなたがしたい場合は検索リソースのコンテンツとテレビのコンテンツ、私は非常にSimpleSearchと呼ばれる追加をお勧めします。

+0

@curveballの提案に感謝します。私は興味があります、[[!#POST]]はPOST変数を拾うことを意味していますか?もし私がしたいのであれば、[[!#GET]]と同じことをすることができますか? – hRdCoder

+0

はい、投稿変数を取得して実際のスクリプト/スニペットに転送することを意味します。確かに、GETでもうまくいくはずです。 [[!#GET.yourVar]]を含むスニペットがあるURLにurl-parameterを追加するようにチェックできます。 – curveball

+0

コアに含まれていない '[[!#POST]]'タグや[[!#GET]]タグを使用するには、FastFieldまたはpdoToolsがインストールされている必要があります。 –