Пишемо хмара тегів на php

Пишемо "хмара тегів" на PHP

Як вивести на сайті теги або ключові слова різними розмірами шрифту, щоб чим популярніше тег, тим більше був розмір слова, але не до нескінченності, а в якихось заданих межах?

Уф, найважче було перевести питання на прийнятний російський :)

Дійсно, "хмари тегів" є на більшості сучасних сайтів, мають вони найрізноманітніший вид, від красивих крутяться "флешок" до звичайного "поля слів", як в цьому блозі. Вся фішка в тому, щоб більш популярні слова виводилися бо льшим розміром шрифту, але процес цей не міг зайти надто далеко і був заздалегідь обмежений якимись заданими програмістом рамками :) Нам цілком вистачить кількох рядків коду з исходника цього блогу, які ми ще спростимо .

Знадобляться всього 3 настройки:

Тобто, ми розрізняємо не більше 10 різних розмірів шрифту, текст ніколи не буде менше 8 і більше BASEFONT + PTSTEP * TAGSLEVEL = 18 пунктів.

Припустимо, що цікавить нас зберігається в таблиці tags з наступною структурою:

Зрозуміло, в таблиці можуть бути інші поля, але вони для нас зараз несуттєві.

Спочатку дізнаємося, який максимальний з існуючих "рейтинг" тега:

Тепер виберемо все теги і в типовому циклі обробки сформуємо хмара. Розмір кожного тега-слова буде задаватися конструкцією виду слово. тобто, звичайними засобами HTML. Вийде приблизно такий код:

Вся справа, звичайно, у формулі для обчислення розміру тексту $ size по рейтингу тега $ tag [ 'rating']. Пояснити її легко. У загальному вигляді значення x. належить вихідного інтервалу [a, b]. можна лінійно перетворити в значення y. належить вихідному інтервалу [c, d]. за формулою:

Якщо кожен черговий рейтинг належить інтервалу [0, $ max] (вихідний інтервал), а нам треба "перегнати" його в розмір тексту, що належить інтервалу [BASEFONT, BASEFONT + TAGSLEVEL * PTSTEP] (вихідний інтервал), то, підставивши значення в формулу , отримуємо

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

Схожі статті