Модуль:RandomArticle

Материал из AbduloverA.com
Версия от 00:06, 20 ноября 2025; Adept (обсуждение | вклад) (Новая страница: «local p = {} -- === БАЗА ДАННЫХ СТАТЕЙ === -- Добавляй сюда новые статьи по образцу. -- image = имя файла картинки -- title = заголовок статьи (и ссылка) -- text = краткое описание для главной local data = { { image = "Shuetlanus.jpg", title = "Суетлан", text = "Результат скрещивания лись...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Для документации этого модуля может быть создана страница Модуль:RandomArticle/doc

local p = {}

-- === БАЗА ДАННЫХ СТАТЕЙ ===
-- Добавляй сюда новые статьи по образцу.
-- image = имя файла картинки
-- title = заголовок статьи (и ссылка)
-- text  = краткое описание для главной
local data = {
    {
        image = "Shuetlanus.jpg",
        title = "Суетлан",
        text  = "Результат скрещивания лисьей спермы Шашки Слагара и говна Кирича. Боевой петух, который неоднократно был на подсосе у грешников и махровых ипотекарей детдомовцев. Проживает в г. Рыбное Рязанской области. Существующий на шее мамки инфантил, любит очень громко орать из окна, как нагнёт пришедших к нему пердулей, однако выйти и реализовать свои угрозы зассал мамка не разрешила. Страдает биполярным расстройством, импотенцией и просто паталогический пидорас."
    },
    {
        image = "Bibokids.png",
        title = "Биборан (версия для детей)",
        text  = "В одной стране жили послушные дети, а были и непослушные — настоящие нехочухи и вредины. И среди всех них появился мальчик по имени Саша, который был вреднее всех. Однажды он топнул ногой и закричал на всю игровую площадку."
    },
    {
        image = "BrigMMMan.jpg",
        title = "Brigman",
        text  = "Бывший подсос Тесака, раскрутившийся на ребрендинге своей публичной деятельности с «анти-педофильского» активизма «оккупай-педофиляй» в пранки над якобы недобросовестными компуктерщиками. Хотя выпуски его «разоблачений» давно спалились дешёвой актёрской игрой, а сам же Витёк превратился полностью в своих жертв. В начале 2022 года основал свою кассу взаимопомощи «BrigPC», в который он объявляет НУЛЕВУЮ НАЦЕНКУ на свои сборки компов, попутно и «невзначай» разоблачая конкурентов, а потом сбежал с далларами."
    },
    -- Скопируй блок выше { ... }, чтобы добавить еще статью
}

-- === ОСНОВНОЙ КОД (НЕ ТРОГАТЬ) ===
function p.main(frame)
    -- Инициализируем генератор случайных чисел временем
    math.randomseed(os.time())
    
    -- Выбираем случайную статью из базы
    local item = data[math.random(#data)]
    
    -- Если картинки нет, ставим заглушку
    local image = item.image or "Placeholder_no_image.jpg"
    
    -- Формируем HTML (СПЛЮЩЕННЫЙ, чтобы не было прямоугольников)
    -- Мы используем table.concat для сборки строки без лишних переносов
    local html_parts = {}
    
    table.insert(html_parts, '<div style="width:100%; max-width:900px; margin:0 auto 20px auto; background:#111; border:1px solid #ffd700; border-radius:8px; overflow:hidden; box-shadow:0 0 25px rgba(255,215,0,0.2); font-family:sans-serif;">')
    
    -- Заголовок блока
    table.insert(html_parts, '<div style="background:linear-gradient(to bottom, #2a2a2a, #111); padding:15px; text-align:center; font-weight:bold; color:#ffd700; border-bottom:1px solid #ffd700; text-transform:uppercase; letter-spacing:2px; text-shadow:0 0 10px rgba(255,215,0,0.5); margin:0;">Случайная Статья</div>')
    
    -- Тело (Flexbox)
    table.insert(html_parts, '<div style="display:flex; flex-wrap:wrap; background:#111; margin:0; padding:0;">')
    
    -- Левая колонка (Картинка)
    table.insert(html_parts, '<div style="flex:1 1 300px; min-width:280px; background:#000; display:flex; align-items:center; justify-content:center; overflow:hidden; border-right:1px solid #333; min-height:250px;">')
    table.insert(html_parts, '[[Файл:' .. image .. '|frameless|center|400px|link=' .. item.title .. ']]')
    table.insert(html_parts, '</div>')
    
    -- Правая колонка (Текст)
    table.insert(html_parts, '<div style="flex:2 1 300px; padding:25px; display:flex; flex-direction:column; justify-content:space-between; background:#111;">')
    table.insert(html_parts, '<div style="margin-bottom:15px;">')
    table.insert(html_parts, '<div style="font-size:1.6em; font-weight:bold; color:#ffd700; margin-bottom:10px; text-transform:uppercase; text-shadow:0 0 5px rgba(255,215,0,0.3);">[[' .. item.title .. '|<span style="color:#ffd700;">' .. item.title .. '</span>]]</div>')
    table.insert(html_parts, '<div style="color:#cecece; font-size:1em; line-height:1.6;">' .. item.text .. '</div>')
    table.insert(html_parts, '</div>')
    
    -- Кнопка
    table.insert(html_parts, '<div style="text-align:right; margin-top:10px;">[[' .. item.title .. '|<span style="display:inline-block; padding:10px 20px; border:1px solid #ffd700; border-radius:5px; color:#ffd700; font-weight:bold; background:rgba(255,215,0,0.05);">ЧИТАТЬ ПОЛНОСТЬЮ >></span>]]</div>')
    table.insert(html_parts, '</div></div></div>')
    
    return table.concat(html_parts)
end

return p