Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Администрирование форума » Общие вопросы по администрированию (7)


Общие вопросы по администрированию (7)

Сообщений 541 страница 560 из 607

1

В этой теме задаём вопросы по администрированию форума

В этой теме администраторы форумов могут задавать различные вопросы по администрированию форума, которые не были затронуты в справочном разделе, а также делиться опытом управления форумом с другими администраторами, отвечая на их вопросы. Это могут быть вопросы, например, "в какие поля следует вставлять код конкретного скрипта", "как заблокировать подсеть пользователя на форуме", "как зарегистрировать домен и прикрепить его к форуму" и прочие подобные. В этой же теме вы также можете задавать вопросы по функциональности некоторых скриптов.

Для запросов новых скриптов и их модификаций, пожалуйста, пишите в теме Запросы по скриптам #11
Если у вас возникли вопросы по оформлению форума, их можете задать в теме Общие вопросы по оформлению (65) #2
У вас возникла непредвиденная проблема с форумом, но самостоятельно вы её решить не можете? Создайте тему в разделе Проблемы с форумом, ознакомившись с правилами раздела.

Важная информация перед тем, как задать вопрос:

  • Ответы в теме дают другие участники форума по собственному желанию.

  • Администрация не может гарантировать моментальное решение или абсолютную корректность каждого ответа.

  • Пожалуйста, уважайте чужое время и усилия других пользователей, старайтесь писать грамотно и доходчиво.

  • Грубое или требовательное отношение к участникам форума неприемлемо и может привести к отказу в помощи на всём форуме.

Подробно сформулируйте свой вопрос, чтобы повысить вероятность отклика помощи:

  • Укажите ссылку на форум: Если ваш вопрос касается конкретного форума, обязательно укажите прямую ссылку на него. Это позволит нам увидеть проблему и предложить наиболее точное решение, не тратя время на догадки.

  • Опишите свой вопрос: Подробно и понятно изложите, что именно вас интересует или какая проблема возникла. Чем больше деталей вы предоставите, тем легче будет понять и помочь.

Если на ваш вопрос долго нет ответа, пожалуйста, напомните о своём вопросе через разумное время (например, через сутки), процитировав его. Избегайте излишней навязчивости.

Отредактировано Alex_63 (Ср, 2 Авг 2017 13:16:07)

+1

541

with-smith
Нет, такой возможности нет. Но есть варианты, как восстановить через нас. Если совсем ничего не получится, посмотрю что можно вручную нашими средствами вытащить из бекапов.

+1

542

Alex_63
большое спасибо за оперативную помощь! сейчас будем пробовать.

Пост написан Пт, 12 Дек 2025 15:25:21

0

543

Alex_63
возвращаюсь к Вам с обратной связью.
Сделали два восстановления данных от 04.12 и от 20.11. Страницы не восстановились. Хотя, например, 2 декабря страницы еще были. Судя по журналу, парочку из них редактировали даже, но точно не удаляли.

https://upforme.ru/uploads/0000/14/1c/39529/837433.png

а по журналу кстати вот. последние удаленные страницы были аж в ноябре. те видно, что с нашей стороны не было какого-то массового удаления страниц в последнее время, да в целом даже разовых удалений страниц начиная с 17.11.

https://upforme.ru/uploads/0000/14/1c/39529/916174.png

Пост написан Пт, 12 Дек 2025 15:42:52

+1

544

with-smith
Принято, посмотрю что можно сделать, но быстро не обещаю. Сегодня уже вряд ли, скорее всего в ближайшие дни.

+1

545

Alex_63
большое спасибо! будем рады любой помощи с вашей стороны. потому что потеряли достаточно объемный пласт информации по каждому профилю. не думаю, что мы самостоятельно по истории наших тем сможем восстановить пользователям то, что они копили долгое время на своих страницах.

Пост написан Пт, 12 Дек 2025 15:47:34

0

546

Здравствуйте! Скажите, как можно отредактировать название темы?

Пост написан Вс, 14 Дек 2025 11:18:25

0

547

Berman написал(а):

Здравствуйте! Скажите, как можно отредактировать название темы?

Через редактирование первого поста.

+1

548

kolobdur74 написал(а):

Через редактирование первого поста.

Большое спасибо!

