Что нового

Бесплатно Комментарии для статических страниц (DLE 19.1)

  • Автор темы Автор темы Ravshon
  • Дата начала Дата начала

Ravshon

Местный
Проверенные
Регистрация
2 Сен 2021
Сообщения
349
Реакции
694
1781014253331.png

Многие пользователи DLE часто сталкиваются с проблемой отсутствия возможности оставлять комментарии на статических страницах. Данный плагин решает эту проблему из коробки, не требуя сложных правок движка!

✨ Главные особенности плагина:

  • Полная изоляция данных: Комментарии со статических страниц надежно отделены от комментариев к обычным новостям.
  • Никакой путаницы: Ваши комментарии со статических страниц не будут засорять блок «Последние комментарии», страницу /index.php?do=lastcomments, а также не будут учитываться в счетчике комментариев в профиле пользователя.
  • Удобное управление: Для каждой статической страницы можно индивидуально включить или отключить возможность оставлять комментарии прямо при создании или редактировании страницы в админпанели.
  • Безопасность: Если вы решите удалить плагин, все комментарии останутся в базе данных в полной сохранности.
  • Настройка редактора: Возможность выбрать отдельный тип редактора (BBCODES / WYSIWYG) специально для комментариев на статических страницах в общих настройках скрипта.
⚙️ Установка и использование:
  1. Загрузите файл static_comments.xml через систему управления плагинами в админпанели DLE.
  2. В файле шаблона static.tpl добавьте теги вывода комментариев ({comments} и {addcomments}) в нужное вам место.
  3. Готово! Теперь при создании или редактировании статической страницы просто поставьте галочку "Разрешить комментарии".
  4. Код:
    [comments]
    <div class="comments-section">
       <h4 class="title">Комментарии:</h4>
       {comments}
       {navigation}
    </div>
    {addcomments}
    [/comments]
Версия DLE: 19.1 и выше
Автор: @Ravshon

1781014105347.png1781014143477.png1781014180040.png1781014244085.png

 
⚡️ Важное обновление: Интеграция с общими комментариями

По многочисленным просьбам функционал плагина был значительно расширен и улучшен!

В чем разница между старой и новой версией?

  • ❌ Раньше: Комментарии со статических страниц были строго изолированы и намеренно скрывались из глобальных списков (таких как последние комментарии, профиль пользователя и тег {customcomments}), чтобы избежать появления нерабочих битых ссылок вида 1000000.html.
  • ✅ Теперь: Комментарии со статических страниц полноценно интегрированы в общую экосистему сайта! Они выводятся в общих лентах комментариев вместе с обычными новостями. При этом плагин на лету подменяет стандартные ссылки движка — клик по заголовку комментария ведет не на ошибочную страницу новостей, а строго на правильный URL адрес самой статической страницы!
Теперь пользователи могут видеть активность на статических страницах в общей ленте без ущерба для SEO и структуры ссылок сайта.

UPD: 19:34 - Исправлено баг когда не разрешени комментария появился {addcomments} в статике!

 
Ни в коем случае не критикую — только то, что мой GPT просмотрел.

Вердикт: идея хорошая, реализация — только как прототип. На боевой DLE 20.0 я бы это не ставил без переписывания. ⚠️

Модуль делает простую и полезную вещь: добавляет комментарии к статическим страницам DLE через существующую таблицу _comments, подменяя post_id на static_id + 1000000. Но архитектурно это хак, а не production-ready модуль.

Что хорошего



  • Минимальный footprint: в архиве только static_comments.xml, без лишних файлов.
  • Использует DLE VFS, физически ядро не правит.
  • Идея интеграции с родным comments.tpl, addcomments.tpl, navigation.tpl правильная.
  • В админке статических страниц добавляется чекбокс «Разрешить комментарии».
  • Пытается подключить WYSIWYG/BBCode редактор и стандартный addcomments.php.

Критичные проблемы



1. Модуль не под текущий стандарт DLE 20.0



В XML стоит:

XML:
<dleversion>19.1</dleversion>
<versioncompare>==</versioncompare>

Модуль жёстко рассчитан только на DLE 19.1. Для текущего baseline это сразу красный флаг. На DLE 20.0 VFS-поиск по точным строкам может просто не примениться.

2. Bypass прав на добавление комментариев



Самый опасный момент:

PHP:
if( $is_logged ) {
    $user_group[$member_id['user_group']]['allow_addc'] = 1;
}

Это принудительно разрешает добавлять комментарии любому авторизованному пользователю, даже если в группе DLE комментарии запрещены.

Правильно: не менять $user_group, а читать реальные права группы и настройки сайта.

3. Хак с post_id = static_id + 1000000



PHP:
$news_id = $static_result['id'] + 1000000;

Быстро, но стратегически грязно. Если когда-нибудь ID новостей приблизятся к этому диапазону, появится риск коллизий. Даже если сейчас это маловероятно, архитектура должна быть fail-safe.

Лучше: отдельная таблица связки, отдельная таблица комментариев для static-контекста, либо явный context_type/context_id.

4. Счётчик комментариев будет рассинхронизироваться



Модуль увеличивает comm_num только в момент добавления:

SQL:
UPDATE _static SET comm_num=comm_num+1

Но удаление, модерация, approve/unapprove, массовые действия в админке комментариев — не закрыты. Итог: на статике счётчик легко станет неправильным.

5. SQL-миграции не идемпотентные



SQL:
ALTER TABLE `{prefix}_static` ADD `allow_comments` ...
ALTER TABLE `{prefix}_static` ADD `comm_num` ...

При повторной установке/обновлении будет ошибка «Duplicate column». При удалении — тоже риск, если колонка уже отсутствует.

Нужно: безопасные миграции через проверку существования колонок.

6. Слишком хрупкие VFS-правки



Модуль цепляется к точным строкам в:

  • engine/inc/static.php
  • engine/modules/static.php
  • engine/modules/addcomments.php
  • engine/inc/options.php
  • engine/modules/lastcomments.php
  • engine/classes/comments.class.php

Для DLE 20.0 это риск: любое отличие строки — операция не применится. Особенно опасны вмешательства в comments.class.php и addcomments.php.

7. addcomments.tpl парсится неполно



Модуль вручную обрабатывает часть тегов формы комментариев: captcha, recaptcha, question, not-logged, image-upload. Но DLE-шаблон комментариев поддерживает больше условий: подписки, guest-поля, социальные блоки, catlist/not-catlist и т.д.

На реальном шаблоне могут остаться «сырые» теги или сломаться форма.

Оценка



  • Идея: 8 / 10
  • Текущая реализация: 4 / 10
  • Пригодность как база для production: ⚠️ только концепт

Как сделать под наш стандарт



Оптимальный вариант — не чинить этот XML точечно, а собрать нормальный модуль с нуля.

Static Comments Native v1.0.0 — DLE 20.0 / PHP 8.2+

Архитектура:

  1. В таблицу _static добавить поля allow_comments и comm_num через идемпотентные миграции с проверкой существования колонок.
  2. Не ломать права групп — учитывать allow_addc, CAPTCHA/recaptcha/question, модерацию, гостевые комментарии.
  3. Убрать принудительный bypass прав:
    PHP:
    $user_group[$member_id['user_group']]['allow_addc'] = 1;
  4. Сделать безопасный namespace для static-комментариев: либо отдельная таблица dle_static_comments, либо системный адаптер к _comments с жёсткой защитой от коллизий.
  5. Закрыть lifecycle: удаление статической страницы → очистка комментариев, пересчёт comm_num, очистка orphan-записей, кнопка пересчёта в админке.
  6. Добавить README и plugin.xml notice: строки подключения, совместимость, ограничения, быстрый тест, rollback.

Финальное решение



Адаптировать этот модуль «как есть» — не рекомендуется. Правильный бизнес-ход — взять идею и переписать под текущий baseline. Тогда получим не костыль «комментарии к статике», а нормальный DLE 20.0-модуль, который можно дальше расширять: рейтинг комментариев, AI-ответы, уведомления, SEO-блоки, последние комментарии по статике.
 
Последнее редактирование:
Битва ИИ разработок

giphy.gif



Отформатируй сообщение как следует. Инче придётся придумать правила по копипасту
 
DEL)))
 
Последнее редактирование:
Ни в коем случаии вас не критикую только то что мой ГПТ просмотрел:


Вердикт: **идея хорошая, реализация — только как прототип. На боевой DLE 20.0 я бы это не ставил без переписывания.** ⚠️

Модуль делает простую и полезную вещь: добавляет комментарии к статическим страницам DLE через существующую таблицу `_comments`, подменяя `post_id` на `static_id + 1000000`. Но архитектурно это хак, а не production-ready модуль.

## Что хорошего

✅ Минимальный footprint: в архиве только `static_comments.xml`, без лишних файлов.
✅ Использует DLE VFS, физически ядро не правит.
✅ Идея интеграции с родным `comments.tpl`, `addcomments.tpl`, `navigation.tpl` правильная.
✅ В админке статических страниц добавляется чекбокс “Разрешить комментарии”.
✅ Пытается подключить WYSIWYG/BBCode редактор и стандартный `addcomments.php`.

## Критичные проблемы

### 1. Модуль не под наш текущий стандарт DLE 20.0

В XML стоит:

```xml
<dleversion>19.1</dleversion>
<versioncompare>==</versioncompare>
```

То есть модуль жёстко рассчитан **только на DLE 19.1**. Для нашего текущего baseline это сразу красный флаг. На DLE 20.0 VFS-поиск по точным строкам может просто не примениться.

### 2. Есть bypass прав на добавление комментариев

Самый опасный момент:

```php
if( $is_logged ) {
$user_group[$member_id['user_group']]['allow_addc'] = 1;
}
```

Это принудительно разрешает добавлять комментарии любому авторизованному пользователю, даже если в группе DLE комментарии запрещены. Это нельзя оставлять.

Правильно: **не менять `$user_group`**, а читать реальные права группы и настройки сайта.

### 3. Хак с `post_id = static_id + 1000000`

```php
$news_id = $static_result['id'] + 1000000;
```

Это быстро, но стратегически грязно. Если когда-нибудь ID новостей приблизятся к этому диапазону, появится риск коллизий. Даже если сейчас это маловероятно, архитектура должна быть fail-safe.

Лучше: отдельная таблица связки или отдельная таблица комментариев для static-контекста, либо явный `context_type/context_id`, если переписывать системно.

### 4. Счётчик комментариев будет рассинхронизироваться

Модуль увеличивает `comm_num` только в момент добавления:

```php
UPDATE _static SET comm_num=comm_num+1
```

Но удаление, модерация, approve/unapprove, массовые действия в админке комментариев — не закрыты. Итог: на статике счётчик легко станет неправильным.

### 5. SQL-миграции не идемпотентные

```sql
ALTER TABLE `{prefix}_static` ADD `allow_comments` ...
ALTER TABLE `{prefix}_static` ADD `comm_num` ...
```

При повторной установке/обновлении будет ошибка “Duplicate column”. При удалении — тоже риск, если колонка уже отсутствует.

Нужно делать безопасные миграции через проверку существования колонок.

### 6. Слишком хрупкие VFS-правки

Модуль цепляется к точным строкам в:

```text
engine/inc/static.php
engine/modules/static.php
engine/modules/addcomments.php
engine/inc/options.php
engine/modules/lastcomments.php
engine/classes/comments.class.php
```

Для DLE 20.0 это риск. Любое отличие строки — операция не применится. Особенно опасны вмешательства в `comments.class.php` и `addcomments.php`.

### 7. `addcomments.tpl` парсится неполно

Модуль вручную обрабатывает часть тегов формы комментариев: captcha, recaptcha, question, not-logged, image-upload. Но DLE-шаблон комментариев поддерживает больше условий: подписки, guest-поля, социальные блоки, catlist/not-catlist и т.д.

На реальном шаблоне могут остаться “сырые” теги или сломаться форма.

## Моя оценка

Как идея: **8/10**.
Как текущая реализация: **4/10**.
Как база для нашего production-модуля: **можно использовать только концепт, код лучше переписать.**

## Как бы я сделал под наш стандарт

Оптимальный вариант — не чинить этот XML точечно, а собрать нормальный модуль:

