如何在我的Ziggeo应用程序中使用分页显示我的所有视频?

问题描述 投票:1回答:2

所以我需要一些Ziggeo用户的帮助。我在ziggeo服务器上注册了8个视频,现在我希望将它们显示在每页2个视频的页面中。这是我写的,但不幸的是它没有向我显示任何视频,但编译器没有说任何错误。

<?php include('./ziggeo/pagination.class.php');?>
<?php $myvideos = $ziggeo->videos();
$myarray = array($myvideos);?>
<div class="gallery">
<?php if(count($myarray)){
$pagination = new pagination($myarray, (isset($_GET['page'])?$_GET['page']:1), 3);
$videos = $pagination->getResults();
if(count($videos)!=0) {
echo $pageNumbers = '<h2>'.$pagination->getLinks().'</h2>';
foreach ($videos as $video) {?>
<div class="wall-of-videos-container">
<ziggeo ziggeo-video="<?= $video->token ?>"
ziggeo-width=320 ziggeo-height=240 ziggeo-popup> </ziggeo>
<?= date("Y-m-d h:i a", $video->created) ?>
&middot;<?= $video->duration ?> seconds</div>
 <? } echo $pageNumbers; } } ?>
 </div><!-- End Gallery -->

我包含了Ziggeo配置所需的所有文件。谁能帮我?非常感谢!

php pagination video-capture
2个回答
1
投票

如果没有看到'pagination.class.php'文件内容和你正在创建的输出很难知道出了什么问题,但是要使用Ziggeo PHP SDK在PHP中创建分页,你可以这样做:

<?php
  require_once('Ziggeo.php');
  $ziggeo = new Ziggeo('YOUR TOKEN', 'YOUR PRIVATE KEY', 'YOUR ENCRYPTION KEY');
?>

现在看看你的代码似乎这是你没有正确的调用。要获取视频,您应拨打以下电话:

<?php $myvideos = $ziggeo->videos()->index(); ?>

最好记住,默认情况下,您最多只能获得50个视频,因此如果您希望获得更多视频,则应设置limit参数。

你可以设置limitskipreversestatestags

如果您想要获得最多100个视频(每次通话最多),您可以执行以下操作:

<?php
  $myArguments = array('limit' => 100);
  $myvideos = $ziggeo->videos()->index($myArguments);
?>

现在列出它们,你会做这样的事情:

<?php
  foreach ($myvideos as $video) {
    ?>
      <ziggeo ziggeo-video="<?php echo $video->token; ?>" ziggeo-width=320 ziggeo-height=240 ziggeo-popup></ziggeo>
    <?php
  }
?>
  • 您可以在foreach之前添加count($myvideos)支票,但不应该需要它。

一般来说,要创建每页包含2个视频的页面,您可以使用以下内容:

<?php
  $i = 0; //to have two videos per page
  $j = 0; //to see how many we have
  foreach ($myvideos as $video) {
      $j++;
      if($i === 0) { ?>
        <div class="gallery_page">
      <?php } ?>
      <ziggeo ziggeo-video="<?php echo $video->token; ?>" ziggeo-width=320 ziggeo-height=240 ziggeo-popup></ziggeo>
    <?php
      $i++;
      if($i === 2) { ?>
        </div>
        <div class="page_number"><?php echo $j/2; ?> </div>
      <?php
        $i = 0;
      }
  }
  if($i !== 0) {
      ?>
        <div class="page_number"><?php echo (($j-1)/2)+1; ?> </div>
      <?php
  }
?>
  • 最好指出上面的代码不是一个完整的分页系统 - 它只是一个简单的示例,向您展示如何做到这一点,但它需要进行自定义并进一步处理以匹配图库样式,以及类似。

看看你的代码,我认为它应该使用这样的东西:

<?php
  include('./ziggeo/pagination.class.php');
  $myvideos = $ziggeo->videos()->index();
?>
<div class="gallery">
<?php
  if(count($myvideos)) {
    $pagination = new pagination($myarray, (isset($_GET['page']) ? $_GET['page']:1), 3);
    $videos = $pagination->getResults();
    if(count($videos)!=0) {
      echo $pageNumbers = '<h2>'.$pagination->getLinks().'</h2>';
      foreach ($videos as $video) { ?>
        <div class="wall-of-videos-container">
        <ziggeo ziggeo-video="<?php echo $video->token; ?>" ziggeo-width=320 ziggeo-height=240 ziggeo-popup></ziggeo>
        <?php echo date("Y-m-d h:i a", $video->created); ?>
        &middot;<?php echo $video->duration; ?> seconds</div>
     <?php } echo $pageNumbers;
     }
  } ?>
</div><!-- End Gallery -->

