|
Вопрос # 4 475/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты! Я хочу установить на своем сайте цитаты, которые изменяется автоматически при переходе на другую страницу (как на этом сайте). Теперь не знаю как это сделать. Поискал в интернет там много информеров, но все они на русском языке. А я хочу написать на казахском. Подскажите мне пожалуйста, как это делается или дайте какую-нибудь подсказку или ссылку. Заранее большое спасибо!!!
|
Вопрос задал: Ермаханов Айбек (статус: Посетитель)
Вопрос отправлен: 30 июля 2010, 15:49
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Ермаханов Айбек!
Итак, как сделать на ява-скрипте.
Можно сделать по топорному - создать, например, массив, в который и загнать все цитаты. А затем показывать случайную цитату из этого массива.
Пример. На странице в том месте, где нам нужно вывести цитату (например, в теге div), пишем:
...
<div style="background-color:#dfdfdf; font-style:italic; text-align:right; margin-left:300px;">
<!-- это задали новый блок с фоновым светло-серым цветом, курсивным текстом,
выравниванием по правому краю и слева будет отступ в 300 пикселей-->
<script>
// создадим массив цитат:
quote = new Array ( 'Вероятность того, что бутерброд упадет маслом вниз, прямо пропорциональна стоимости ковра.',
'Семь бед - один Reset.',
'Win98: Подождите, идёт подготовка к зависанию компьютера.',
'Компонент схемы, у которого самый короткий срок службы, помещается в наименее доступном месте',
'"Дефолт тебя на язык!"')
count = quote.length; // это нашли длину нашего массива
i = Math.floor(Math.random()*count); // а тут выбрали номер цитаты
document.write(quote[i]); // а вот это - вывод цитаты на страницу
</script>
</div>
...
Уж прости, Андрей. цитаты я взял отсюда. :)
Но тут сразу видны минусы - хоть отображается лишь одна цитата, но высылаются клиенту ВСЕ цитаты сразу. Это не есть гуд.
Можно поступить другим путём - а-ля "AJAX" :) Даже если сервер не поддерживает ни PHP, ни Perl, ни ещё что-либо (как, например, тот же народ.ру). Поступаем следующим образом:
1. Создаём файлы с цитатами. В каждом файле - одна цитата. Называться они, пусть будут так:
txt0.js
txt1.js
txt2.js
txt3.js и т.д.
нумерация - с НУЛЯ, и пропусков не должно быть
В каждом из этих файлов прописываем цитату в следующем формате:
txt0.js:quote='Вероятность того, что бутерброд упадет маслом вниз, прямо пропорциональна стоимости ковра.'
txt1.js:quote='Семь бед - один Reset.'
txt2.js:quote='Win98: Подождите, идёт подготовка к зависанию компьютера.'
...
Т.е. меняется лишь текст в одинарных кавычках. Название переменной (quote) остаётся без изменений.
Итак, создали мы ява-скриптовские файлы. Теперь вопрос - как же подключить один из этих файлов? Нам надо подключать не все, а лишь один из этих файлов, случайным образом. Тут мне помог яндекс :) Вторая (или третья?) ссылка в правильном запросе дала ответ - создаём динамически новый тег script, указываем ему нужный путь к файлу и подключаем этот тег к странице:
...
<script>
var count = 10; // Здесь мы указываем, сколько всего имеется цитат, т.е. файлов.
// Внимание - т.к. нумеруем файлы с нуля, то, скажем, если последний
// файл назывался txt14.js, то тогда count=15.
var i;
i = Math.floor(Math.random()*count); // получаем случайный номер для файла
var script = document.createElement('script') // создадим новый элемент script
script.setAttribute('type', 'text/javascript') // укажем для него атрибуты
script.setAttribute('src', "txt"+ i + ".js"); // укажем адрес файла с цитатой
document.getElementsByTagName('head').item(0).appendChild(script); // а теперь присоединим этот тег к тегу head
</script>
<div style="background-color:#dfdfdf; font-style:italic; text-align:right; margin-left:300px;">
<script>
document.write(quote);
</script>
</div>
...
Примеры проверял - всё должно работать.
Хотя, конечно, на PHP было бы проще. Так что нужно переходить на другие хостинги - благо, такие есть. И притом даже бесплатные.
|
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 30 июля 2010, 19:49
Оценка за ответ: 5
Комментарий к оценке: Спасибо ВАМ большое!!!
|
Мини-форум вопроса
Всего сообщений: 13; последнее сообщение — 31 июля 2010, 10:26; участников в обсуждении: 4.
|
Ерёмин А.А. (статус: *Администратор), 30 июля 2010, 16:02 [#1]:
Цитаты хранятся в текстовом файле по одной на строке. С помощью PHP весь файла читается, строки переносятся в массив, после чего делается выбор случайной строки и она отображается.
|
|
Ерёмин А.А. (статус: *Администратор), 30 июля 2010, 18:12 [#3]:
А вы знаете, что JS — это клиентский язык, а PHP — серверный?
Можно, но будет очень криво и нерационально.
|
|
Ермаханов Айбек (статус: Посетитель), 30 июля 2010, 18:17 [#4]:
Ерёмин А.А.: в юкозе PHP не разрешается. А Вы не могли бы мне дать ссылку готовых примеров если есть конечно?
|
|
Егор (статус: 10-ый класс), 30 июля 2010, 18:33 [#5]:
не, ну, в принципе, можно и через ява-скрипт сделать. и при этом не грузить все цитаты сразу
правда, будет всё равно не красиво. но можно
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Вадим К (статус: Академик), 30 июля 2010, 18:34 [#6]:
а я бы забросил цитаты в базу, по одной цитате в строку. Дальше рандомом генерим номер и выбираем цитату. Быстро и просто.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Егор (статус: 10-ый класс), 30 июля 2010, 18:50 [#7]:
Вадим К: ясно же было написано - никакого php. или с базой можно из ява-скрипта работать? тем более, что если пхп запрещён, то, скорее всего, базы тоже недоступны.
через яву-скрипт можно, конечно, но это будет совсем, конечно, через ... одно место.
но можно
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Ермаханов Айбек (статус: Посетитель), 30 июля 2010, 19:29 [#8]:
Кто-нибудь сможет мне составить пример на ява скрипте, если не трудно?
|
|
Егор (статус: 10-ый класс), 30 июля 2010, 19:40 [#9]:
пишу ответ
дождись - скоро будет
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Егор (статус: 10-ый класс), 30 июля 2010, 19:50 [#10]:
Андрей, на ява-скрипте зелёные скобочки смотрятся просто ужасно. Хорошо бы их в чёрные переделать?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Ерёмин А.А. (статус: *Администратор), 31 июля 2010, 09:30 [#11]:
Егор: отличный ответ! Как раз про первый способ я и говорил. Но если цитат много, то страница сильно увеличится в весе, а толку от этого немного. А вот идея с отдельными файлами — очень даже интересно! Больше хлопот при подготовке, но зато результат нужный. Можно и простенькую программу написать, которая из текстовика сделает кучку таких файлов.
Цитата (Егор):
Андрей, на ява-скрипте зелёные скобочки смотрятся просто ужасно. Хорошо бы их в чёрные переделать?
Ага, стандартная схема подобрана не лучшим образом. Изменил.
|
|
Егор (статус: 10-ый класс), 31 июля 2010, 09:59 [#12]:
в своё время я целые шаблоны страниц на ява-скрипте писал - ну, там, меню, шапка сайта, копирайт и т.д. в результате всё это кэшировалось у браузера, а подгружался практически лишь контент страницы. типа, меньше вес страниц получался. кстати, на том же народе всё это делал.
но всё это извраты, конечно.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Ерёмин А.А. (статус: *Администратор), 31 июля 2010, 10:26 [#13]:
Егор: хех Ну всё же с серверными скриптами всё проще. Бесплатные хостинги вроде можно найти.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|