Bootstrap Modal 和 ACF Repeater 字段

Posted

技术标签:

【中文标题】Bootstrap Modal 和 ACF Repeater 字段【英文标题】:Bootstrap Modal and AFC Repeater field 【发布时间】:2018-03-27 02:45:07 【问题描述】:

我的网站上有一个来自高级自定义字段转发器的客户端徽标区域,单击时,我希望弹出一个模式窗口,其中包含我包含在转发器字段中的其余信息。

每个客户都有一个徽标、标题、案例研究和推荐信。我已经设法让徽标显示在一个漂亮的网格中,但我在点击时弹出模式时遇到了一些问题......

这是我的代码:

    <div style="background-color:#ffffff;width:100%;">
    <div class="container margin-top-20" >

        <div class="row">
            <?php if( get_field('client_logos') ): ?>
            <div style="clear:both;margin-top:20px;">
            </div>
            <h3 class="brand-white" >
                Our Clients
            </h3>
            <ul class="blocks blog-block logo-block">
                <?php if( get_field('client_logos') ): ?>
                <?php while( has_sub_field('client_logos') ):  $i=1; ?>

                  <li>


                    <div class="block-image">
                        <div class="logo-image">
                            <div class="logo-center">
                                <?php $logoblock = get_sub_field('client_logo'); ?>
                                <a href="#myModal<?php echo $i;?>" data-toggle="modal" data-target="#myModal<?php echo $i;?>">
                                  <img src="<?php echo $logoblock['sizes']['medium']; ?>">
                                </a>
                            </div>
                        </div>
                    </div>


                    <div class="modal fade col-md-4" id="myModal<?php echo $i;?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                        <div class="modal-dialog" >
                            <div class="modal-content" style="background-color:
                                <?php the_sub_field('box_color'); ?>">
                                <div class="modal-header">
                                    <!-- Close x --> 
                                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                    <!-- Logo --> 
                                    <?php the_field('client_logo');?>
                                    <!-- Title --> 
                                    <?php the_field('client_title');?>
                                </div>
                                <div class="modal-body">
                                    <!-- Case Study -->
                                    <?php the_field('client_case_study');?>
                                    <!-- Testimonial -->
                                    <?php the_field('client_testimonial');?>
                                </div>
                            </div>
                        </div>
                    </div>


                  </li>

                <?php $i++; endwhile; ?>
                <?php endif; ?>
            </ul>
            <?php else: ?>
            <?php endif; ?>
        </div>

    </div>
</div>

如您所见,循环最初会检查徽标并显示它,但它应该在单击时显示一个包含所有字段的模式窗口...当我单击时似乎没有发生任何事情 - 我看不到是什么错了……

如果有帮助,这里是徽标条的图片:

【问题讨论】:

你能告诉我页面的网址吗 你好 - 我实际上是在本地处理它,但如果它有帮助,我会在这里设置一个隧道:idee.fwd.wf/brand-ignite-test 它在底部的主页上:) 找不到页面。 @BalwantSingh idee.fwd.wf/brand-ignite-test 这应该可以工作 - 我必须在我的本地 MAMP 服务器上保持隧道打开,所以一旦我关闭我的计算机,它就会切断隧道...... @Aibrean idee.fwd.wf/brand-ignite-test 这应该可以工作 - 我必须在我的本地 MAMP 服务器上保持隧道打开,所以一旦我关闭我的电脑,它就会切断隧道.. 【参考方案1】:

当我在看到现场示例后查看您的代码时,这很容易。

#myModal'.$i.' - 该变量未包含在 PHP 中,因此不会显示计数。

将它(以及相应的模态 div)更改为 <a href="#myModal<?php echo $i;?>" data-toggle="modal" data-target="#myModal<?php echo $i;?>"><img src="<?php echo $logoblock['sizes']['medium']; ?>"></a>

计数的标记看起来不对...试试这个:

<div style="background-color:#ffffff;width:100%;">
<div class="container margin-top-20" >

    <div class="row">
        <?php if( get_field('client_logos') ): ?>
        <div style="clear:both;margin-top:20px;">
        </div>
        <h3 class="brand-white" >
            Our Clients
        </h3>
        <ul class="blocks blog-block logo-block">
            <?php if( get_field('client_logos') ): $i = 1; ?>
            <?php while( has_sub_field('client_logos') ): $i ++;?>

              <li>


                <div class="block-image">
                    <div class="logo-image">
                        <div class="logo-center">
                            <?php $logoblock = get_sub_field('client_logo'); ?>
                            <a href="#myModal<?php echo $i;?>" data-toggle="modal" data-target="#myModal<?php echo $i;?>">
                              <img src="<?php echo $logoblock['sizes']['medium']; ?>">
                            </a>
                        </div>
                    </div>
                </div>


                <div class="modal fade col-md-4" id="myModal<?php echo $i;?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                    <div class="modal-dialog" >
                        <div class="modal-content" style="background-color:
                            <?php the_sub_field('box_color'); ?>">
                            <div class="modal-header">
                                <!-- Close x --> 
                                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                                <!-- Logo --> 
                                <?php the_field('client_logo');?>
                                <!-- Title --> 
                                <?php the_field('client_title');?>
                            </div>
                            <div class="modal-body">
                                <!-- Case Study -->
                                <?php the_field('client_case_study');?>
                                <!-- Testimonial -->
                                <?php the_field('client_testimonial');?>
                            </div>
                        </div>
                    </div>
                </div>


              </li>

            <?php endwhile; ?>
            <?php endif; ?>
        </ul>
        <?php else: ?>
        <?php endif; ?>
    </div>

</div>

【讨论】:

非常感谢 :) 我已经用您的建议更新了上面的代码,但是每个徽标似乎都打开了相同的 myModal1 - 加上模态是空的...我使用来自的转发器字段高级自定义字段,它们都充满了内容,所以我不确定发生了什么...... 抱歉 Aibrean - 我不确定 - 我怎么知道(我想它会起作用?)大声笑 - 网站又来了:idee.fwd.wf/brand-ignite-test 这个数字涨了吗?示例:#myModal1、#myModal2、#myModal3 对不起,我刚刚看到你的评论 - 不,它们似乎都是#myModal1 我最近注意到 ACF 和计数的一个小错误。我将在我的答案中发布我的解决方案。

以上是关于Bootstrap Modal 和 ACF Repeater 字段的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap modal toggle() 和 modal('show') 表现不同

bootstrap 模态框(modal)点击空白处和ESC不关闭的方法

同时隐藏和显示 bootstrap 4 modal 将隐藏浏览器的滚动条

Bootstrap 4 .modal('hide') 不工作

html 从ACF数据拉出的Bootstrap Carousel

html 从ACF数据拉出的Bootstrap Carousel