但我确实假设您在页面的HTML HEAD中设置了标题,其中将显示图库:

<link rel="stylesheet" href="//assets-cdn.ziggeo.com/v1-latest/ziggeo.css" /> 
<script src="//assets-cdn.ziggeo.com/v1-latest/ziggeo.js"></script>
<script type="text/javascript">ZiggeoApi.token="YOUR TOKEN"</script>

如果不存在,HTML代码将从上面的PHP代码创建,但由于Ziggeo框架未在客户端加载,因此您的视频不会显示。

更新(2016/05/31)

由于以上只是执行此操作的一般方法,因此不包括CSS或JavaScript。

因此,我添加了可以使用的完整代码,因为它显示了收集页码的另一种方法,并留下上面的内容,以便有人可以看到两者。

<script type="text/javascript">
  //Basic code needed to switch pages
  var currentPage = 1;
  function showPage(number) {
    //If we are on the same page as the selected one, we just break away from the function, so that we do not hide the same.
    if(currentPage === number) { return false; }

    var toShow = document.getElementById('page_' + number);
    var toHide = document.getElementById('page_' + currentPage);

    toShow.style.display = 'block';
    toHide.style.display = 'none';

    currentPage = number;
  }
</script>

<style type="text/css">
  /* Code to hide the pages (all) and show first one only, as well as a bit of styling so that it has some basic frame */
  .gallery_page > ziggeo {
    float: left;
  }
  .gallery_page {
    background-image: linear-gradient(-45deg, lightGray, white);
    border-radius: 10px;
    box-shadow: 0 0 2px gray;
    box-sizing: border-box;
    display: none;
    min-height: 400px;
    margin: 20px 0;
    padding: 40px;
    width: 720px;
  }
  .gallery_page:first-child {
    display: block;
  }
  .page_number {
    box-shadow: 0 0 3px gray;
    float: left;
    margin: 0 4px;
    text-align: center;
    width: 2em;
  }
</style>

<div class="gallery">
  <?php
  //How many videos per page do we want to have?
  $numberOfVideos = 2;
  //How many videos was there in total?
  $totalNumberOfVideos = 0; //only if we need it for something later on
  //How many videos are approved / are shown
  $totalNumberOfApprovedVideos = 0; //only if we need it for something later on
  //which page are we working on?
  $currentPage = 1;
  //Will serve as buffer for page number elements
  $pageNumbers = '';
  //temporary videos counter
  $i = 0;

  foreach ($myvideos as $video) {
    //to only show approved videos
    if($video->approved === true) {
      if($i === 0) { ?>
        <div class="gallery_page" id="page_<?php echo $currentPage; ?>">
      <?php } ?>

      <ziggeo ziggeo-video="<?php echo $video->token; ?>" ziggeo-width=320 ziggeo-height=240 ziggeo-popup></ziggeo>

      <?php

      $i++;
      if($i === $numberOfVideos) { ?>
        <br style="float:none; clear:left;">
        </div>
        <?php
        $pageNumbers .= '<div onclick="showPage(' . $currentPage . ');" class="page_number">' . $currentPage . '</div>';
        $currentPage++;
        $i = 0;
      }

      $totalNumberOfApprovedVideos++;
      $totalNumberOfVideos++;
    }
    else {
    //$video->moderation_reason
    //If you want to check if there was a reason why the video was not approved, you can check the above, or alternatively, you could do something else at this point.
      $totalNumberOfVideos++;
    }
  }
  if($i !== 0) {
    $pageNumbers .= '<div onclick="showPage(' . $currentPage . ')" class="page_number">' . $currentPage . '</div>';
  }
  ?>
</div><!-- End Gallery -->

<?php echo $pageNumbers; ?>

<?php
  //This is not needed for pagination to work, however you might want to show it, etc
  echo '<br><br>';
  echo 'Approved videos: ' . $totalNumberOfApprovedVideos . '<br>';
  echo 'Total videos: ' . $totalNumberOfVideos . '<br>';
  echo 'Total number of pages: ' . $currentPage . '<br>';
  echo $numberOfVideos . ' videos per page<br>';
?>
  • 值得指出的是,这只是一个框架 - 因此前面提到的代码将像后续代码一样工作,但是它们都需要额外的样式和代码才能使它看起来很漂亮并且按照我们的意愿行事。

0
投票

添加以下javascript后:

<script type="text/javascript">
var currentPage = 1;
function showPage(number){
var toShow = document.getElementById('page_' + number);
var toHide = document.getElementById('page_' + currentPage);
toShow.style.display = 'block';
toHide.style.display = 'none';
currentPage = number;}
</script>

正确引用div画廊,现在一切正常。谢谢Bane。

© www.soinside.com 2019 - 2024. All rights reserved.