Пост написан Вс, 14 Дек 2025 11:25:46

+1

549

Добрый день!

У нас отвалились комментарии к плюсам на форуме.
Раньше случалось, что пропадали все комменты на странице репутации минут на 5, потом восстанавливались сами собой, бывало, что отправленный коммент к плюсу вообще не появлялся в общем списке комметов (но в платном уведомлении был отображен), но это все было разово и кратковременно. Сейчас комметы на странице рпепутации отсуствуют уже 4+ часов, а сам функционал отправки + с комментарием не рабоатет (вместо него проставляется + без комментария).
И еще "отвалился фонд форума" на тех аккаунтах, где он ранее был доступен
Помогите, пожалйуста. Вчера этих проблем не было

0

550

with-smith
Стали разбираться, почему страницы не восстанавливаются из резервной копии, с удивлением обнаружили, что на данный момент судя по всему данные страниц не записываются в резервные копии и соответственно оттуда не восстанавливаются, поскольку этой информации в резервной копии и нет. Похоже, что это побочный эффект от внутренних изменений в структурах данных форумов, произведённых ещё несколько лет назад, о котором видимо никто и не в курсе был. К сожалению, похоже, что утерянные страницы никак не восстановить. По какой причине они исчезли, тоже пока не могу сказать, у нас в логах такая же информация что и у вас в Администрирование - Журнал форума.

Added after 6 hours 2 minutes 6 seconds:
Касаемо возможности восстановления, похоже, я ошибся - судя по коду, данные в бекап должны попадать. Но вот чтобы они восстанавливались из него, этого в коде не нашёл. Соответственно, нужно пробовать вручную, но у меня нет прямого доступа к серверу с бекапами. Либо вносить исправления в процедуру восстановления. Мы постараемся что-то предпринять и сообщим вам о результате.

+1

551

4eshir
У вас на форуме используется стандартный функционал комментариев к репутации, предоставляемый партнёром Rusff. Мы по нему не оказываем поддержку, с этим думаю лучше обратиться на форум поддержки support.rusff.me.
Со своей стороны могу только предложить альтернативный вариант комментариев к репутации: Новые возможности: Комментарии к оценкам за сообщения

+1

552

Alex_63
Понял, спасибо. Потыкаю тогда русфф

0

553

Merlin777 написал(а):

Задача: создать Каталог раздела - в виде списка ссылок на все темы раздела.

Вопрос  по этому скрипту для создания авто-каталога всех тем, содержащихся в разделе.
Скрипт работает, каталог успешно создаётся.
Однако, нужна сортировка по алфавиту - по первому слову названия темы.
Тут выше было написано - возможные варианты сортировки: 'last_post','posted','num_views','num_replies','subject','posted:asc'
Я пробую 'subject' (вроде бы это и есть название темы) - но при таком выборе всё равно производится сортировка по дате создания темы:

Код:
fetch(`/api.php?method=topic.get&forum_id=${forumId}&limit=50&fields=id,subject&sort_by=subject&sort_dir=asc&charset=utf-8`)

При этом в настройках "Администрирование -- Форумы -- Редактировать -- Метод сортировки" - есть опция "По алфавиту", то есть функция предусмотрена движком. (Я проверял - она успешно работает).
Как же сделать сортировку по алфавиту?

Отредактировано Виплич (Пн, 15 Дек 2025 17:45:47)

0

554

Виплич
В api.php для тем нет сортировки по названию, только на странице форума.
Но если очень нужно, в принципе могу добавить.

0

555

Alex_63 написал(а):

В api.php для тем нет сортировки по названию, только на странице форума.
Но если очень нужно, в принципе могу добавить.

