• Что это такое phpBB и с чем его едят? php, HTML, CSS • 
Форум phpBB3 содержит верхний колонтитул
При создании темы о вопросах для двигателя форумов phpBB ветки 3.0.Х название темы должно начинаться с короткого названия вопроса на русском языке с Большой буквы. Создание тем в данном подфоруме только не о модах. Темы о модах для ветки 3.0.Х в соседнем подфоруме. И помните - Вам тут никто ничего не должен. При малейшем "приказном" тоне в сообщениях - бан на вечно.

  Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Pthelovod 10 фев 2017, 11:48

Форум phpBB3 содержит верхний колонтитул, основное содержимое страницы и нижний колонтитул. Файлы overall_header.html и simple_header.html управляют верхним колонтитулом, а файлы overall_footer.html и simple_footer.html — нижним. Всё остальное содержимое страниц (например, index.php, viewforum.php, viewtopic.php и так далее) определяется другими файлами шаблонов, в которых верхнее и нижнее содержимое берётся с файлов overall_header.html и overall_footer.html. Различные всплывающие окна и обзор темы используют файлы simple_header.html и simple_footer.html. Самая привлекательная вещь состоит в том, что сейчас верхние и нижние колонтитулы назначаются непосредственно в файлах шаблонов, а не в файлах PHP, поэтому вы можете указать другие файлы для использования в качестве колонтитулов, или даже создать новые.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Счастливым ты не станешь никогда, если не пройдешь неоднократно надежды полный путь туда и безнадежный путь обратно.
Господи! Помоги мне встать на ноги. Хотя, чего это я. Ведь когда я падал, тебя рядом почему-то не было. Где ты был тогда?

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

Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Pthelovod 10 фев 2017, 12:14

Картинки для интерфейса давно уже канули в историю. Веб китовые технологии рулят и использование CSS все более прогрессивно. При этом прорисовка в CSS вместо использования картинок дает экономию в загрузке страниц, Заменить можно многое в стиле, но не все. Рассмотрим самое простое использование "прорисовки картинок" вместо использования "физических" картинок. Самое простое - кнопки. Начнем с больших, а потом по мере надобности рассмотрим замену на "прорисованные" маленьких.
Первое что встретилось - самый простой вариант от Sheer
Открыть styles/prosilver/theme/buttons.css
Найти;
Код: выделить все
.buttons div.post-icon      { width: {IMG_BUTTON_TOPIC_NEW_WIDTH}px; height: {IMG_BUTTON_TOPIC_NEW_HEIGHT}px; }

заменить на
Код: выделить все
.buttons div.post-icon
{
  background: #3498db;
  background-image: -webkit-linear-gradient(top, #3498db, #2980b9);
  background-image: -moz-linear-gradient(top, #3498db, #2980b9);
  background-image: -ms-linear-gradient(top, #3498db, #2980b9);
  background-image: -o-linear-gradient(top, #3498db, #2980b9);
  background-image: linear-gradient(to bottom, #3498db, #2980b9);
  -webkit-border-radius: 28;
  -moz-border-radius: 28;
  border-radius: 28px;
  font-family: Arial;
  color: #ffffff;
  font-size: 10px;
  padding: 10px 20px 10px 20px;
  text-decoration: none;
}

Открыть styles/prosilver/theme/colours.css
Найти:
Код: выделить все
.post-icon span      { background-image: url("{IMG_BUTTON_TOPIC_NEW_SRC}"); }

Заменить на
Код: выделить все
.post-icon span      { }

Но мы ведь не ищем легких путей? Значит "едем " дальше. Инструкция с чисткой всего "мусора" от бывшей кнопки - картинки. Что меняем? Меняем кнопку ОТВЕТИТЬ в ЛС.. Ее название button_pm_reply.gif
Открыть styles/prosilver/theme/buttons.css. Берем название картинки и вбиваем в поиск по файлу: button_pm_reply
Находим строку:
Код: выделить все
.buttons div.pmreply-icon                      { width: {IMG_BUTTON_PM_REPLY_WIDTH}px; height: {IMG_BUTTON_PM_REPLY_HEIGHT}px; }

Значит класс этой кнопки обзывается pmreply-icon ... запоминаем... полный код класса стиля кнопки .buttons div.pmreply-icon. Что бы при наведении на кнопку не было подчеркивания ее названия, добавляем в строку символ a... Получаем - .buttons div.pmreply-icon a
Теперь вместо строки
Код: выделить все
.buttons div.pmreply-icon                      { width: {IMG_BUTTON_PM_REPLY_WIDTH}px; height: {IMG_BUTTON_PM_REPLY_HEIGHT}px; }
в файл styles/prosilver/theme/buttons.css вставляем новый код "прорисованной" кнопки:
Код: выделить все
.pmreply-icon span { }
.buttons div.pmreply-icon a
{
  border: 2px solid #CCCCCC;
  height: 25px;
  width: 90px;
  overflow: hidden;
  display: block;
  text-align: center;
  line-height: 27px;
  font-family: sans-serif;
  font-size: 14px;
  font-weight: bold; 
  /*закругленные углы*/
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;
  border-radius: 8px;
   /*градиент*/
  background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
   /*Transition*/
  -webkit-transition: All 0.5s ease;
  -moz-transition: All 0.5s ease;
  -o-transition: All 0.5s ease;
  -ms-transition: All 0.5s ease;
  transition: All 0.5s ease;
}
.buttons div.pmreply-icon a:hover {
  border: 2px solid #000066;
  text-decoration: none;
}

Не забываем проверять истинные размеры удаляемой кнопки - картинки и вбить их в эти строки -
Код: выделить все
  height: 25px;
  width: 90px;

При этом высота height - ровно половина от высоты бывшей кнопки картинки, если она состояла из двух половинок.
Теперь лезем в styles/prosilver/theme/colours.css
Находим в нем строку с названием класса кнопки - картинки pmreply-icon
Находим:
Код: выделить все
.pmreply-icon span { background-image: url("{IMG_BUTTON_PM_REPLY_SRC}") ;}

в блоке /* Big button images */ и удаляем ее на фиг. В файле colours.css она более не нужна...
Это еще не все. Что бы новая кнопка была похожа на прежнюю кнопку - картинку, надо найти ее языковую переменную и изменить перевод на соответствующий бывшей надписи на кнопке - картинке, то есть, в нашем случае - на заглавные буквы. Заодно добавим для новой кнопки свой титл -всплывающую подлсказку (title)- Переменная названия этой кнопки - POST_REPLY_PM
Эту переменную мы находим в языковом файле ucp.php и заменяем в нем строку:
Код: выделить все
   'POST_REPLY_PM'               => 'Ответить',

на
Код: выделить все
   'POST_REPLY_PM'               => 'ОТВЕТИТЬ',
   'POST_REPLY_PM_EXPLAIN'         => 'Ответить на это личное сообщение',

С названием кнопки и подсказкой для нее у нас теперь порядок
Ну, наконец-то.. Теперь лезем в HTML... Там необходимо сделать изменение вызова подсказки и исправить вывод переменной названия новой кнопки.... Находим код кнопки в HTML файлах, опять же, по ее классу pmreply. Думаю что учить как в БЛОКНОТЕ+ пользоваться поиском кусков кода не надо? Главное что б папка с файлами HTML стиля была на локалке... Так проще.
Данная кнопка находится в файле ucp_pm_message_header.html
Открываем его... Находим строку кнопки -
Код: выделить все
<!-- IF U_POST_REPLY_PM --><div class="pmreply-icon"><a title="{L_POST_REPLY_PM}" href="{U_POST_REPLY_PM}"><span></span>{L_POST_REPLY_PM}</a></div>

В этой строке надо немного сделать небольшие измнения.. Заменить часть -
Код: выделить все
title="{L_POST_REPLY_PM}"

на
Код: выделить все
title="{L_POST_REPLY_PM_EXPLAIN}"

И у нас появится подробненькая подсказка при наведении на прорисованную кнопку. Перевод подсказки (новая языковая переменная POST_REPLY_PM_EXPLAIN - от фантазии. Вуаля? Да нет. Еще не вуаля... Необходимо в этой строке удалить еще и <span></span> . Они там для нашей прорисованной кнопки уже не нужны. И вообще - СПАНЫ ЗЛО!!! :P Все? Неееее. :P Для порядка - еще далеко не все...
Теперь начинается самое интересное - удаление мусора от бывшей кнопки - картинки и самой кнопки. И так - поехали.
Мы помним, что все кнопки можно назначать из настройки изображений в админке на вкладке СТИЛИ - НАБОРЫ ИЗОБРАЖЕНИЙ. Зачем нам там нужна теперь ТА настройка? Удалаем все на фиг. И забудем об этой картинке на всегда. Она нам теперь будет только сниться....
1. Идем сначала в includes/acp/acp_language.php и удаляем в строке 'icon_back_top', 'icon_contact_aim', 'icon_contact_email', ..... (и далее там есть еще) код 'button_pm_reply',.
2. Затем в файле includes/acp/acp_language.php удаляем аналогичную часть кода 'button_pm_reply',.
3. Затем идем в styles/prosilver/imageset/ru/imageset.cfg и удаляем строку img_button_pm_reply = button_pm_reply.gif*25*94. Она там более не нужна.
4. И наконец удаляем из папки styles/prosilver/imageset/ru/ сам файл ненужной более картинки button_pm_reply.gif.
Все. От картинки мы избавились окончательно. Избавились и от ее следов в файлах стиля и темы. При наличии других стилей, проделать подобные правки и в файлах других стилей. Главное - не запутаться....
Теперь разберем код прорисованной кнопки по кусочкам, определим что в нем и зачем.... По умолчанию градиент кнопки залит с плавным переходом с белого на серый. При наведении он не изменяется, а меняется только цвет бордюра.
/*толщина бордюра по кругу и его цвет*/
Код: выделить все
  border: 2px solid #CCCCCC;

/*высота кнопки*/
Код: выделить все
  height: 25px;

/*ширина кнопки*/
Код: выделить все
  width: 90px;

/*текст названия кнопки по центру*/
Код: выделить все
  text-align: center;

/*положение названия кнопки по высоте от нижнего края блока кнопок (!!!!)*/
Код: выделить все
  line-height: 27px;

/*тип шрифта названия*/
Код: выделить все
  font-family: sans-serif;

/*высота шрифта*/
Код: выделить все
  font-size: 14px;

/*шрифт жирным*/
Код: выделить все
  font-weight: bold; 

/*закругленные углы - радиусы*/
Код: выделить все
  -webkit-border-radius: 8px;
  -moz-border-radius: 8px;
  border-radius: 8px;

/*градиент для разных браузеров*/
Код: выделить все
  background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));
  background-image: linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.2));

/*задержка изменения вида при наведении на кнопку для разных браузеров*/
Код: выделить все
  -webkit-transition: All 0.5s ease;
  -moz-transition: All 0.5s ease;
  -o-transition: All 0.5s ease;
  -ms-transition: All 0.5s ease;
  transition: All 0.5s ease;

/*цвет бордюра при наведении*/
Код: выделить все
  border: 2px solid #000066;

/*отключение подчеркивания при наведении*/
Код: выделить все
  text-decoration: none;

В итоге имели (для примера и по аналогии) -

В итоге имеем (для примера и по аналогии) -

Удачи. Но и это еще не все. Потом рассмотрим то, как убрать в самом php коде любые упоминания о бывшей кнопке - картинке. А ведь код для них есть еще и там!!! Но это уже потом.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Счастливым ты не станешь никогда, если не пройдешь неоднократно надежды полный путь туда и безнадежный путь обратно.
Господи! Помоги мне встать на ноги. Хотя, чего это я. Ведь когда я падал, тебя рядом почему-то не было. Где ты был тогда?

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

Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Татьяна5 10 фев 2017, 12:20

Замена ненужного на нужное запрос в бд -
Код: выделить все
UPDATE phpbb_posts SET post_text = REPLACE(post_text, 'ЭТО', 'МЕНЯЕМ НА ЭТО')

Например -
Код: выделить все
UPDATE phpbb_posts SET post_text = REPLACE(post_text, '[click]', '[click=')

Код: выделить все
UPDATE phpbb_posts SET post_text = REPLACE(post_text, '[/click]', ']ТЫНЦ[/click]')
Татьяна5
Профессор форума
Профессор форума 

Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Татьяна5 10 фев 2017, 12:22

Запрос на получение названия самого файла атача...
Код: выделить все
SELECT `physical_filename`, `real_filename`, `extension` FROM `forum_attachments` WHERE `post_msg_id` = 204337

Или полный -
Код: выделить все
SELECT `physical_filename`, `real_filename`, `extension`, `filesize`, `filetime` FROM `forum_attachments` WHERE `post_msg_id` = 204337
Татьяна5
Профессор форума
Профессор форума 

Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Pthelovod 10 фев 2017, 12:26

Не проверено!!!!!!!!!!!!!
ОСОБЫЙ СЛУЧАЙ С ОШИБКОЙ «ДОСТИГНУТ МАКСИМАЛЬНЫЙ ОБЩИЙ РАЗМЕР ВАШИХ ВЛОЖЕНИЙ»
А вот теперь моя история. Форум на phpBB несколько раз менял хостера. И в какой-то момент потребовалось резко сократить объем вложений, не удаляя их. Поэтому залитые на форум фотографии по 3-5 мегабайт были пережаты до «божеских» 100-250 килобайт. И форум продолжил жить своей жизнью.
И вот сегодня посыпались сообщения о «Достигнут максимальный общий размер ваших вложений». Хотя проверка через ftp и шелл потверждала, что объем файлов вложений составлял меньше половины квоты.
Проблема заключалась в тех самых «ужатых» файлах. Движок форума phpBB не пересчитывает объем каждого файла, считая его фиксированным (логично, экономит процессорное время). Поэтому в базе параметр «Размер всех вложений» достиг значения квоты и форум отказывал в добавлении новых вложений, не смотря на наличие свободного места.
Чтобы решить эту проблему, надо на форум установить дополнительную админку Support Toolkit и немного его доработать (у меня была версия 1.0.3, последняя на тот момент).
В файле stk/tools/admin/resync_attachments.php найти следующий код
Код: выделить все
      foreach ($batch as $row)
      {
         // Does the file still exists?
         $path = PHPBB_ROOT_PATH . $config['upload_path'] . "/{$row['physical_filename']}";
         if (file_exists($path))
         {
            // Yes, next please!
            continue;
         }

         $delete_ids[] = $row['attach_id'];
      }

и заменить его на этот
Код: выделить все
     foreach ($batch as $row)
            {
            // Does the file still exists?
            $path = PHPBB_ROOT_PATH . $config['upload_path'] . "/{$row['physical_filename']}";
            if (file_exists($path))
            {
            $fsize = filesize( $path );
            if ( $fsize != $row['filesize'] )
            {
                $db->sql_query('UPDATE ' . ATTACHMENTS_TABLE . ' SET filesize = ' . $fsize . ' WHERE attach_id = ' . $row['attach_id'] );
            }
            // Yes, next please!
            continue;
            }
                $delete_ids[] = $row['attach_id'];
            }

Найти -
Код: выделить все
$sql = 'SELECT attach_id, physical_filename

Заменить на -
Код: выделить все
$sql = 'SELECT attach_id, physical_filename, filesize

Зайти в админку Support ToolKit, перейти «Admin Tools» -> «Resynchronise attachments». Дождаться окончания синхронизации вложений. Зайти на основную админку форума phpBB и выполнить «Синхронизировать статистику». После чего размеры файлов будут соответствовать действительности и можно будет добавлять новые вложения.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Счастливым ты не станешь никогда, если не пройдешь неоднократно надежды полный путь туда и безнадежный путь обратно.
Господи! Помоги мне встать на ноги. Хотя, чего это я. Ведь когда я падал, тебя рядом почему-то не было. Где ты был тогда?

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

Что это такое phpBB и с чем его едят? php, HTML, CSS

Сообщение Разместил Pthelovod 10 фев 2017, 13:45

Вывод блока 'Recent topics' Версия 1.0.6 в список тем и в тему...
Открываем viewforum.php
Находим -
Код: выделить все
$template->set_filenames(array(
   'body' => 'viewforum_body.html')
);

Добавляем после -
Код: выделить все
if ($config['rt_index'])
{
   if (!function_exists('display_recent_topics'))
   {
      include($phpbb_root_path . 'includes/functions_recenttopics.' . $phpEx);
   }
   display_recent_topics($config['rt_number'], $config['rt_page_number'], $config['rt_anti_topics'], 'recent_topics', request_var('f', 0), true, $config['rt_parents']);
   }

Открываем viewtopic.php.
Находим
Код: выделить все
// Output the page

Добавляем перед
Код: выделить все
if ($config['rt_index'])
{
   if (!function_exists('display_recent_topics'))
   {
      include($phpbb_root_path . 'includes/functions_recenttopics.' . $phpEx);
   }
   display_recent_topics($config['rt_number'], $config['rt_page_number'], $config['rt_anti_topics'], 'recent_topics', request_var('f', 0), true, $config['rt_parents']);
   }

Открываем
Код: выделить все
/styles/prosilver/template/viewforum_body.html

Код: выделить все
/styles/prosilver/template/viewtopic_body.html

И ставим код блока -
Код: выделить все
<!-- IF RECENT_TOPICS_DISPLAY --><!-- INCLUDE recent_topics_body.html --><!-- ENDIF -->

Туда, где хотим его видеть.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Счастливым ты не станешь никогда, если не пройдешь неоднократно надежды полный путь туда и безнадежный путь обратно.
Господи! Помоги мне встать на ноги. Хотя, чего это я. Ведь когда я падал, тебя рядом почему-то не было. Где ты был тогда?

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

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



 • Блок вывода аналогичных по названию других тем нашего форума • 
счетчик счетчик счетчик счетчик счетчик счетчик счетчик
  • Просмотров на каждого юзера: 8844.35
    Просмотров за прошедший час: 727.36
    Просмотров за прошлые сутки: 17456.72
    Ведётся подсчет с 01 янв 2013, 05:17
    Просмотров за последний год: 6371703.37
    Просмотров за прошлую неделю: 122197.05
    Просмотров в последний месяц: 523701.65