Forums / National / Russian / Модули и плагины / Private Messages (PM) - модуль из коробки

Модуль общения пользователей сайта через систему отправки сообщений - обсуждаем здесь!

webitproff
#1 2023-02-18 10:51

Private Messages (PM) - модуль из коробки.

Дабы не плодить новые темы, которых появилось предостаточно, с целью собрать всё в одном месте, что касается модуля общения пользователей сайта через систему отправки сообщений, пожалуйста обсуждаем здесь.

Каждому будеть проще вернуться в эту тему к своим сообщениям, сообщением других пользователей, задать новые или поделиться опытом.

Для новичков, для представления о модуле, несколько скриншотов (нажмите, чтобы увеличить):

1. Страница основных настроек модуля

2. Страница списка сообщений - входящие, отправленные...

3. Страница полученного нового сообщения

4. Форма ответа на сообщение

5. История сообщений

6. Форма создания нового сообщения

PS на скриншотах верстка не из коробки движка

 

Немного информации для начичнающих осваивать движок Cotonti:
1. В админке модуль находится в разделе расширений, в списке модулей под именем "Private Messages".
2. Спокойно жмем кнопку "Установить".
3. Затем кнопку "Конфигурация", где настройки можно заполнить как на скриншоте выше в этой теме.
4. На этом всё. Не нужно настраивать "Права", что-то приостанавливать и прочее.
Установка и настройки завершенны!

ПС: для кого-это эти шаги очевидны, а кто-то может расстеряется. так что лишним не будет.

 

 

Кастомизация, то есть настройка и изменение внешнего вида шаблонов

(файлов с раширением .tpl) под конкретные запросы.
Прежде всего нужно знать код расширения в системе, буд-то это плагин или модуль.
Код расширения всегда можно увидеть в админке как в списке расширений, так и на странице расширения.
Код модуля PM (Личные сообщения) - "pm".
Теперь по-порядку:
1. Модуль находится в корне сайта "/modules/pm". Важно! Ни в этой папке, ни в любой другой, не стоить делать каких-либо изменений, в противном случае при обновлении движка, вы потеряете прогресс и результаты своей работы. Это ограничение в Cotonti снимается простейшим образом и кроме этого предоставляет широкие возможности для внедрения ваших идей. Как это делается расмотрим дальше, главное последовательно.
2. Скин (тема) вашего сайта находится по адресу themes/myskin*/.
*myskin - это название темы вашего сайта, в коробке это "nemesis".
Если в папке вашей темы нет папки "modules" то создаем её! и получим, например по итогу такое themes/myskin/modules - это папка для кастомизации модулей движка Cotonti.
3. Вот и дошли к моменту, почему важно знать код расширения, в данном случае модуля PM (Личные сообщения) - "pm". Если код "pm" то с таким же названием создаем здесь папку, и получим папку для "своих" шаблонов модуля "themes/myskin/modules/pm". Такого вида, но под своим кодом расширения организовывается кастомизация и всех других модулей.
4. В эту папку копируем шаблоны модуля, которые будем изменять. Где их взять?
Базовые, или лучше сказать исходные шаблоны расширений, преимущественно всегда находятся в папке раширения, в папке "tpl", - у нас это modules/pm/tpl . Теперь всё из этой папки, копируем в папку для кастомизации шаблонов модуля "themes/myskin/modules/pm".
5. Получаем список шаблонов в папке:
- pm.send.tpl - это шаблон отправки, то есть создания нового сообщения.
- pm.list.tpl - это шаблон списков сообщений: входящие, отправленные и т.д.
- pm.message.tpl - шаблон входящего сообщения, в котором форма ответа и история переписки.

Для редактирования шаблонов достаточно редактора кода "Notepad++" и FTP-клиента, например "FileZilla" для доступа к файлам сайта на хостинге(сервере).

 

Добавлено 3 недели спустя:

сообщения если есть

    <!-- IF {PHP.cot_modules.pm} -->
    <li class="nav-item">
      <a data-bs-toggle="tooltip" data-bs-title="{PHP.L.Private_Messages}" href="{PHP|cot_url('pm')}" class="nav-link text-light 
				<!-- IF !{PHP.m} -->active 
				<!-- ENDIF--> d-flex align-items-center">
        <i class="fa-solid fa-envelope-open-text fs-3 flex-shrink-0 text-primary"></i>
        <span class="flex-grow-1 d-inline-block"></span>
        <!-- IF {PHP.usr.messages} -->
        <span class="badge badge-danger navbar-badge">{PHP.usr.messages}</span>
        <!-- ELSE -->
        <span class="badge badge-secondary navbar-badge">0</span>
        <!-- ENDIF-->
      </a>
    </li>
    <!-- ENDIF-->

Добавлено 5 минут спустя:

на у если Вы админ, можно еще так

            <ul class="navbar-nav ms-auto d-flex align-items-lg-center mb-lg-0 profile-menu">
              <!-- IF {PHP.out.notices} OR {PHP.cot_modules.pm} > 0 -->
              <li class="nav-item dropdown dropdown-hover">
                <a class="nav-link link-light opacity-10" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                  <!-- IF {PHP.out.notices} OR {PHP.usr.messages} > 0 -->
                  <span class="fs-4 text-primary" data-bs-toggle="tooltip" data-bs-title="{PHP.L.header_notices_yes}">
                    <i class="fa-solid fa-circle-exclamation"></i>
                  </span>
                  <span class="d-lg-none">{PHP.L.header_notices_yes}</span>
                  <!-- ELSE -->
                  <span class="fs-4 text-muted" data-bs-toggle="tooltip" data-bs-title="{PHP.L.header_notices_no}">
                    <i class="fa-solid fa-circle-exclamation"></i>
                  </span>
                  <span class="d-lg-none">{PHP.L.header_notices_no}</span>
                  <!-- ENDIF -->
                </a>
                <ul class="dropdown-menu dropdown-menu-end">
                  <!-- IF {PHP.out.notices} -->
                  <li id="notices">{HEADER_NOTICES}</li>
                  <!-- ENDIF -->
                  <!-- IF {HEADER_USER_PMREMINDER} -->
                  <li class="dropdown-item">
                    <i class="fa-regular fa-envelope me-2"></i> {HEADER_USER_PMREMINDER}
                  </li>
                  <!-- ENDIF -->
                  <!-- IF {EVENTS_HEADER} -->
                  <li class="dropdown-item">{EVENTS_HEADER}</li>
                  <!-- ENDIF -->
                </ul>
              </li>
              <!-- ENDIF -->
            </ul>

так и ЛС и если страница например на модерацию/утверждение пришла

 

 

Добавлено 1 минута спустя:

и самое простейшее

themes/YourSkin/header.tpl :
{HEADER_USER_PMS} 
{HEADER_USER_PMREMINDER} 

 

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-03-27 08:51, 11 months ago)
Kabak
#2 2023-03-27 08:58

Что это за тэги  можно здесь расписать.  Благодарю

{PHP.out.notices}    =  ?  

{PHP.usr.messages}      =   есть непрочитанные сообщения 

{PHP.L.header_notices_yes}  =  ?

{PHP.L.header_notices_no}   = ?

webitproff
#3 2023-03-27 09:14

уже неднократно писал про то как получить доступные теги, в нужном месте своих шаблонов прописываем {PHP|dump}

и получим не только эти теги:

{PHP.out.notices} => "<span class="dropdown"></span><ul class="list-unstyled"><li class="item"><a class="dropdown-item" href="admin/other?p=contact" title="2 контакт-сообщения">2 контакт-сообщения</a></li><li class="item"><a class="dropdown-item" href="admin/page" title="1 неутвержденная страница">1 неутвержденная страница</a></li></ul>"

{PHP.out.pmreminder} => "<a href="pm">2 новых сообщения</a>"

{PHP.out.pms} => "<a href="pm">Личные сообщения</a>"

в свои файлы локализации
themes/MySkin/MySkin.ru.lang.php
добавить

$L['header_notices_yes'] = 'Есть новые уведомления';
$L['header_notices_no'] = 'Новых уведомлений нет';

 и будет
 
{PHP.L.header_notices_no} => "Новых уведомлений нет"
{PHP.L.header_notices_yes} => "Есть новые уведомления"

 также станет полезным по тегам

источник -1

источник-2

и еще по шаблонам TPL источник-3

аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-03-27 09:29, 11 months ago)
Kabak
#4 2023-03-27 09:53

{PHP.L.header_notices_yes}   {PHP.L.header_notices_no}      они всегда пусты.   по факту у меня только  {PHP.usr.messages}   имеет 0 если нет сообщений  или 1  если есть новое сообщение

Добавлено 2 минуты спустя:

{PHP|dump}  - БЛАГОДАРЮ ! 

webitproff
#5 2023-03-27 09:57
#46188 Kabak:

{PHP.L.header_notices_yes}   {PHP.L.header_notices_no}      они всегда пусты.

вот спешите )))

там же написано

в свои файлы локализации
themes/MySkin/MySkin.ru.lang.php
добавить
 
$L['header_notices_yes'] = 'Есть новые уведомления';
$L['header_notices_no'] = 'Новых уведомлений нет';
аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kabak
#6 2023-03-27 12:13

А зачем их добавлять , если в движке есть {PHP.usr.messages}  ?

 

этого тега достаточно, чтобы оповестить о новых сообщениях

webitproff
#7 2023-03-27 12:49
#46190 Kabak:

А зачем их добавлять , если в движке есть {PHP.usr.messages}  ?

 

этого тега достаточно, чтобы оповестить о новых сообщениях

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

Добавлено 1 минута спустя:

хоть не пиши тут ничего вовсе и не давай примеров, еще недоумком сделают ...indecision

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kabak
#8 2023-03-27 12:53

Как отвязать отпарвку личный сообщений от отправки сообщений по почте ?   Мне нужно, чтобы личные сообщения отправлялись, но ничего не отправлялось на почту пользователя которому отправили личное сообщение

webitproff
#9 2023-03-27 13:26
#46193 Kabak:

Как отвязать отпарвку личный сообщений от отправки сообщений по почте ?   Мне нужно, чтобы личные сообщения отправлялись, но ничего не отправлялось на почту пользователя которому отправили личное сообщение

так кроме уведомления о новом сообщении и не отправляется ничего

admin/config?n=edit&o=module&p=pm

Отсылать на пользовательский e-mail уведомления о поступивших личных сообщениях
да / нет
аккаунт удален - не срослось с разработчиками
ушел на другой движок
This post was edited by webitproff (2023-03-27 13:35, 11 months ago)
Kabak
#10 2023-03-27 16:20
#46192 webitproff:
#46190 Kabak:

А зачем их добавлять , если в движке есть {PHP.usr.messages}  ?

 

этого тега достаточно, чтобы оповестить о новых сообщениях

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

Добавлено 1 минута спустя:

хоть не пиши тут ничего вовсе и не давай примеров, еще недоумком сделают ...indecision

Я благодарен вам за пример, но я не знаю движка и тегов так, как знаете движок вы..  Поэтому ваша подсказка для кода , чтобы подсветились все тэги  просто бомба для меня !