Модуль:RandomArticle
Материал из AbduloverA.com
Для документации этого модуля может быть создана страница Модуль: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"
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:Zekton;">')
-- Заголовок
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;">')
-- Левая колонка (Картинка)
-- ИСПРАВЛЕНИЕ: Добавлено padding:10px, чтобы картинка не липла к краям
-- ИСПРАВЛЕНИЕ: height: auto, но min-height для баланса
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:300px; padding:10px;">')
-- ВСТАВКА КАРТИНКИ
-- ИСПРАВЛЕНИЕ: Используем размер "350x350px". Это "Bounding Box".
-- Картинка ужмется так, чтобы влезть в этот квадрат, не обрезаясь.
table.insert(html_parts, '[[Файл:' .. image .. '|frameless|center|350x350px|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