Да, нужно.
ChatGPT ещё такое предложил:

  • Клиентская сортировка (если API не работает): Если изменение не поможет, можно получить темы и отсортировать их на JS (меньше нагрузки на сервер, но требует загрузки всех тем<sup>1</sup>). Добавьте в блок .then(data => { после получения ответов:

  • Код:
    // Сортируем темы алфавитно по subject
    data.response.sort((a, b) => (a.subject || '').localeCompare(b.subject || ''));
    // Затем цикл forEach для отображения
  • <sup>1</sup>Увеличьте limit до большого числа (например, 1000), чтобы захватить все темы, иначе сортировка будет только для загруженных 50.

Отредактировано Виплич (Пн, 15 Дек 2025 19:01:37)

0

556

Виплич
Предложенный чатом вариант точно хуже. Сделал в движке, проверяйте. На этом форуме проверил, работает. Ваш запрос из сообщения выше - корректный.

+1

557

Alex_63 написал(а):

Сделал в движке, проверяйте.

Благодарю, работает. Но возник вопрос лимитом. У меня в разделе более 600 тем - а скрипт работает только если лимит 500. Установка большего лимита приводит к ошибке - и каталог не создаётся.

Лимит 500 (работает):

Код:
fetch(`/api.php?method=topic.get&forum_id=${forumId}&limit=500&fields=id,subject&sort_by=subject&sort_dir=asc&charset=utf-8`)

Если совсем убрать &limit=500 -- то не работает.

Отредактировано Виплич (Пн, 15 Дек 2025 19:50:14)

0

558

Виплич
Кроме limit есть параметр skip, установив его равным 500 - вторым запросом можно получить оставшиеся.

0

559

Alex_63 написал(а):

Кроме limit есть параметр skip, установив его равным 500 - вторым запросом можно получить оставшиеся.

П.С. Вас понял, щас у чата GPT спрошу.

Вот готовый код, кому надо. Проверил - работает. (Украшательства шрифтов удалены).

== Скрипт для создания каталога списка тем в разделе ==
Вставлять в HTML низ.
Вот в этой строке - указать нужные пары (ID поста;ID раздела):
const POSTS_AND_FORUMS = '30377;2,30379;5'; // < Укажите нужные пары
https://kuban.mybb.ru/viewtopic.php?id=977#p6161
здесь ID поста - это 6161
ID раздела бери прямо из ссылки на раздел:
https://kuban.mybb.ru/viewforum.php?id=8
тут это 8

Код:
<script>
document.addEventListener("DOMContentLoaded", () => {
  // === НАСТРОЙКИ ===
  // Формат: 'post_id;forum_id,post_id;forum_id,...'
  const POSTS_AND_FORUMS = '6161;8,6162;3'; // ← Укажите нужные пары
  // === /НАСТРОЙКИ ===
 
  // Карта для хранения названий разделов
  const forumNames = new Map();
 
  // Сначала получаем названия всех указанных разделов
  const forumIds = [...new Set(
    POSTS_AND_FORUMS.split(',')
      .map(pair => pair.trim().split(';')[1])
      .filter(id => id)
  )];
 
  if (forumIds.length === 0) return;
 
  const fields = 'id,name';
  const url = `/api.php?method=board.getForums&${new URLSearchParams({
    id: forumIds.join(','),
    fields,
    charset: 'utf-8'
  })}`;
 
  fetch(url)
    .then(response => response.json())
    .then(data => {
      if (!data?.response || !Array.isArray(data.response)) {
        console.warn("API board.getForums вернул пустой ответ");
        fallbackToStatic(); // резерв
        processPairs();
        return;
      }
 
      data.response.forEach(forum => {
        forumNames.set(String(forum.id), forum.name);
      });
 
      processPairs();
    })
    .catch(err => {
      console.error("Ошибка загрузки названий разделов:", err);
      fallbackToStatic();
      processPairs();
    });
 
  // --- ОСНОВНАЯ ЛОГИКА ЗАМЕНЫ ПОСТОВ ---
  function processPairs() {
    const pairs = POSTS_AND_FORUMS.split(',')
      .map(pair => {
        const [postId, forumId] = pair.trim().split(';');
        return { postId, forumId };
      });
 
    pairs.forEach(({ postId, forumId }) => {
      // Находим контейнер тела поста
      const postBody = document.getElementById(`p${postId}-content`);
      if (!postBody) {
        console.warn(`Пост #p${postId}-content не найден.`);
        return;
      }
 
      // Получаем название раздела
      let forumName = forumNames.get(forumId) || `Раздел ${forumId}`;
 
      // Очищаем всё содержимое и вставляем новый каталог
      postBody.innerHTML = '';
      postBody.insertAdjacentHTML('beforeend', `
        <div id="topic-catalog-${postId}">
          <h3>Темы в разделе: ${forumName}</h3>
          <ul id="topic-list-${postId}"></ul>
          <div id="loading-${postId}">Загрузка тем…</div>
        </div>
      `);
 
      const list = document.getElementById(`topic-list-${postId}`);
      const loading = document.getElementById(`loading-${postId}`);
 
      // Запрашиваем темы из нужного раздела через API с пагинацией и локальной сортировкой
      loadAllTopics(forumId)
        .then(allTopics => {
          // Сортируем все собранные темы локально по subject (алфавитно)
          allTopics.sort((a, b) => (a.subject || '').localeCompare(b.subject || ''));
 
          allTopics.forEach(topic => {
            const title = topic.subject || '[Без названия]';
            const link = `/viewtopic.php?id=${topic.id}`;
            const li = document.createElement('li');
            li.innerHTML = `<a href="${link}" target="_blank">${title}</a>`;
            list.appendChild(li);
          });
 
          loading.style.display = 'none';
        })
        .catch(err => {
          console.error(`Ошибка загрузки тем для поста ${postId}:`, err);
          loading.textContent = 'Не удалось загрузить темы.';
        });
    });
  }
 
  // Функция для загрузки всех тем с использованием пагинации (skip)
  function loadAllTopics(forumId) {
    return new Promise((resolve, reject) => {
      const batchSize = 500; // Максимальный лимит на запрос
      let skip = 0;
      let allTopics = [];
 
      const fetchBatch = () => {
        fetch(`/api.php?method=topic.get&forum_id=${forumId}&limit=${batchSize}&skip=${skip}&fields=id,subject&charset=utf-8`)
          .then(response => {
            if (!response.ok) throw new Error(`HTTP ${response.status}`);
            return response.json();
          })
          .then(data => {
            if (!data?.response || !Array.isArray(data.response)) {
              throw new Error("API вернул пустой или некорректный ответ");
            }
 
            allTopics = allTopics.concat(data.response);
 
            // Проверяем, есть ли ещё данные (если --------------------------------------- длина == batchSize, возможно, есть больше)
            if (data.response.length === batchSize) {
              skip += batchSize;
              fetchBatch(); // Продолжаем пагинацию
            } else {
              resolve(allTopics); // Все данные загружены
            }
          })
          .catch(reject);
      };
 
      fetchBatch(); // Начинаем с первой партии
    });
  }
});
</script>

Отредактировано Виплич (Пн, 15 Дек 2025 20:25:39)

0

560

Мысли вслух, не критика, просто захотелось порассуждать и углубиться:)

1) Сразу тянуть по 500 постов как-то слишком жирно, наверно :) Ещё и 5 запросов по 100 могут быть быстрее одного запроса на 500 по причине пакетной передачи и параллельного выполнения.

