• Разберем файл viewtopic_body.html на кусочки • 
Работаем только со стилем prosilver
При создании темы о вопросах для двигателя форумов phpBB ветки 3.0.Х название темы должно начинаться с короткого названия вопроса на русском языке с Большой буквы. Создание тем в данном подфоруме только не о модах. Темы о модах для ветки 3.0.Х в соседнем подфоруме. И помните - Вам тут никто ничего не должен. При малейшем "приказном" тоне в сообщениях - бан на вечно.

    Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 16:34

Работаем со стилем prosilver

Ни для кого не секрет, что все, что мы мудрим и правим на форуме в виде правок, модов, хаков и различных переделок, в большей степени касается именно того, что называется "Темы" (topic) и "Сообщения" (post).
А так как, за вывод на форуме этих двух штук отвечает один файл - viewtopic_body.html. Давайте попробуем разобраться в том, как он устроен и какие в нем штучки, в виде наборов буквочек и закорючек, за что отвечают....
Откроем стандартный файл viewtopic_body.html из дистрибутива форума и порезав его на кусочки, попробуем расписать назначение всех этих кусочков.
Открываем его, конечно, самым простым и понятным Блокнотом++ и с удивлением видим, что в нем все слишком сложно и не понятно.
Во-первых, в файле много цветных буквочек и они, странным образом, переплетаются в какую-то стройную структуру, которая на первый взгляд, кажется непонятной.
Но это только на первый взгляд. На самом деле все просто...
Во-вторых - все строчки в файле имеют какой-то непонятный порядок расположения. Хотя на самом деле (а вы об этом уже должны знать) - все тоже просто.

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 16:57

- Код блока функции "поиск по теме"
Код: выделить все
   <!-- IF S_DISPLAY_SEARCHBOX -->
      <div class="search-box">
         <form method="get" id="topic-search" action="{S_SEARCHBOX_ACTION}">
         <fieldset>
            <input class="inputbox search tiny"  type="text" name="keywords" id="search_keywords" size="20" value="{L_SEARCH_TOPIC}" onclick="if(this.value=='{LA_SEARCH_TOPIC}')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_TOPIC}';" />
            <input class="button2" type="submit" value="{L_SEARCH}" />
            {S_SEARCH_LOCAL_HIDDEN_FIELDS}
         </fieldset>
         </form>
      </div>
   <!-- ENDIF -->

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 16:58

- Код блока вывода количества сообщений в теме, количества страниц в теме и кнопочек перехода на другие страницы темы, если они есть (пагинация).
Код: выделить все
   <!-- IF PAGINATION or TOTAL_POSTS -->
      <div class="pagination">
         <!-- IF U_VIEW_UNREAD_POST and not S_IS_BOT --><a href="{U_VIEW_UNREAD_POST}">{L_VIEW_UNREAD_POST}</a> &bull; <!-- ENDIF -->{TOTAL_POSTS}
         <!-- IF PAGE_NUMBER --><!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF --><!-- ENDIF -->
      </div>
   <!-- ENDIF -

И все три эти кусочка составляют вот такую графическую картинку...

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 16:59

