在Magento中加载产品图像的Bootstrap Lightbox

时间:2013-07-04 08:31:15

标签: javascript magento twitter-bootstrap magento-1.7

这个Magento商店是在Twitter的Bootstrap上开发的,我们试图实现jbutz的Bootstrap Lightbox而不是Bootstrap Modal。

我们用其他Bootstrap的js调用了Bootstrap Lightbox js: -

    <script src="<?php echo $this->getSkinUrl('js/jquery.js'); ?>"></script>

    <script src="<?php echo $this->getSkinUrl('js/google-code-prettify/prettify.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-transition.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-alert.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-modal.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-lightbox.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-dropdown.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-scrollspy.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-tab.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-tooltip.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-popover.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-button.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-collapse.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-carousel.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/bootstrap-typeahead.js'); ?>"></script>
    <script src="<?php echo $this->getSkinUrl('js/application.js'); ?>"></script>

我们用其他Bootstrap css调用了Bootstrap Lightbox css,如下所示: -

<action method="addCss"><stylesheet>css/bootstrap.css</stylesheet></action>
<action method="addCss"><stylesheet>css/bootstrap-responsive.css</stylesheet></action>
<action method="addCss"><stylesheet>css/bootstrap-lightbox.css</stylesheet></action>

所有文件都是在页面加载时调用的,并且可以访问。

template / catalog / product / view / media.phtml 中,我们使用以下标记: -

<a data-toggle="lightbox" href="#myGallery_<?php echo $_product->getId()?>" class="main-image">
    <?php echo $_helper->productAttribute($_product, $_img, 'image'); ?>
</a>

<div class="lightbox hide fade" id="myGallery_<?php echo $_product->getId()?>" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="lightbox-header">
        <a class="close" data-dismiss="lightbox">×</a>
        <h3><?php echo $_product->getName()?></h3>
    </div>
    <div class="lightbox-content">
        <img src="<?php echo $this->helper('catalog/image')->init($_product, 'image')->resize(600)?>" alt="<?php echo $this->htmlEscape($this->getImageLabel())?>" title="<?php echo $this->htmlEscape($this->getImageLabel())?>" />
    </div>
    <div class="lightbox-footer">
        <a href="#" class="btn" data-dismiss="lightbox">Close</a>
    </div>
</div>

然而,我不能为我的生活,在点击产品图片时触发灯箱,根本没有任何事情发生。即使将演示中的确切标记实现到Magento模板文件仍然不起作用 - 就好像js被正确调用/触发一样。您可以在jsfiddle上看到一个不起作用的示例。

有人能指出这个问题吗?

2 个答案:

答案 0 :(得分:0)

首先你的jsfiddle链接似乎不起作用,进一步看看http://jbutz.github.io/bootstrap-lightbox/让我知道灯箱是如何工作的。

您必须使用数据属性触发灯箱作为链接中的内联编码或通过javascript。

Magento有一个使用原型的内置灯箱,所以尽量使用你的控制台查看你的JS文件是否正确加载以及是否有任何错误或冲突。

似乎lightbox依赖于bootstrap.min.js 尝试在加载灯箱脚本之前加载此脚本。

答案 1 :(得分:0)

转到app/frontend/your_theme/default/layout/page.xml(或在某些情况下app/frontend/default/your_theme/layout/page.xml

注释掉这些行(第38行)

<action method="addJs"><script>prototype/prototype.js</script></action>
 <action method="addJs"><script>lib/ccard.js</script></action>
<action method="addJs"><script>prototype/validation.js</script></action>
 <action method="addJs"><script>scriptaculous/builder.js</script></action>
 <action method="addJs"><script>scriptaculous/effects.js</script></action>
<action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
<action method="addJs"><script>scriptaculous/controls.js</script></action>
<action method="addJs"><script>scriptaculous/slider.js</script></action>
<action method="addJs"><script>varien/js.js</script></action>
<action method="addJs"><script>varien/form.js</script></action>
 <action method="addJs"><script>varien/menu.js</script></action>
 <action method="addJs"><script>mage/translate.js</script></action>
<action method="addJs"><script>mage/cookies.js</script></action>

这样做..如果在此之后你的灯箱工作正常并且“添加到购物车”没有,那么你的代码没有任何问题..它的prototype(所有这些都基于prototype.js)与bootstrap的jquery冲突。