Здравствуйте, подскажите пожалуйста, как сделать BBCode spoiler когда при нажатии на кнопку в панели ббкодов, будет выводится диалоговое окно с предложением ввести заголовок для этого спойлера(можно отменить и не писать, тогда будет отображаться стандартный текст: Скрытый текст).
К примеру имеется такой код спойлера:

Код: Выделить всё

[spoiler={TEXT1;optional}]{TEXT2}[/spoiler]

Код: Выделить всё

<div style="margin: 8px auto; border: 1px solid #C3CBD1; border-left-width: 2px">
   <div style="background: #E9E9E6; height: 19px; font-size: 0.9em; font-weight: bold; cursor: pointer" onclick="hidn = this.parentNode.getElementsByTagName('div')[1]; btn = this.getElementsByTagName('img')[0]; if (hidn.style.display != '') { hidn.style.display = ''; orimg = btn.src; btn.src = 'data:image/gif;base64,R0lGODlhCQAJAMQeAOLt+ff8//z+/4CRxo2by7vF6a254X6PxICQw87a74CQxuXo84CQxM/b7/H6/v7+/oGRxouayoGSxv7+/8LN7IqZyv7//4KSxur0/MrV74OTx9Ld8trl9gwMDP///wAAACH5BAEAAB4ALAAAAAAJAAkAAAU4oFcpwzFAkWgUVLZxCQGxLgdgGtS+t6NJmY5QOEFcNo/kZGLRXGwYR0DQjDSiU8uCIJJIGJdLKgQAOw=='; } else { hidn.style.display = 'none'; btn.src = orimg; }">
      <img style="margin: 0; padding: 0 5px 0" src="data:image/gif;base64,R0lGODlhCQAJAMQfAIqZyoGSxv3+/trl84CQxYCRxn6PxMXQ7efq9H+Pwtnk8oKTxoCQxKy44QAAANvl9rvG6fD5/o2by4GRxvb8//v9//7+/ubw+v39/ouayoKSxoOTx/7+/wwMDP///////yH5BAEAAB8ALAAAAAAJAAkAAAU84AdoGkNmX4Z4HldRirSxXMdF1zK7nXU9mk2t4+h0BIlNhWPpYTCBDQXXwRwggczgJ8BAGhLRZGIoEFAhADs=" />
      {TEXT1}
   </div>
   <div style="display: none; background: #F5F5F5; border-top: 1px solid #C3CBD1; padding: 6px">
      {TEXT2}
   </div>
</div>
Добрый день.
Можно ли создать расширение, а точнее оформить уже рабочие скрипты в расширение что бы не править файлы в ручную ?
Смысл расширения в том, что при обнаружении у пользователя, зашедшего на форум с включённым VPN реклама адсенс блокируется.
Сейчас всё это работает таким способом -

VPN проверяется только раз в 5 минут на пользователя, что значительно экономит API-запросы! 🚀
В корне сайта ( public_html или /var/www/html/ ), создаём папку: vpn_storage
Назначаем ей права записи: 777

В эту папку будут записываться файлы кеширования.

В корне форума так же создаём файл check_vpn.php:

Код: Выделить всё

<?php
header('Content-Type: application/json');

$api_key = '****************'; // Вставьте ваш API-ключ
$user_ip = $_SERVER['REMOTE_ADDR']; // Получаем IP пользователя
$cache_dir = __DIR__ . "/vpn_storage/";
if (!file_exists($cache_dir)) {
    mkdir($cache_dir, 0777, true);
}
$cache_file = $cache_dir . "cache_vpn_{$user_ip}.json";

$cache_time = 300; // 5 минут (300 секунд)

// Если есть кэш и он не устарел, возвращаем данные из него
if (file_exists($cache_file) && (time() - filemtime($cache_file) < $cache_time)) {
    echo file_get_contents($cache_file);
    exit;
}

// Запрашиваем данные с vpnapi.io
$api_url = "https://vpnapi.io/api/{$user_ip}?key={$api_key}";
$response = file_get_contents($api_url);
$data = json_decode($response, true);

// Проверяем, является ли IP VPN
$is_vpn = $data['security']['vpn'] ?? false;

// Сохраняем результат в кэш
$cache_data = json_encode(['vpn' => $is_vpn]);
file_put_contents($cache_file, $cache_data);

// Отправляем ответ
echo $cache_data;
?>
Скрипт для вставки перед закрывающим тегом </body> в overall_footer.html форума -

Код: Выделить всё

