Войти

Делаем первую статью на первой странице в полный рост

02.03.2013 12:40

В БД есть два варианта статей — полный (body) и краткий вариант (description). Для того, что бы для последней статьи выводился description, надо сделать проверку: первая ли это страница и первая ли это статья на странице. т.е. если страница номер 1 и номер массива по порядку 0, то это последняя запись

Что бы узнать номер массива статьи изменим:

<?php foreach ($articles as $row)

на:

<?php foreach ($articles as $key => $row)

Где $key и есть индекс массива.

Индекс массива мы знаем. Теперь осталось проверить номер страницы. Для этого сделаем так, что бы окончательный номер страницы считался в самом контроллере, а уж оттуда передавался в модель и вид. Для этого из модели article_m.php перенесём в контроллер следующий код:

$pageNumber = $pageNumber<=0?1:$pageNumber;
$pageNumber = $config['per_page']*($pageNumber-1);

В контроллере blog.php запишем следующее:

Для расчета номера страницы:

/*просчитываем номер страницы*/
$pageNumber = $this->uri->segment('3');
$pageNumber = $pageNumber<=0?1:$pageNumber;
$str = $config['per_page']*($pageNumber-1);

Теперь добавим полученные переменны в массив:

$data['pageNumber'] = $pageNumber;

Теперь остается только передать массив $data во вьюшку.

$this->load->view('contentarticle_v', $data);

В виде узнаем номер массива:

<?php foreach ($articles as $key => $row)

Зная номер страницы и зная ключ массива, можем задать условия вывода полной версии статьи:

<?php
         if($key==0 && $pageNumber==1) {;?>
т.е. $key первой записи на странице должен имеет значение 0, а номер страницы ($pageNumber) =1, то выводим полный вариант статьи:
<div class="body"><?= $row['body'];?></div>

иначе:

<?php } else {;?>
         <div class="description"><?=$row['description'];?></div>
         <div class="more"><a href="/blog/show/<?=$row['id'];?>">Подробнее...</a></div>

body – полный вариант статьи;

description – краткий вариант статьи.

Ну вот и все, что касается данной темы. Теперь первая запись на первой странице будет отображаться полностью.

  BENCHMARKS  
Loading Time: Base Classes  0.0032
Controller Execution Time ( Blog / Show )  0.0062
Total Execution Time  0.0095
  GET DATA  
No GET data exists
  MEMORY USAGE  
2,221,240 bytes
  POST DATA  
No POST data exists
  URI STRING  
blog/show/14
  CLASS/METHOD  
blog/show
  DATABASE:  blogAlenin (Blog:$db)   QUERIES: 3 (0.0007 seconds)  (Hide)
0.0003   SELECT *
FROM `article`
WHERE `id` = '14' 
0.0002   SELECT *
FROM `article`
WHERE `id` = '14' 
0.0003   SELECT *
FROM `categories`
ORDER BY `nameAS
  HTTP HEADERS  (Show)
  CONFIG VARIABLES  (Show)