0

我使用 turn.js和custome php 代码加载特定类别的joomla 文章以制作翻书......它工作正常,直到我有一页的一篇文章。我添加/编辑文章,然后保存它,然后在书页上查看...这是一项繁琐的任务...现在假设我在 joomla 文章中拥有一本书的所有内容,我想动态加载一部分把它作为一个页面来制作书页等等,直到文章结束……如果我只有没有固定行数的文本,这似乎是可行的。但问题是内容也可以有图像和标题......所以我怎样才能根据内容动态改变要为单个页面提取的文章部分以避免书页溢出......

这是这本书的工作代码,我有一页的一篇文章......

<?php  
//get total pages code from uncategorized (default) category. (id=2)
//state 1 means published -2 for trashed         
$qry="SELECT count(*) FROM `sdad_content` WHERE `catid`= '2' and `state` ='1' ";
  $get_db->setQuery($qry);
  $total_pages=$get_db->loadResult();

  if($total_pages){
      $qry="SELECT `id` FROM `sdad_content` WHERE `catid`= '2' AND `state`='1' ORDER BY `id`";
      //echo "<< $qry >>";
      $get_db->setQuery($qry);$get_db->query();
      $total=$get_db->getNumRows();
        if ($total >= 1 ) { //execute this only if we have some results
            $ids = $get_db->loadAssocList();
        }        
  }

//echo $total_pages;          

 for($i=0; $i<$total_pages; $i++){

      $qry="SELECT `introtext` FROM `sdad_content` WHERE `catid`= '2' AND `id`= '".$ids[$i]['id']."'";
      $get_db->setQuery($qry);
      $cover = $get_db->loadResult();
        if($i%2==0){
            $class='even';
            $pnoclass="pnoright";
          }else{
            $class='odd';
            $pnoclass="pnoleft";
          }
          echo '<div class="text '.$class.' "> <div class="page"> '.$cover; 
            echo '<div class="'.$pnoclass.' ">  </div>';
         echo '</div> </div>';

      }


    //code for back cover

     //adjusting the last odd page if ends at odd insert a page to make it even
      if($total_pages%2!=0){
          echo '<div class="text odd "> <div class="page">'; 
            echo '<div class="pnoleft"></div>';
          echo '</div> </div>'; 
      }  

      echo '<div class="text even "> <div class="page"> '.$covers[1]["introtext"]; 
            echo '<div class="pnoright"></div>';
         echo '</div> </div>';   
      echo '<div class="cover"> '.$covers[3]['introtext'].' </div>';
?>
4

1 回答 1

0

我强烈建议你简化代码,这么多 mysql 查询毫无用处...

我的报价(工作方式相同):

<?php
$qry="SELECT `introtext` FROM `sdad_content` WHERE `catid`= '2' AND `state`='1' ORDER BY `id`";
$get_db->setQuery($qry);
$results = $get_db->loadObjectList();
if (count($results)){
    foreach($results as $key => $item){
        if($key%2==0){
            $class='even';
            $pnoclass="pnoright";
        } else {
            $class='odd';
            $pnoclass="pnoleft";
        }
        echo '<div class="text '.$class.' "> <div class="page"> '.$cover; 
        echo '<div class="'.$pnoclass.' ">  </div>';
        echo '</div> </div>';
    }
}
?>

更少的代码,只有 1 个查询(插入 N)和相同的结果 :)

于 2013-10-02T11:58:20.957 回答