<script>
(function() {
    const CHECK_INTERVAL = 5 * 60 * 1000; // Кэш на 5 минут
    const now = Date.now();
    const cachedData = sessionStorage.getItem("vpnCheckResult");
    const cachedTime = sessionStorage.getItem("vpnCheckTime");

    if (cachedData && cachedTime && now - parseInt(cachedTime) < CHECK_INTERVAL) {
        console.log("Читаем кэш:", cachedData);
        handleVPNCheck(JSON.parse(cachedData));
    } else {
        fetch("https://ваш сайт.com/check_vpn.php")  // Вставляем адрес нашего сайта
            .then(response => response.json())
            .then(data => {
                sessionStorage.setItem("vpnCheckResult", JSON.stringify(data));
                sessionStorage.setItem("vpnCheckTime", now.toString());
                console.log("VPN проверен:", data);
                handleVPNCheck(data);
            })
            .catch(error => console.error("Ошибка VPN:", error));
    }

    function handleVPNCheck(data) {
        if (data.vpn) {
            console.log("VPN обнаружен! Блокируем рекламу.");

            // Останавливаем загрузку AdSense
            window.adsbygoogle = window.adsbygoogle || [];
            window.adsbygoogle.push = function() {};

            // Удаляем уже загруженные рекламные блоки
            document.querySelectorAll("script[src*='adsbygoogle.js']").forEach(el => el.remove());
            document.querySelectorAll("ins.adsbygoogle").forEach(el => el.remove());

            // Блокируем дальнейшее добавление рекламы
            const observer = new MutationObserver(() => {
                document.querySelectorAll("ins.adsbygoogle").forEach(el => el.remove());
            });
            observer.observe(document.body, { childList: true, subtree: true });

            console.log("AdSense заблокирован.");
        } else {
            console.log("VPN не найден, реклама остаётся.");
        }
    }
})();
</script>
Всё это работает через апи запросы к сайту vpnapi.io
Поэтому в админке, в настройках расширения нужно только одно поле где надо вставить этот самый API Key.

Всё это создавалось с помощью чат жпт, и тестировалось в течении нескольких дней. Работоспособность удовлетворительная.
Разговоры о том, что мол так попроси пускай он тебе и расширение напишет, не рассматриваются. Я пробовал. Для этого у нас на двоих мало ума.
southklad southklad 16 янв 2025, 12:35

RH Topic Tags

Название расширения: RH Topic Tags
Автор: combuster
Описание расширения: Расширение добавляет возможность помечать темы с ключевыми словами.
Добавлять ключевые слова можно только при размещении новой темы или при редактировании первого сообщения.
Так же есть облако тегов, белый и чёрный списки тегов.
Скачать: https://www.phpbb.com/customise/db/exte ... opic_tags/
Репозиторий на GitHub https://github.com/RobertHeim/phpbb-ext-topictags
Язык: EN RU ES

Установка:
Скопировать содержимое архива в ext/robertheim/topictags/

Перейти в ACP -> вкладка Настройка -> Управление расширениями -> Включить

Так же надо перейти во вкладку прав доступа, права администратора, разное, Может редактировать RH topic tags -да.

По умолчанию расширение не понимает буквы русского языка. Заходим в админку, настройка расширений, RH TOPIC TAGS, настройки, Настройки тегов и в поле - Регулярное выражение для разрешенных тегов: ставим это :

Код: Выделить всё

/^[\- a-zячсмитьбюэждлорпавыфйцукенгшщзхъёЯЧСМИТЬБЮЭЖДЛОРПАВЫФЙЦУКЕНГШЩЗХЁ0-9+]{3,30}$/i
Такой вопрос по данному расширению, как на страницы с тегами добавить количество просмотров этой страницы?
Приветствую, может попадалось кому-нибудь такое расширение, по типу Поднять тему, только чтобы можно было поднимать только админам и чтобы появлялась или надпись или иконка везде, что тема обновлена?

Пытался реализовать без расширения вот таким способом, но он оказался не рабочим, надпись выводилась постоянно

Код: Выделить всё

<div class="topic-header"><!-- EVENT viewtopic_topic_title_prepend --> {IF_BUMPED}<span class="bumped-button">Тема обновлена</span><h2 class="topic-title"><a href="{U_VIEW_TOPIC}">{TOPIC_TITLE}</a></h2><!-- EVENT viewtopic_topic_title_append --></div>
Как сделать такую кнопку, чтобы при редактировании или просто нажать на нужную тему и перед ее названием появлялась кнопка с надписью Тема обновлена?
Питер Питер 06 янв 2025, 14:54

Две колонки

http://impossible-crimes.ru/Forum/alphabet1.php
34 строки
Как (по проще) разделить эту инфу на две равные колонки? В данном случае по 17 строк. То есть начиная с Альвтеген, Карин и далее — вторая колонка
Добрый день.

Можно ли создать расширение с функцией, которое разрешало пользователю скачивать файл только после того, как зарегистрированный участник форума нажал спасибо ? Или допилить уже существующее расширение Thanks for posts.
Добавив к адресу "сайт.ру/любой текст" откроется

несуществующая страница и в title каждой такой страницы будет надпись " Информацыя - "

как сделать чтоб в место слова "информацыя "

в title было название несуществующей страницы

например как в тегах
Помогите не знаю как убрать рамки по бокам в гугле не нашол phpbb 3.3.12

Изображение