2) При глюках в API можно сделать ограниченные циклы дозагрузки. А там и fallbackToStatic пригодится:)

3) Можно ограничить максимальное количество обрабатываемых тем.

4) Удобный вывод например 1000+ тем это отдельный вопрос - может быть  вывод постранично; с группировкой по буквам; с бесконечной прокруткой+подгрузкой; упаковать отсортированное по буквам в спойлеры... в общем, как-то приделать интерфейс к длинному списку.

5) И главное, сортировка обычным localeCompare даёт список сначала по заглавным буквам, потом по строчным, ИМХО надо сортировать независимо от регистра и по правилам русской локали. И ещё темы могут, теоретически,  быть с цифрами и вообще состоять из одних цифр. По правилам Unicode цифры имеют приоритет перед буквами, и это обычно ОК.
Можно, конечно, придумать свою кастомную логику сортировки, но сочетание  независимости сортировки от регистра и правил Unicode по работе с цифрами - это вполне логичная система.

Поэтому строчку

allTopics.sort((a, b) => (a.subject || '').localeCompare(b.subject || ''));

можно заменить на

allTopics.sort((a, b) =>
  (a.subject || '').localeCompare(b.subject || '', 'ru', {
    sensitivity: 'base',
    numeric: true
  })
);

Отредактировано Merlin777 (Вт, 16 Дек 2025 01:19:13)

0


Вы здесь » Единый форум поддержки » Администрирование форума » Общие вопросы по администрированию (7)