Напоследък много хора ме питат дали цитатите, които се сменят при презареждане на страницата ми са модул на WordPress. Всъщност не са… Това е един глупав и стар JavaScript, който написах още за най-първия си личен сайт през 1997-ма или 1998-ма – не помня вече.
В скрипта няма нищо оригинално и всеки би могъл да си го пресъздаде, но все пак го оставям тук за download.

Описание: Скрипта трябва да се вгради в HTML-страницата, която трябва да визуализира цитатите по посочения примерен index.html. Самите цитати се четат от външен JavaScript-файл, който представлява дефиниция на масив.
Действие: В момента на визуализация скрипта прочита текущото време и отпечатва различен цитат в зависимост от секундите на часовника.
Недостатъци: Така замислен скрипта не позволява работа с повече от 60 цитата (колкото са секундите в една минута). Този недостатък не съществува във варианта на Калоян Доганов. Виж по-долу.
Подобрения: Не е нужно цитатите да са точно 60. Ако външния файл дефинира по-малък масив, просто е нужно вместо 60 в now.getSeconds()%60 да се посочи реалната дължина на масива.

Код за сваляне:
Оригиналната описана по-горе реализация:
qoth.tar.bz2 (1K)
Подобрена версия, която вместо часовника ползва генератор на псевдослучайни числа за измъкване на случаен цитат от колекцията:
qoth-k1.tar.bz2 (1K) – Автор: Калоян Доганов

Написано от Йовко Ламбрев

ИТ и Интернет експерт, предприемач, блогър и фотограф от Пловдив. Фен на WordPress, книгите и музиката. Вярва, че можем да направим света по-добър.

8 коментара

  1. Любопитното на това решение е, че е 100% client-side. Дори елементарната логика по избиране на случаен цитат е изнесена при клиента, тъй като по това време явно си имал възможност за хостване само на статични страници.

    Никакви такива сложни сервитьорски неща като WordPress, PHP или MySQL, дето човек да се чуди къде и как да ги хоства през 1997-ма… :-)

    Отговор

  2. Мда! Абсолютно си прав – тогава имаше един XOOM сървър за безплатен хостинг и почти никакви екстри. Вече го няма – лека му пръст! Какви ти бази, какво ти server-side програмиране…

    Всъщност на същия XOOM около края на 1998-ма се появи и Linux center-а, който едва после стана linux.gyuvet.ch… Той също е/беше изцяло статичен или по-скоро с 100%-client-side динамика ;)

    Отговор

  3. JavaScript не е стихията ми, но не можах да се сдържа да усъвършенствам скрипта, така че цитатите вече да могат да са произолен брой (вкл. и над 60). Далаверата е да се използва функцията Math.random() заедно с размера на масива, вместо директно да се обръщаме към часовника и да третираме секундите като индекс.

    Ето го patch-ът:

    qoth-k1.tar.bz2

    Йовко, ще го accept-неш ли в upstream? ;-)))

    Отговор

  4. Иска ли питане…

    Отговор

  5. да се таковам в тиквата…. чак сега погледнах с каква точност след десетичната запетая се генерира случайното число.

    при такава точност колизиите ще са толкова малко, че бих спал спокоен, че ако посетителите ми презареждат страницата няколко милиона пъти ще видят непропорционално количество от всеки цитат.

    Отговор

  6. абе не ме бийте, ама както го е написал калоян имаме проблем със "случайността" . има стойности, които са по-вероятни от други (весо веднага би казал "колизии" ).

    това се дължи на това, че math.random() генерира случайна стойност м/у 0 и 1 и при това условие, ако целочисленото деление на дължината на fortune масива не връща 0 има стойности , които ще са по-вероятни от другите.

    та аз предлагам да се ползва нещо такова:
    function getFortune() {
    var mytime = new Date(); // new date object
    var len = fortune.length;// how many fortunes we have

    return fortune[mytime.getTime()%len] ;
    }

    Отговор

  7. Не се таковай, man! Всъщност идеята на първоначалния скрипт да е вързана с часовника беше именно да подсигури, че евентуален reload е по-малко вероятен да се случи точно в същата секунда като предишния. ;)

    Баси колко изписахме за двуредов скрипт…

    Отговор

  8. http://wiki.wordpress.org/index.php/WPHacks

    и тука има интересни неща за wp

    Отговор

Ако искате да споделите нещо