Свои иконки форума(часть 1) (дополнено добавление из админки(часть 2))

+25
1.75K
решил поделиться своими доработками форума, а точнее как сделать каждому форуму свою иконку вместо стандартного значка синей папки
и так приступим
1. открываем редактором фаил на сервере /components/forum/frontend.php
2. находим следующую строку (примерно 218 строка)
  1. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" /></td>';
  2.  
3. заменяем её на следующий код
  1. // мод добавления иконки к форуму //
  2. // начало мода - добавление//
  3. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$f['id'].'.gif')) {
  4. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/images/forum/'.$f['id'].'.gif" /></td>';
  5. } else {
  6. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" /></td>';
  7. }
  8. // конец мода //
  9.  
  10.  
и сохраняем изменения.
4. далее после того как вы создали новый форум (или у вас уже есть имеющиеся) открываете его у себя на сайте и видете в адресной строке к примеру такой адрес ваш_сайт/forum/1001, где вместо 1001 может быть любая цифра. эта цифра — порядковый номер форума. берете картинку которую вы хотите вставить в качестве иконки и переименовываете её в forum1001.gif где вместо 1001 порядковый номер форума которому вы хотите присвоить свою иконку.
5. заливаете полученную картинку на сайт в папку /components/forum/images/
после чего у вас рядом с форумом будет своя иконка
картинка должна быть в формате gif ну или в том, в котором вы сами измените в данном коде
данный код проверяет наличие на сервере картинки с таким именем в папке /components/forum/images/ и если находит её то загружает в качестве иконки именно её, а если не находит, то стандартную иконку

вот скрин с сайта на котором стандартная иконка
Иллюстрация
а вот скрин с сайта на котором иконки заменены на свои по данному методу
Иллюстрация

часть 2
после бессонной ночи сделана следующая доработка — теперь всё делается из админки :
*при создании форума — загрузка новой иконки форума на сервер
*при редактировании — показывает текущую иконку (стандартную или ту, которая установленна уже) и замена текущей путем перезаливки картинки на сервер со страницы
*при удалении форума — иконка (если она была) тоже удаляется.
и так приступим ко второй части мода (без выполненой первой части мод не будет работать)
открываем /admin/components/forum/backend.php
1. находим
  1. if ($opt == 'submit_forum'){
в этом разделе if находим строку
  1. dbQuery($sql) ;
  2.  
и добавляем перед следующий код
  1.  
  2. // мод добавления иконки к форуму //
  3. // начало мода - добавление//
  4. if (@$_FILES['picture']['name']){
  5. $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
  6. $realfile = $_FILES['picture']['name'];
  7. $filename = $myid.'.gif';
  8. $uploadfile = $uploaddir . $realfile;
  9. $uploadicon = $uploaddir . $filename;
  10. if (@is_uploaded_file($_FILES['picture']['tmp_name']))
  11. {
  12. echo '<p>Копирование файла '.$uploadicon;
  13. if (! move_uploaded_file($_FILES['picture']['tmp_name'], $uploadicon)){
  14. echo '<p>Файл загружен, но не перемещен в '.$uploadicon;
  15. }else{
  16. echo '<p>Файл перемещен в файл '.$uploadicon;
  17. }
  18. } else {
  19. echo 'Не удается загрузить файл. ';
  20. }
  21. }else{
  22. echo 'Не указано имя файла!';
  23. }
  24.  
  25. // конец мода //
  26.  
2. находим
  1. if ($opt == 'update_forum'){
  2.  
в этом разделе if находим строку
  1. dbQuery($sql) ;
  2.  
и добавляем перед следующий код (немного отличается от первого пункта)
  1.  
  2. // мод добавления иконки к форуму //
  3. // начало мода - обновление//
  4. if (@$_FILES['picture']['name']){
  5. $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
  6. $realfile = $_FILES['picture']['name'];
  7. $filename = $id.'.gif';
  8. $uploadfile = $uploaddir . $realfile;
  9. $uploadicon = $uploaddir . $filename;
  10. if (@is_uploaded_file($_FILES['picture']['tmp_name']))
  11. {
  12. echo '<p>Копирование файла '.$uploadicon;
  13. if (! move_uploaded_file($_FILES['picture']['tmp_name'], $uploadicon)){
  14. echo '<p>Файл загружен, но не перемещен в '.$uploadicon;
  15. }else{
  16. echo '<p>Файл перемещен в файл '.$uploadicon;
  17. }
  18. } else {
  19. echo 'Не удается загрузить файл. ';
  20. }
  21. }else{
  22. echo 'Не указано имя файла!';
  23. }
  24.  
  25. // конец мода //
  26.  
3. находим
  1. if($opt == 'delete_forum'){
  2.  
в этом разделе if находим строки
  1. //DELETE THREADS
  2. dbQuery("DELETE FROM cms_forum_threads WHERE forum_id = $id");
  3. //DELETE FORUM
  4. dbDeleteNS('cms_forums', $id);
  5. dbQuery($sql) ;
  6.  
  7.  
и добавляем перед следующий код
  1.  
  2. // мод добавления иконки к форуму //
  3. // начало мода - удаление //
  4. $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
  5. $realfile = $_FILES['picture']['name'];
  6. $filename = $id.'.gif';
  7. $uploadfile = $uploaddir . $realfile;
  8. $uploadicon = $uploaddir . $filename;
  9. if (is_file($uploadicon)) {
  10. if (@!unlink ($uploadicon)) echo "Error!
  11. ";
  12. else echo "Successful!";
  13. };
  14. // конец мода //
  15.  
4. находим
  1.  
  2. <form action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>" method="post" name="addform" id="addform">
  3.  
и заменяем на
  1. <!-- мод добавления иконки к форуму -->
  2. <!-- начало мода -->
  3. <form enctype="multipart/form-data" action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>" method="post" name="addform" id="addform">
  4. <!-- конец мода -->
  5.  
5. находим
  1. <tr>
  2. <td><strong>Родительский форум:</strong></td>
  3. <td>
  4. <?php $rootid = dbGetField('cms_forums', 'parent_id=0', 'id'); ?>
  5. <select name="parent_id" id="parent_id" style="width:260px">
  6. <option value="<?php echo $rootid?>" <?php if (@$mod['parent_id']==$rootid || !isset($mod['parent_id'])) { echo 'selected'; }?>>-- Корень форумов --</option>
  7. <?php
  8. if (isset($mod['parent_id'])){
  9. echo $inCore->getListItemsNS('cms_forums', $mod['parent_id']);
  10. } else {
  11. echo $inCore->getListItemsNS('cms_forums');
  12. }
  13. ?>
  14. </select>
  15. </td>
  16. </tr>
  17.  
и вставляем после этого кода (или в другое место на ваше усмотрение)
  1. <!-- мод добавления иконки к форуму -->
  2. <!-- начало мода -->
  3. <tr>
  4. <td><strong>Иконка форума:</strong></td>
  5.  
  6. <?php
  7. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$mod['id'].'.gif')) {
  8. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/images/forum/'.$mod['id'].'.gif" /></td>';
  9. } else {
  10. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" /></td>';
  11. }
  12. ?>
  13.  
  14. </tr>
  15. <tr>
  16. <td><strong>Загрузить иконку для форума:</strong></td>
  17. <td>
  18. <input name="picture" type="file" id="picture" size="30" />
  19. </td>
  20. </tr>
  21. <!-- конец мода -->
  22.  
6. теперь необходимо создать папку /images/forum/ и прописать на неё права на запись (777)
получилось вот так
Иллюстрация
0
bondar bondar 13 лет назад #
http://instantcms.ru/blogs/blog-umnyh-internet-razrabotok/raznye-ikonki-forumov.html
0
Sergey Platonov Sergey Platonov 13 лет назад #
ну во первых сорри если что не так - не видел я этой статьи.
а во вторых у меня немного подругому, чем там, у меня если таковой картинки нет, то есть пользователь её не залил, то показывается стандартная.
0
Sergey Platonov Sergey Platonov 13 лет назад #
исправил одну строку в первой части и добавил теперь загрузку при добавлении и редактировании форума, а так же удаление иконки при удалении форума через админку
0
alpik alpik 13 лет назад #
Отличное решение - у себя организовал так, идея - не просто как иконка - а как рекламная иконка спонсора рубрики, задумка дальше - сделать ссылкой иконку: туц!

0
Sergey Platonov Sergey Platonov 13 лет назад #
ссылкой на что??? на форум к которому данная иконка принадлежит или же ссылкой на какую то стороннюю страницу или сайт, то есть по принципу банера ???
+2
Thanatognozija Thanatognozija 13 лет назад #
Спасибо большое, работает даже если картинка не gif, просто великолепно получилось, так не хватало такого инструмента.
0
Sergey Platonov Sergey Platonov 13 лет назад #
какого бы разрешения не была иконка, скрипт её автоматически делает в gif формат, точнее просто переименовывает в номер форума и на конце ставит разрешение gif
0
Дмитрий Дмитрий 13 лет назад #
Всё работает на ура!!! Спасибо! Иконки в PNG отлично идут)
0
Алфей Алфей 13 лет назад #
Почему то не меняет иконки в подфоруме...
0
NIKITA NIKITA 13 лет назад #
undefined:
теперь необходимо создать папку /images/forum/ и прописать на неё права на запись (777)
конкретно куда!?
0
Sergey Platonov Sergey Platonov 13 лет назад #
что именно куда ??? в корне сайта есть папка images вот в ней нужно создать папку forum и прописать на неё права 777 если сервер на никсах - чего не понятного же ???
0
SP SP 13 лет назад #
good
0
Patriot Patriot 12 лет назад #
На 1.9 подойдет?

Еще от автора

Модуль для бесплатной версии компонента "Попутчики" автора Олег
и так представляю вашему вниманию модуль для бесплатной версии компонента "Попутчики" написанной Олегом.
список всех Event-ов системы
решил отдохнуть минут пять от подготовки к госам - полез сюда на сайт, прочитал такую строку в комментах в одном из последних блогов пришла идея разыс
[Хак] Выйти/войти и остаться на той же странице
где то видел на форуме тему про редирект при логине \ разлогине - как остаться на той же самой странице, если у вас стоит форма входа на всех страница
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.