Код блока вывода созданного в теме опроса...отмечу особо - только вывода....
Код: выделить все
<!-- IF S_HAS_POLL -->
   <form method="post" action="{S_POLL_ACTION}">

   <div class="panel">
      <div class="inner"><span class="corners-top"><span></span></span>

      <div class="content">
         <h2>{POLL_QUESTION}</h2>
         <p class="author">{L_POLL_LENGTH}<!-- IF S_CAN_VOTE and L_POLL_LENGTH --><br /><!-- ENDIF --><!-- IF S_CAN_VOTE -->{L_MAX_VOTES}<!-- ENDIF --></p>

         <fieldset class="polls">
         <!-- BEGIN poll_option -->
            <dl class="<!-- IF poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF -->"<!-- IF poll_option.POLL_OPTION_VOTED --> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF -->>
               <dt><!-- IF S_CAN_VOTE --><label for="vote_{poll_option.POLL_OPTION_ID}">{poll_option.POLL_OPTION_CAPTION}</label><!-- ELSE -->{poll_option.POLL_OPTION_CAPTION}<!-- ENDIF --></dt>
               <!-- IF S_CAN_VOTE --><dd style="width: auto;"><!-- IF S_IS_MULTI_CHOICE --><input type="checkbox" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ELSE --><input type="radio" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}"<!-- IF poll_option.POLL_OPTION_VOTED --> checked="checked"<!-- ENDIF --> /><!-- ENDIF --></dd><!-- ENDIF -->
               <!-- IF S_DISPLAY_RESULTS --><dd class="resultbar"><div class="<!-- IF poll_option.POLL_OPTION_PCT < 20 -->pollbar1<!-- ELSEIF poll_option.POLL_OPTION_PCT < 40 -->pollbar2<!-- ELSEIF poll_option.POLL_OPTION_PCT < 60 -->pollbar3<!-- ELSEIF poll_option.POLL_OPTION_PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width:{poll_option.POLL_OPTION_PERCENT};">{poll_option.POLL_OPTION_RESULT}</div></dd>
               <dd><!-- IF poll_option.POLL_OPTION_RESULT == 0 -->{L_NO_VOTES}<!-- ELSE -->{poll_option.POLL_OPTION_PERCENT}<!-- ENDIF --></dd><!-- ENDIF -->
            </dl>
         <!-- END poll_option -->

         <!-- IF S_DISPLAY_RESULTS -->
            <dl>
               <dt>&nbsp;</dt>
               <dd class="resultbar">{L_TOTAL_VOTES} : {TOTAL_VOTES}</dd>
            </dl>
         <!-- ENDIF -->

         <!-- IF S_CAN_VOTE -->
            <dl style="border-top: none;">
               <dt>&nbsp;</dt>
               <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
            </dl>
         <!-- ENDIF -->

         <!-- IF not S_DISPLAY_RESULTS -->
            <dl style="border-top: none;">
               <dt>&nbsp;</dt>
               <dd class="resultbar"><a href="{U_VIEW_RESULTS}">{L_VIEW_RESULTS}</a></dd>
            </dl>
         <!-- ENDIF -->
         </fieldset>
      </div>
      <span class="corners-bottom"><span></span></span></div>
      {S_FORM_TOKEN}
      {S_HIDDEN_FIELDS}
   </div>
   </form>
   <hr />
<!-- ENDIF -->

Вот так он выглядит на ГУРУ...

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:01

С этого места в файле идут коды вывода самих сообщений в теме...

Код начала блока вывода сообщений...
Код: выделить все
<!-- BEGIN postrow -->
   <!-- IF postrow.S_FIRST_UNREAD --><a id="unread"></a><!-- ENDIF -->

Код, на котором заканчивается блок вывода сообщений -
Код: выделить все
      <span class="corners-bottom"><span></span></span></div>
   </div>

   <hr class="divider" />
<!-- END postrow -->

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:01

Теперь разберем на кусочки блок сообщений...Он состоит из трех частей -
1. Блок информации с названием темы (сообщения), автором и временем размещения данного сообщения.
2. Блок самого сообщения с содержимым сообщения, различной специнформации, с подписью автора данного сообщения, информацией о правке, информацией о вложениях.
3. Блок минипрофиля автора данного сообщения.

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:02

1. Блок информации с названием темы (сообщения), автором, временем размещения данного сообщения, информации о жалобе и премодерации.

Смотрим на все коды по порядку расположения их в файлеviewtopic_body.html

Код отвечает за порядок вывода информации в блоке сообщения...
Код: выделить все
   <div id="p{postrow.POST_ID}" class="post <!-- IF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF --><!-- IF postrow.S_UNREAD_POST --> unreadpost<!-- ENDIF --><!-- IF postrow.S_POST_REPORTED --> reported<!-- ENDIF --><!-- IF postrow.S_ONLINE and not postrow.S_IGNORE_POST --> online<!-- ENDIF -->">

Код, который закрывает сообщение в том случае, если вами автор сообщения добавлен в функцию "Игнор"....
Код: выделить все
      <div class="postbody">
         <!-- IF postrow.S_IGNORE_POST -->
            <div class="ignore">{postrow.L_IGNORE_POST}</div>
         <!-- ELSE -->

Код вывода кнопок управления сообщением...каждая кнопка под своими "особыми" правами...
Код: выделить все
      <!-- IF not S_IS_BOT -->
         <!-- IF postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE -->
            <ul class="profile-icons">
               <!-- IF postrow.U_EDIT --><li class="edit-icon"><a href="{postrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li><!-- ENDIF -->
               <!-- IF postrow.U_DELETE --><li class="delete-icon"><a href="{postrow.U_DELETE}" title="{L_DELETE_POST}"><span>{L_DELETE_POST}</span></a></li><!-- ENDIF -->
               <!-- IF postrow.U_REPORT --><li class="report-icon"><a href="{postrow.U_REPORT}" title="{L_REPORT_POST}"><span>{L_REPORT_POST}</span></a></li><!-- ENDIF -->
               <!-- IF postrow.U_WARN --><li class="warn-icon"><a href="{postrow.U_WARN}" title="{L_WARN_USER}"><span>{L_WARN_USER}</span></a></li><!-- ENDIF -->
               <!-- IF postrow.U_INFO --><li class="info-icon"><a href="{postrow.U_INFO}" title="{L_INFORMATION}"><span>{L_INFORMATION}</span></a></li><!-- ENDIF -->
               <!-- IF postrow.U_QUOTE --><li class="quote-icon"><a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>{L_REPLY_WITH_QUOTE}</span></a></li><!-- ENDIF -->
            </ul>
         <!-- ENDIF -->
      <!-- ENDIF -->

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:03

Код вывода иконок сообщения, если они назначены....
Код: выделить все
         <h3 <!-- IF postrow.S_FIRST_ROW -->class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" alt="" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>

Код вывода значка "смотрено -не смотрено", информации об авторе сообщения и времени его создания...
Код: выделить все
         <p class="author"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF -->{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> &raquo; {postrow.POST_DATE} </p>

Код вывода информации о том, что на сообщение отправлена жалоба, о том, что сообщение нуждается в премодерации модераторами форума...
Код: выделить все
         <!-- IF postrow.S_POST_UNAPPROVED or postrow.S_POST_REPORTED -->
            <p class="rules">
               <!-- IF postrow.S_POST_UNAPPROVED -->{UNAPPROVED_IMG} <a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_UNAPPROVED}</strong></a><br /><!-- ENDIF -->
               <!-- IF postrow.S_POST_REPORTED -->{REPORTED_IMG} <a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a><!-- ENDIF -->
            </p>
         <!-- ENDIF -->
Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:04

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

Это самое главное и самое интересное - код выборки из базы данных самих текстов сообщений...
Код: выделить все
         <div class="content">{postrow.MESSAGE}</div>

Код вывода информации о вложениях в сообщение...
Здесь выводится все - и название файла, и его просмотр, если это ИЗО, и добавочное описание к вложению автором...
Ну и это сообщение тоже здесь - У вас нет необходимых прав для просмотра вложений в этом сообщении
Код: выделить все
         <!-- IF postrow.S_HAS_ATTACHMENTS -->
            <dl class="attachbox">
               <dt>{L_ATTACHMENTS}</dt>
               <!-- BEGIN attachment -->
                  <dd>{postrow.attachment.DISPLAY_ATTACHMENT}</dd>
               <!-- END attachment -->
            </dl>
         <!-- ENDIF -->

         <!-- IF postrow.S_DISPLAY_NOTICE --><div class="rules">{L_DOWNLOAD_NOTICE}</div><!-- ENDIF -->

Код вывода информации о причине правки сообщения: кем, когда и сколько раз...
Код: выделить все
         <!-- IF postrow.S_DISPLAY_NOTICE --><div class="rules">{L_DOWNLOAD_NOTICE}</div><!-- ENDIF -->
         <!-- IF postrow.EDITED_MESSAGE or postrow.EDIT_REASON -->
            <div class="notice">{postrow.EDITED_MESSAGE}
               <!-- IF postrow.EDIT_REASON --><br /><strong>{L_REASON}:</strong> <em>{postrow.EDIT_REASON}</em><!-- ENDIF -->
            </div>
         <!-- ENDIF -->

         <!-- IF postrow.BUMPED_MESSAGE --><div class="notice"><br /><br />{postrow.BUMPED_MESSAGE}</div><!-- ENDIF -->

Код вывода подписей авторов сообщений, если подпись заполнена автором сообщения в его Личном центре....
Код: выделить все
         <!-- IF postrow.SIGNATURE --><div id="sig{postrow.POST_ID}" class="signature">{postrow.SIGNATURE}</div><!-- ENDIF -->

Часть первая и вторая может выглядеть у всех по разному.
Возможности управлять ее видом - не ограничены. Все зависит от желания и навыка.

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Разберем файл viewtopic_body.html на кусочки

Сообщение Разместил Pthelovod 06 янв 2018, 17:10

Несколько примеров вывода самих сообщений

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 
Предыдущая страница
Следующая страница

Вернуться в Вопросы и проблемы по движку phpBB версий до 3.0.Х