Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Вопросы по оформлению форума » Контент-ротатор с подгрузкой данных из txt


Контент-ротатор с подгрузкой данных из txt

Сообщений 1 страница 20 из 23

1

Добра!

Есть такой ротатор произвольного контентаРандомный показ баннеров

В нем данные забиваются все и сразу - в теги <p>.

А есть ли аналогичный скрипт (т.е. выбирающий случайный блок из представленных), но чтобы подгружал эти блоки (которые <p>) из файлика, а не из тела скрипта? Ну, или можно как-то адаптировать вышеобозначенный? Он удобный )

Как пример:

Красное - собственно, наш <p>, внутри которого некоторый контент.
Зеленое - картинки, тексты, что угодно, что может оказаться внутри <p>

[html]<style>
#objav {display:block; width: auto; padding: 10px;  border: 3px solid red; max-width:400px;}
#objav ul {display: flex; flex-direction: row; flex-wrap: nowrap; align-items: stretch; justify-content: center; align-content: center; grid-gap: 6px 10px;}
#objav ul li {display: block; width: 50px; height: 100px; background: green; border: 1px solid #000;}
</style>

<div id="objav"><ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul></div>[/html]

Можно ли множество <p> с их содержимым записать в txt-файл, загрузить его в админку, а в скрипте просто обращаться к его данным, заставляя случайно выбирать <p> из тех, что записаны в файле?

Внутренности файлика, думаю, примерно такие:

<p> ...1... </p>

<p> ...2... </p>

<p> ...3... </p>

......

<p> ...24-и-так-далее... </p>

Отредактировано Wilhelm (Пн, 24 Янв 2022 15:28:14)

+2

2

Wilhelm
Можн, постараюсь седни или завтра(если забуду - пнёте в личку, а то занят до вечера)  :flag:
Да, насколько часто править файл будете ? (Т.е. перезапрос файла раз в час достаточно ?)

Отредактировано Deff (Пн, 24 Янв 2022 11:40:38)

+4

3

Deff написал(а):

(Т.е. перезапрос файла раз в час достаточно ?)

абсолютно.

В идеале данные пополнялись / перезаписывались бы раз в неделю-полторы.

+2

4

<!-- Ротатор произвольного контента -->
<style>#КонтентРотатор p{display:none}</style>
<div id="КонтентРотатор" style="width:400px;"></div>

<script type="text/javascript">
(function() {
var lnk = '/files/0012/d8/04/59130.txt'; //Файл загрузки
var c = parseInt(RequestTime / 3600 / 24);
var cnt = localStorage.Rotator;
var Update_time;
if(cnt && cnt.indexOf('##PSS##')!=-1)Update_time = cnt.split('##PSS##')[0];
if(!cnt || Update_time!= c){
   cnt = localStorage.Rotator =''+ c + '##PSS##'+ $.ajax({url:lnk+'?'+c, async: false, cache:false}).responseText;
}
cnt = cnt.split('##PSS##');
$('#КонтентРотатор').html(cnt[1]);

var sek = 2000;  // Время отображения
var id = "КонтентРотатор"
var P=$("#"+id+" p"), Nrout=P.length,
i=Math.round(Math.random()*(Nrout-1));
RotatorMycontent(i);
function RotatorMycontent(i) {
  P.hide();P.eq(i).show();j=Math.round(Math.random()*(Nrout-1));
  timerID = setTimeout(function(){RotatorMycontent(j)},sek);}
}());
</script>

Wilhelm, Синее ставишь куда нужно, скрипт должен быть ниже синего,
Красное ссылка на файл с контентом, я для теста вставлял с таким:

Код:
<p>111111111111111111111111111111111111111111111</p>
<p>222222222222222222222222222222222222222222222</p>
<p>333333333333333333333333333333333333333333333</p>
<p>444444444444444444444444444444444444444444444</p>
<p>555555555555555555555555555555555555555555555</p>

Файл создаёшь в блокноте Виндовс, затем: - сохранить как - UTF-8  (Без UTF-8 будет русский кракозябриться)

Файл контента должен быть залит на тот же форум, где и стоит скрипт :flag:

Отредактировано Deff (Вт, 25 Янв 2022 19:11:30)

+2

5

Deff
А можно твой скрипт юзать на другой платформе?
С копирайтом, конечно ж :)
Оно будет работать?

0

6

John Warner
Можно, если файл с контентом залит на том же ресурсе... Ну и стоит jQuery в head (копирайт - пофег... ибо г. код

Отредактировано Deff (Вт, 25 Янв 2022 12:02:31)

+1

7

Deff
Сорри за оффтоп в топике.
Стырю и поиздеваюсь, мне идея понравилась :)

+1

8

Deff
Спс, напишу во фулдилке, захламлять не бду.

+1

9

