Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Автоматический текстовый слайдер с паузой
Форумы портала PHP.SU » PHP » Пользовательские функции » Автоматический текстовый слайдер с паузой

Страниц (1): [1]
 

1. dcc0 - 22 Апреля, 2015 - 16:08:58 - перейти к сообщению
За первую реализацию меня на habr-e заминусовали и публиковать там вторую часть уже смысла нет, опять будут ругаться. Но не хочется, чтобы наработка пропала. Материал ниже является учебным, но не претендует ни на что (верю, что может кому-то пригодиться). Если администраторы сочтут материал приемлемым для занесения в раздел "уроки" или "статьи", я не против.

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


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

Для шестого пункта предпочтителен второй вариант с вычислением времени при добавлении записи.
Средства реализации: PHP и файлы, разметка HTML5 и немного анимации с CSS3. Перезагрузка страницы будет происходить во фрейме iframe - псевдо-аякс.

Реализация
Для обновления фрейма используется тег
CODE (html):
скопировать код в буфер обмена
  1. <source lang="html">
  2. <meta http-equiv="Refresh" content="<?=$my_time;?>; URL=index.php?p=<?=--$p?>&<?=$entry[0]?>"/>

Для перехода по страницам инкремент/декремент - переменная p.
my_time - хранит паузу. Данные о количестве всех записей хранятся в файле allcount.dat
Для ЧПУ делаем отдельное поле, назовем его заголовок.


Вариативный псевдокод для файла с панелью администратора.
Под вариативным псевдокодом понимается то, что задача однозначно может быть реализована, но с возможными вариациями:

Админка
Спойлер (Отобразить)



Вывод для пользователя

Спойлер (Отобразить)

P.S. Если отказаться от ЧПУ, то можно отказаться и от glob.


Конкретная реализация, но с отступлением (писал уже после псевдокода) и без некоторых функций, чтобы было понятней.

index.php - пользовательская страница
Спойлер (Отобразить)


Директории с базой у меня bd/ и для админки ad/

Админка - ad/index.php . В ней два куска - форма и обработчик:

Спойлер (Отобразить)


Спойлер (Отобразить)


Прошу только не писать про MySQL и целесообразность, интересует именно идея и на файлах.
2. ShniderHost - 21 Мая, 2015 - 16:53:30 - перейти к сообщению
Идея вполне интересная

 

Powered by ExBB FM 1.0 RC1