1

カスタムMagentoストアでbxSliderプラグイン(jcarouselに似たスライダー)を使用しています。

スライダーはdocumet.ready()(head htmlセクション内)で次のようにインスタンス化されます。

jQuery('#slider2').bxSlider({
    pause: 4000,
    auto: true,
    autoControls: true,
    displaySlideQty: 4,
    moveSlideQty: 1
});

スライダーのアイテム数が5未満の場合、phpコードでauto属性をfalseに変更したいと思います。次のように変更しようとしました。

<?php
    // slider items count
    $prom_count = $this->getPromotionalProducts()->count();;
?>
<?php if($prom_count<5): ?>
    <script>
        $("#slider2").attr('auto','false');    
    </script>
<?php endif; ?> 

しかし、それは機能しないので、domreadyでインスタンス化されたオブジェクトの属性がこの方法で変更できるかどうかはわかりません。誰かが助けることができますか?

4

3 に答える 3

1

このためのAPI関数はないようです。reloadShow() を使用すると、設定が再度読み込まれる可能性があります。それでも解決しない場合は、ソース コードを読む必要があります。

于 2011-11-07T09:11:16.373 に答える
1

jQuery ライブラリのattr-method は、HTML 要素の属性を処理します。

<img src="..." alt="...">

この場合、srcaltは「属性」です。

bxSlider は、-function に配列を与えることによって構成されbxSliderます。関数に渡された後、この配列を変更することはできません。

自動表示を切り替えるためにできることは、bxSlider の -function を使用することですstopShow()。おそらくこれを行うには、作成した bxSlider-instance を保存する必要があります。

var slider = jQuery('#slider2').bxSlider({
   ...
});

したがって、このオブジェクトで関数を呼び出すことができます。

slider.stopShow();

(あなたが提案したように)PHPとJavaScriptを混在させてこれを行うことは見苦しく、避けるべきです。

代わりに、JavaScript のみのソリューションを使用する必要があります。

var slider = jQuery('#slider2').bxSlider({
   auto: true,
   ...
});
if (slider.getSlideCount() < 5){
  slider.stopShow();
}

getSlideCount()スライドの数を返すことに注意してください。これは、ギャラリー内の画像の数であるとは限りません! 一度に表示されるスライドの数は、-属性で設定できますdisplaySlideQty。ただし、デフォルトは 1 です。


startShowおよび - 関数が機能しない原因となるバグがあるようstopShowです: https://github.com/wandoledzep/bxslider/pull/43

汚い回避策として、次のようなことができます。

<?php
    echo "<script type=\"text/javascript\">
        jQuery('#slider2').bxSlider({
            pause: 4000,
            autoControls: true,
            displaySlideQty: 4,";
    if($prom_count >= 5) echo "auto: true,";
    echo "moveSlideQty: 1
        });
    </script>";
?>
于 2011-11-07T09:19:39.573 に答える
0

autoこれにより、プラグインの auto オプションではなく、要素自体に属性が設定されます。プラグインをインスタンス化した後にオプションを変更する機能がプラグインにあるようには見えませんが、ざっと見ただけです。

auto最初にphpコードを入れてプラグインを実行すると、正しい値を設定できませんか?

于 2011-11-07T09:11:54.887 に答える