John Warner
Соррь, есть ещё один момент, скрипт использует переменную var RequestTime = 1643102079; , которая у нас на майб стоит в head (Это время отправки страницы юзеру в секундах (Дата в секундах , начиная от полуночи 01 января 1970 года GMT+0. )
Без оной нужно чот изобретать подсчет времени( эта фишка используется в скрипте чтоб тестировать раз в час что файл обновился ли)

Если это сложно, можно забодать чтобы файл обновлялся при смене его имени(Сбацать такое ?)

Отредактировано Deff (Вт, 25 Янв 2022 12:23:23)

+1

10

Deff
Да, отличная идея :)
У меня мысля заработала:
Например, если сделать (чисто умозрительно пишу) страницу для создания таких вот баннеров, можно сделать так, чтоб при отправке нового txt с баннерами, старый затирался.
При этом, каждый новый txt получает уникальное имя, основанное на абсолютном времени.
Таким мухтаром, мы имеем (имели бы) возможность клепать баннеры сами, и они б подхватывались автоматически.

ЗЫ Сам-то я, правда, могу лишь под phpBB такое написать, но как идею - дарю :)

+1

11

John Warner написал(а):

Ы Сам-то я, правда, могу лишь под phpBB такое написать, но как идею - дарю :)

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

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

Т.е. Юзер раз в час загружает файл с контентом в хранилище браузера и сверяет раз в час - сменился контент или нет (нет лишних запросов)

Отредактировано Deff (Вт, 25 Янв 2022 12:41:00)

+1

12

Deff
Вечерком поковыряю :)

+1

13

John Warner
Ну если свзываться с переменной отправки, её вставляют в head так:

<script type="text/javascript">
var RequestTime = 1643102079;
</script>

По идее текущее время сервера должно считываться в PHP, единственное оно наверно в миллисекундах, перевод в секунды - делим на 1000(чтобы вставить в скрипт-переменную страницы)

Отредактировано Deff (Вт, 25 Янв 2022 12:49:06)

+1

14

Deff
ты ж мой спаситель ))  Спасибо!  https://i.imgur.com/2GtLLKF.png

0

15

Deff
шурх!

Вопрос странный:

Скрипт не принимает html?
Конкретно интересуют <div>-блоки, конечно же.

В "исходном" скрипте, помнится, можно было поставить ту же ссылку, здесь тоже,  а вот как дела обстоят с блоками? А с несколькими, втиснутыми внутрь одного <p>?

Сам по себе html скриптом съедается, а вот на моменте вывода (судя по консоли разработчика) - обычный текст обволакивается <p>, но <div> - как будто бы "выпадает" за пределы скрипта и в итоге все эти ДИВы выводятся разом и никуда не хотят исчезать.

Конкретнее:

<p> 1 2 3 </p>

<p> <div class="sh1">тут некоторое содержимое</div>  <div class="sh1">возможно даже</div>  <div class="sh1">с еще пачкой тегов</div> </p>

<p> 4 5 6 </p>

<p>  <div class="sh1">тут некоторое содержимое</div>  <div class="sh1">возможно даже</div>  <div class="sh1">с еще пачкой тегов</div>  </p>

Отредактировано Wilhelm (Вс, 6 Фев 2022 18:58:28)

0

16

Wilhelm
<p> - тег строчный, (дивы(блочные) в нём не удерживаются)
Попробуй добавить в стиль в начало скрипта:

#КонтентРотатор p div{display:inline-block!important}

Отредактировано Deff (Вс, 6 Фев 2022 20:13:24)

+2

17

Wilhelm
Как верно подметил Дефф, DIVы, это "контейнеры", в отличие от строчки тега P.
А у вас наоборот сделано.

0

18

Deff написал(а):

Wilhelm
<p> - тег строчный, (дивы(блочные) в нём не удерживаются)
Попробуй добавить в стиль в начало скрипта:

#КонтентРотатор p div{display:inline-block!important}

не-не-не, инлайны были заданы изначально, когда я оформление для этих самых дивов писал. Просто они "за кадром" оставлены ) Проблема оставалась.

upd: с твоей заплаткой тоже не прокатило. Опять же - сохраняется "выпадение" элементов из ротации.

Т.е.  скрипт в принципе не принимает блочные элементы? Любого уровня, не только на первой линии вложенности в <p>? [<p> <div> <div></div> </div></p>]

Если "не ест" - не страшно ) Мне просто прояснить этот момент на будущее.

Отредактировано Wilhelm (Вс, 6 Фев 2022 21:15:52)

0

19

Wilhelm
Ну ок, к поздно ночи переделаю с <p> на <div class="pp"> обрамление

Wilhelm написал(а):

Т.е.  скрипт в принципе не принимает блочные элементы? Л

Ну изначально запрос был только на тексты(случайные цитаты) или картинки

Отредактировано Deff (Вс, 6 Фев 2022 21:21:03)

+1

20

Deff
если оно геморно, то не надо. Не хочу тебя лишними загадками грузить )

0


Вы здесь » Единый форум поддержки » Вопросы по оформлению форума » Контент-ротатор с подгрузкой данных из txt