我尝试使用引导程序动态获取owl carousel的输出,但在codeigniter framework 3.0.1版本中没有获得所需的输出,

7jmck4yq  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(294)

这是我想显示为滑块时,它滑动两行相应地向左或向右移动
a B c
a B c
〈〉
但我得到的是下面给

a  b  c
  <>

当从数据库中获取图像时,无法获得按两行显示的逻辑。这怎么可能呢?
第一次
在静态条件下,html代码类似于

<div class="owl-carousel client-slider owl-theme">
     
        <div class="item"> 
        <div class="product-box">
            <div class="product-img"><img src="images/logos/Acer.jpg" class="img-full" alt=""/> </div>
            <div class="product-img"><img src="images/logos/Alfa.jpg" class="img-full" alt=""/> </div>
    </div>
          </div>

我必须显示图像在轮播两行动态从数据库作为静态条件,我已经给了上面。从数据库中获取的图像将被放置在两行。我如何才能得到结果作为静态条件。有人能帮助我解决这个问题吗

dgjrabp2

dgjrabp21#

我已经更新了我的答案。通过一个简单的CSS和HTML黑客你不需要改变Javascript代码,但你需要在你的CSS中设置一些边距,并在开始你的猫头鹰转盘。首先创建一个平面数组,文件名按照你想要的排序顺序。这可以在Codeigniter控制器方法或视图中完成:

// CREATE A FLAT ARRAY WITH JUST THE FILE NAMES FROM YOUR ORIGINAL ARRAY OF PHP OBJECTS   
foreach($sliderimages as $sliderimage){
  $result[] = $sliderimage->file_name;
}
      
// YOU NOW HAVE A FLAT ARRAY WITH FILE NAMES IN THE SORT ORDER YOU WANT TO DISPLAY THEM
// FOR EXAMPLE: array('1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg');
    
// NOW WE NEED TO ALTERNATE THE SORT ORDER IN THE ARRAY.
// 1: SPLIT THE ARRAY IN THE MIDDLE AND CREATE TWO NEW... 
list($array1, $array2) = array_chunk($result, ceil(count($result) / 2));
    
// 2: EMPTY THE RESULT ARRAY TO MAKE ROOM FOR THE NEW RESULT
$result = array();
    
// COMBINE THE TWO NEW ARRAYS INTO ONE ARRAY WITH AN ALTERNATE SORT ORDER
array_map(function($item1, $item2) use (&$result)
                {
                    $result[] = $item1;
                    $result[] = $item2;             
                }, $array1, $array2);
    
// WE USE FILTER TO REMOVE ARRAY ITEMS WITH EMPTY STRINGS
$result = array_filter($result);

现在,我们得到了一个具有备用排序顺序的数组,需要它才能按照您希望的排序顺序显示图像。
循环遍历结果数组并打印HTML。这里需要控制奇数行和偶数行以使其正确:

// CREATE A COUNTER TO CHECK ODD/EVEN ROWS
$counter = 1;
// NUMBER OF IMAGES TOTAL
$number_of_images = count($result);

// IF WE HAVE IMAGES...
if($number_of_images > 0){
        
    //START OWL CAROUSEL DIV
    echo '<div class="owl-carousel owl-theme">';
        
    foreach($result as $img) {
      if ($counter % 2 == 0){ // EVEN ROW
        echo '  <div class="product-box"><div class="product-img"><img src="'.base_url('assets/sliders/'.$img).'" class="img-full" alt=""/></div></div>';
        // CLOSE ITEM DIV ON ODD ROWS
        echo '</div>';

      } else { // ODD
        //OPEN A NEW DIV ITEM ON ODD ROWS
        echo '<div class="item">';
        // ECHO THE DIV WITH THE IMAGE 
        echo '  <div class="product-box"><div class="product-img"><img src="'.base_url('assets/sliders/'.$img).'" class="img-full" alt=""/></div></div>';
                
        // CHECK TO SEE IF THIS IS THE LAST ROW
        if($counter==$number_of_images){
          // CLOSE ITEM DIV ON LAST ROW
          echo '</div>';
        }
      } // END ODD/EVEN CHECK
      $counter++;
    } // END FOREACH
        
    //END OWL CAROUSEL DIV
    echo '</div>';
        
// NO SLIDER IMAGES AVAILABLE    
} else {
  echo '<h5 class="text-alter"> sliders are not available</h5>';    
}

现在,您应该已经打印出如下所示的HTML:

<div class="owl-carousel owl-theme">
<div class="item">
  <div class="product-box"><div class="product-img"><img src="images/logos/1.jpg" class="img-full" alt=""/></div></div>
  <div class="product-box"><div class="product-img"><img src="images/logos/4.jpg" class="img-full" alt=""/></div></div>
</div>
<div class="item">
  <div class="product-box"><div class="product-img"><img src="images/logos/2.jpg" class="img-full" alt=""/></div></div>
  <div class="product-box"><div class="product-img"><img src="images/logos/5.jpg" class="img-full" alt=""/></div></div>
</div>
<div class="item">
  <div class="product-box"><div class="product-img"><img src="images/logos/3.jpg" class="img-full" alt=""/></div></div>
  <div class="product-box"><div class="product-img"><img src="images/logos/6.jpg" class="img-full" alt=""/></div></div>
</div>
</div>

接下来,您要做的唯一事情就是在CSS中设置图像的边距:

.product-box { margin-bottom: 10px; }

并设置启动owl-carousel时每行显示的边距和图像数量(如果要每行显示四个图像,请将item属性更改为items:4):

$('.owl-carousel').owlCarousel({
                     margin:10,
                     items:3
                     });

而结果应该变成:

代码笔示例

https://codepen.io/MicKri/pen/vYpjqPy

更多阅读和示例

Owl carousel multiple rows
https://w3codemasters.in/multiple-rows-carousel-by-owl-carousel/

相关问题