**Static Comments Native v1.0.0 — DLE 20.0 / PHP 8.2+**

Архитектура:

1. В `_static` добавить:
- `allow_comments`
- `comm_num`

2. Все миграции сделать идемпотентными.

3. Не ломать права групп:
- учитывать `allow_addc`
- учитывать CAPTCHA/recaptcha/question
- учитывать модерацию
- учитывать гостевые комментарии

4. Убрать принудительное:
```php
$user_group[$member_id['user_group']]['allow_addc'] = 1;
```

5. Сделать безопасный namespace для static-комментариев:
- либо отдельная таблица `dle_static_comments`
- либо системный адаптер к `_comments`, но с жёсткой защитой от коллизий.

6. Закрыть lifecycle:
- удаление статической страницы → очистка/архивация комментариев
- пересчёт `comm_num`
- очистка orphan-комментариев
- кнопка пересчёта в админке

7. Добавить README и `plugin.xml` notice:
- строки подключения
- совместимость
- ограничения
- быстрый тест
- rollback

## Финальное решение

Я бы **не адаптировал этот модуль “как есть”**. Правильный бизнес-ход — взять идею и переписать под наш baseline. Тогда получим не костыль “комментарии к статике”, а нормальный DLE 20.0-модуль, который можно дальше расширять: рейтинг комментариев, AI-ответы, уведомления, SEO-блоки, последние комментарии по статике.
Когда сможешь почини Пж) Потому что это было проста просба) я не хотел 10-20 час коворятся)
 
ПРОСБА НЕ СКАЧАЙТЕ 1-2 Сообщениях там ошибками добавлено! ИЗВИНИТЕ ЗА ЭТОТ!
Я не мог изменит 1-2 сообщения по этому поставлю самий последний версия здес!

Код:
[allow-static-comments] текст [/allow-static-comments]
Позволяет выводить содержимое, заключённое в тег, только на статических страницах с разрешёнными комментариями.

[not-allow-static-comments] текст [/not-allow-static-comments]
Позволяет выводить содержимое, заключённое в тег, только на статических страницах с отключёнными комментариями.
Обновлено файл уже исправленный спасибо @Oleksii Panchenko за Вердикт!

 
Только DLE 20.0 (в 19.1 другая строка подключения))
php 8.2+
В последних коментариях тоже выводить и правельно формируеться!
Счетчик тоже адекватный!
Добавил архив версию 1.0.7 поправлено цитирование!
 

Вложения

  • QuotifyMe_96037.png
    QuotifyMe_96037.png
    146.3 КБ · Просмотры: 16
  • QuotifyMe_49738.png
    QuotifyMe_49738.png
    153.5 КБ · Просмотры: 16
  • static_comments_native_v1_0_7_dle20.zip
    static_comments_native_v1_0_7_dle20.zip
    18.5 КБ · Просмотры: 5
Последнее редактирование:
Только DLE 20.0 (в 19.1 другая строка подключения))
php 8.2+
В последних коментариях тоже выводить и правельно формируеться!
Счетчик тоже адекватный!
Добавил архив версию 1.0.7 поправлено цитирование!
че я туплю какой код скрыть стили для комментария, если статическая страница не разрешено комментария.

как тут как пример
[allow-static-comments] текст [/allow-static-comments]<br>Позволяет выводить содержимое, заключённое в тег, только на статических страницах с разрешёнными комментариями.
 
че я туплю какой код скрыть стили для комментария, если статическая страница не разрешено комментария.

как тут как пример
[allow-static-comments] текст [/allow-static-comments]<br>Позволяет выводить содержимое, заключённое в тег, только на статических страницах с разрешёнными комментариями.
Моей версиях ест
[comments]
[not-comments]
[allow-static-comments]
[not-allow-static-comments]
 
Теперь можно использовать в static.tpl:
Tpl
[allow-static-comments]
<div id="comment" class="static-comments-block">
<h3>Комментарии: {comments-num}</h3>
{comments}
{navigation}
{addcomments}
</div>
[/allow-static-comments]

[not-allow-static-comments]
<div class="static-comments-disabled">
Комментарии для этой страницы отключены.
</div>
[/not-allow-static-comments]
 

Вложения

Верх