0

私はオーチャード CMS の初心者で、コンテンツに投票機能を追加する必要があります。Contib.Vote および Contrib.Review モジュールをインストールしました。その後、レビュー パーツをページ コンテンツ タイプに追加しました。また、私はレシピを実行しました。一見するとすべて問題ありませんが、レビュー用のリンクは # 記号で同じページを参照しており、クリックしても何も起こりません。モジュールが動作しないか、正しく動作しないようです。私の問題を助けてください。

アップデート。こんにちはdevqonとあなたの助けに感謝します. あなたの答えは私にとって本当に役に立ちました。あなたのアドバイスによると、レビュー パーツ ビュー ファイル (Parts_Reviews.cshtml) 内の JavaScript を調べていました。テストのために、ソースコードを少し変更しました。

@using (Script.Foot())
{
    <script type="text/javascript">
    //<![CDATA[
    (function () {
        var numberOfReviewsToShowByDefault = 5;
        var $showAllReviewsLink = $('#showAllReviewsLink');
        var $deleteReviewConfirmationDialogDiv = $('#deleteReviewConfirmationDialogDiv');


            $deleteReviewConfirmationDialogDiv.dialog({ autoOpen: false, modal: true, resizable: false });
            $('#deleteReviewLink').click(function () {
                $('#reviewId').val($(this).attr("data-review-id"));
                ShowDeleteReviewDialog();
                return false;
            });
            $('#showReviewFormLink').click(function () {
                $('#createReviewLinkDiv').slideToggle('fast', function () { $('#reviewFormDiv').slideToggle('fast'); });
                return false;
            });
            $('#cancelCreateReviewLink').click(function () {
                $('#reviewFormDiv').slideToggle('fast', function() { $('#createReviewLinkDiv').slideToggle('fast'); });
                return false;
            });
            $('#deleteReviewForm').submit(function () {
                $('input[type=submit]', this).attr('disabled', 'disabled');
            });
            $('#cancelDeleteReviewButton').click(function () {
                CloseConfirmationDialogDiv();
                return false;
            });
            var rowCount = $('#reviewsList li').length;
            if (rowCount > numberOfReviewsToShowByDefault) {
                SetupToggle();
            }

            if (document.location.hash === '#Reviews') {
                var topPx = $('#reviews-heading').position().top;
                $('body,html').animate({ scrollTop: topPx }, 'slow');
            }

            if ($("#comment").length) {
                var characterCountUpdater = new CharacterCountUpdater($("#comment"), $("#commentCharactersLeft"));
                setInterval(function() { characterCountUpdater.UpdateCharacterCount(); }, 100);
                $("#comment").keypress(function() { characterCountUpdater.UpdateCharacterCount(); });

                if ($("#comment").val().length) {
                    $("#showReviewFormLink").trigger("click");
                }
            }
        
        function CharacterCountUpdater(commentBox, charactersLeftBox)
        {
            this.commentBox = commentBox;
            this.charactersLeftBox = charactersLeftBox;
            this.maxLength = commentBox.attr("maxlength");
            commentBox.removeAttr("maxlength");
            return this;
        }

レビュー用のフォームが表示されるようになりました。フォームは見栄えがよく、送信ボタンも機能し、文字カウンターも機能します。しかし、私はまだ評価を適用できません。星をクリックしても反応しません。そのため、送信操作が「レビューを送信するには、評価も送信する必要があります。」というエラーで終了します。Parts.Stars.NoAverage.cshtml 内の何かが機能しないように見えます。私を助けてください。

4

3 に答える 3

0

Firefox のコンソールに次のように表示されます: $(...).live は関数ではありません。Contrib.Stars.js ソース コード ファイルを指します。この関数は現在 jquery でサポートされていないため、すべての場所 api.jquery.com/on で .on() 関数に置き換えました。モジュールが正常に動作するようになりました。

于 2014-10-26T09:15:50.760 に答える
0

以下のサイトで私のコメントをチェックして、Orchard 1.8.1 で再び動作させることができた方法を確認してください。

オーチャード レビュー プロジェクト サイト

基本的には、Contrib.Stars.js ファイルの 3 つの異なる行を変更するだけで済みますが、.js ファイルを Review モジュールのさまざまなビューと共にカスタム テーマ ディレクトリにコピーして、すべてを上書きし、Review モジュールを強制的に編集した .js ファイルを使用します。

オンライン12& 13:

これを変える:

$(".stars-clear").live(
    "click",

これに:

$("body").on(
    "click", ".stars-clear",

オンライン44& 45:

これを変える:

.live(
    "mouseenter",

これに:

.mouseenter(

オンライン48& 49:

これを変える:

.live(
    "mouseleave",

これに:

.mouseleave(
于 2014-12-15T14:23:17.210 に答える
0

プロジェクトのサイトによると、これは既知の問題です: バージョン 1.7.2 から壊れています。

Parts_Reviews.cshtmlのコードを見ると、20 ~ 24 行目に次のように記述されています。

string showReviewUri = "#";
if (!Request.IsAuthenticated)
{
    showReviewUri = Url.Action("LogOn", "Account", new { area = "Orchard.Users", ReturnUrl = Context.Request.RawUrl });
}

そして29行目:

<div id="createReviewLinkDiv"><span id="createReviewLinkSpan">@noReviewsYetText<a id="showReviewFormLink" href="@showReviewUri">@reviewLinkText</a></span></div>

#したがって、要求が認証された (ログオンしている) ときにアンカーを配置できるようにすることを目的としていました。これは、おそらく JavaScript で処理されることを意味し、105 ~ 112 行で確認できます。

$('#showReviewFormLink').click(function () {
    $('#createReviewLinkDiv').slideToggle('fast', function () { $('#reviewFormDiv').slideToggle('fast'); });
    return false;
});
$('#cancelCreateReviewLink').click(function () {
    $('#reviewFormDiv').slideToggle('fast', function() { $('#createReviewLinkDiv').slideToggle('fast'); });
    return false;
});

このコードにより、レビューを書くためのフォームが表示されるはずなので、おそらくそこで何か問題が発生しています。この jQuery コードに何か問題があると、コンソールにエラーが表示される可能性があります。そのため、[最初にレビューを書く] リンクをクリックしてブラウザのコンソールを確認してください。

何をすべきかわからない場合は、エラーを提供してください。さらに掘り下げてみます。モジュールをダウンロードしていないので、ライブ フィードはありません。

于 2014-10-15T07:37:01.327 に答える