Постраничная навигация по сайту

12
galaid
На сайте с 13.09.2011
Offline
16
1480

Здраствуйте.

Пытаюсь сделать простейшую CMS, которая в качестве базы данных использует текстовые файлы. Формат сайта - блог. То есть основной контент сайта - статьи, краткое описание которых выводится на главной странице. Но так как материал постепенно будет добавляется, то нужно сделать на главной странице постраничный навигатор.

Короче говоря, нужно сделать простой переключатель страниц. Что-то типо этого:

[ATTACH]97350[/ATTACH]

Подскажите, как лучше это реализовать? CMS пишу на PHP.

jpg page.jpg
ДП
На сайте с 23.11.2009
Offline
203
#1

Ок, наводящий вопрос - в одном файле хранится одна единица контента или несколько?

К
На сайте с 07.10.2011
Offline
1
#2
Подскажите, как лучше это реализовать?

Примеров в сети масса. Делается следующим образом (без кода, только мысли):

1. Указываем количество статей отображаемых на странице

2. Нужно произвести подсчет количества статей. Тут уж как у вас реализовано в одном файле, каждая статья в отдельном файле или же mysql. поэтому делается по разному.

3. Узнаем на сколько страниц нам разбить записи. Должно получиться целое число

4. Проверяем на какой странице пользователь, страницу делаем не активной.

5. Выводим постраничную навигацию

6. Выводим статьи на страницу

galaid
На сайте с 13.09.2011
Offline
16
#3
Дикий пионер:
Ок, наводящий вопрос - в одном файле хранится одна единица контента или несколько?

В одном файле - одна еденица контента.

Примеров в сети масса. Делается следующим образом (без кода, только мысли):
1. Указываем количество статей отображаемых на странице
2. Нужно произвести подсчет количества статей. Тут уж как у вас реализовано в одном файле, каждая статья в отдельном файле или же mysql. поэтому делается по разному.
3. Узнаем на сколько страниц нам разбить записи. Должно получиться целое число
4. Проверяем на какой странице пользователь, страницу делаем не активной.
5. Выводим постраничную навигацию
6. Выводим статьи на страницу

С этим-то всё ясно и подобных примеров в сети действительно масса, да вот только все они расчитаны на CMS, использующие Базы Данных. А в моем случае Базу Данных заменяют текстовые файлы.

ДП
На сайте с 23.11.2009
Offline
203
#4

От того, используете вы БД или нет, зависит только пункт №2.

Если у вас по одной статье в файле - то вам, получается, надо просто посчитать количество файлов общее и разделить на количество записей на странице (ну и округлить в большую сторону до целого).

Чтобы вывести нужные записи - просто пропустите при считывании n первых файлов, где n = (номер страницы -1)*количество записей на странице.

Или задавайте вопрос поконкретнее, что вас интересует. Какой из этих 6 пунктов вызывает сложности?

galaid
На сайте с 13.09.2011
Offline
16
#5

Проблем с сортировкой статей по страницам нет, сложности возникли в другом.

Дикий пионер:
Или задавайте вопрос поконкретнее, что вас интересует. Какой из этих 6 пунктов вызывает сложности?

Попробую задать конкретный вопрос. Допустим, index.php - главная страница моего сайта, на который выводится n последних статей (где n - количество статей, выводимых на одной странице). Пользователю, скажем, нужно посмотреть более старые статьи и для этого он при помощи переключателя страниц переходит на страницу 2, на которой отображается n более старых статей. Так вот, страницу 2 нужно создавать отдельно, например вида index_2.php? Или можно сделать так, чтобы страница 2 отображалась на главной?

К
На сайте с 07.10.2011
Offline
1
#6
4. Проверяем на какой странице пользователь, страницу делаем не активной.

Проверяем значение параметра page, передаваемого Get запросом ?page=1 и от сюда пляшем дальше по пунктам. Т.е. файл будет один, index.php, но ссылки будут выглядеть следующем образом index.php?page=1 index.php?page=2 и тд.

Вот такая книжка в начале помогала, там есть примеры написания форума и других приложений. Авторизация разобрана, в общем есть все, что может пригодиться для написания

Пытаюсь сделать простейшую CMS
Только в качестве базы - Mysql
galaid
На сайте с 13.09.2011
Offline
16
#7
Красный:
Только в качестве базы - Mysql

Способ понятен, но, как я уже говорил, в моем случае БД - текстовые файлы.

Продолжаю искать решение ситуации 🙅

ДП
На сайте с 23.11.2009
Offline
203
#8

Передавайте в номер страницы в качестве параметра в скрипт index.php


if(!isset($_GET['page']))
{
$page = 1;
}else{
$page = intval($_GET['page']);
}

А дальше в скрипте смотрите какая страница и показывайте нужные записи.

Хотя можете под вторую страницу создать и отдельный скрипт - но это плохой путь, вот станет у вас 100 страниц - придется для изменений 100 скриптов править :)

Дикий пионер добавил 08.10.2011 в 19:46

Добавлю еще - главная - это только одна страница сайта, если у вас адрес будет index.php?page=2 - то это будет уже не главная страница.

galaid
На сайте с 13.09.2011
Offline
16
#9

Дикий пионер, вот это хороший совет. Поработаю над этим скриптом.

galaid
На сайте с 13.09.2011
Offline
16
#10

Немного поработал над этим. Вот что получилось.

Под основным контентом сайта на главной странице я разместил такой код, который содержится в файле nav.php и подключается при помощи функции include:

<a href="/?p=1">1</a>

<a href="/?p=2">2</a>
<a href="/?p=3">3</a>
//и т.д.

А в том месте, где должен быть расположен список материала, вставил такой php-код:

<?php

$page=$_GET['p'];
// здесь будет скрипт, который покажет нужный материал в зависимости от номера страницы
include('nav.php');
?>

Правильно ли я все понял и сделал?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий