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

1061
решил поделиться своими доработками форума, а точнее как сделать каждому форуму свою иконку вместо стандартного значка синей папки
и так приступим
1. открываем редактором фаил на сервере /components/forum/frontend.php
2. находим следующую строку (примерно 218 строка)
Код PHP:
                        echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" border="0" /></td>';
3. заменяем её на следующий код
Код PHP:
// мод добавления иконки к форуму //
// начало мода - добавление//
if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$f['id'].'.gif')) {
                        echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/images/forum/'.$f['id'].'.gif" border="0" /></td>';
} else {
                        echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" border="0" /></td>';
}
// конец мода //

и сохраняем изменения.
4. далее после того как вы создали новый форум (или у вас уже есть имеющиеся) открываете его у себя на сайте и видете в адресной строке к примеру такой адрес http://ваш_сайт/forum/1001 , где вместо 1001 может быть любая цифра . эта цифра - порядковый номер форума. берете картинку которую вы хотите вставить в качестве иконки и переименовываете её в forum1001.gif где вместо 1001 порядковый номер форума которому вы хотите присвоить свою иконку.
5. заливаете полученную картинку на сайт в папку /components/forum/images/
после чего у вас рядом с форумом будет своя иконка
картинка должна быть в формате gif ну или в том, в котором вы сами измените в данном коде
данный код проверяет наличие на сервере картинки с таким именем в папке /components/forum/images/ и если находит её то загружает в качестве иконки именно её, а если не находит, то стандартную иконку

вот скрин с сайта на котором стандартная иконка

а вот скрин с сайта на котором иконки заменены на свои по данному методу


часть 2
после бессонной ночи сделана следующая доработка - теперь всё делается из админки :
*при создании форума - загрузка новой иконки форума на сервер
*при редактировании - показывает текущую иконку (стандартную или ту, которая установленна уже) и замена текущей путем перезаливки картинки на сервер со страницы
*при удалении форума - иконка (если она была) тоже удаляется.
и так приступим ко второй части мода (без выполненой первой части мод не будет работать)
открываем /admin/components/forum/backend.php
1. находим
Код PHP:
if ($opt == 'submit_forum'){	
в этом разделе if находим строку
Код PHP:
			dbQuery($sql) ;	
и добавляем перед следующий код
Код PHP:
// мод добавления иконки к форуму //
// начало мода - добавление//
	if (@$_FILES['picture']['name']){
			$uploaddir              = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
			$realfile               = $_FILES['picture']['name'];
			$filename               = $myid.'.gif';
			$uploadfile             = $uploaddir . $realfile;
			$uploadicon		= $uploaddir . $filename;
	if (@is_uploaded_file($_FILES['picture']['tmp_name']))
 {
         echo '<p>Копирование файла '.$uploadicon;
         if (! move_uploaded_file($_FILES['picture']['tmp_name'], $uploadicon)){
             echo '<p>Файл загружен, но не перемещен в '.$uploadicon;
         }else{
             echo '<p>Файл перемещен в файл '.$uploadicon;
         }
      } else {
         echo 'Не удается загрузить файл. ';
      }
   }else{
      echo 'Не указано имя файла!';
   }
			
// конец мода // 
2. находим
Код PHP:
	if ($opt == 'update_forum'){
в этом разделе if находим строку
Код PHP:
			dbQuery($sql) ;	
и добавляем перед следующий код (немного отличается от первого пункта)
Код PHP:
// мод добавления иконки к форуму //
// начало мода - обновление//
	if (@$_FILES['picture']['name']){
			$uploaddir              = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
			$realfile               = $_FILES['picture']['name'];
			$filename               = $id.'.gif';
			$uploadfile             = $uploaddir . $realfile;
			$uploadicon		= $uploaddir . $filename;
	if (@is_uploaded_file($_FILES['picture']['tmp_name']))
 {
         echo '<p>Копирование файла '.$uploadicon;
         if (! move_uploaded_file($_FILES['picture']['tmp_name'], $uploadicon)){
             echo '<p>Файл загружен, но не перемещен в '.$uploadicon;
         }else{
             echo '<p>Файл перемещен в файл '.$uploadicon;
         }
      } else {
         echo 'Не удается загрузить файл. ';
      }
   }else{
      echo 'Не указано имя файла!';
   }
			
// конец мода // 
3. находим
Код PHP:
	if($opt == 'delete_forum'){
в этом разделе if находим строки
Код PHP:
			//DELETE THREADS
			dbQuery("DELETE FROM cms_forum_threads WHERE forum_id = $id");
			//DELETE FORUM
			dbDeleteNS('cms_forums', $id);
			dbQuery($sql) ;			

и добавляем перед следующий код
Код PHP:
// мод добавления иконки к форуму //
// начало мода - удаление //
			$uploaddir              = $_SERVER['DOCUMENT_ROOT'].'/images/forum/';
			$realfile               = $_FILES['picture']['name'];
			$filename               = $id.'.gif';
			$uploadfile             = $uploaddir . $realfile;
			$uploadicon            = $uploaddir . $filename;
		if (is_file($uploadicon)) {
			if (@!unlink ($uploadicon)) echo "Error!
";
			else echo "Successful!";
			};
// конец мода // 
4. находим
Код PHP:
	<form action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>" method="post" name="addform" id="addform">
и заменяем на
Код PHP:
<!-- мод добавления иконки к форуму -->
<!-- начало мода -->
	<form enctype="multipart/form-data" action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>" method="post" name="addform" id="addform">
<!-- конец мода --> 
5. находим
Код PHP:
                <tr>
                    <td><strong>Родительский форум:</strong></td>
                    <td>
                        <?php $rootid = dbGetField('cms_forums', 'parent_id=0', 'id'); ?>
                        <select name="parent_id" id="parent_id" style="width:260px">
                                <option value="<?php echo $rootid?>" <?php if (@$mod['parent_id']==$rootid || !isset($mod['parent_id'])) { echo 'selected'; }?>>-- Корень форумов --</option>
                        <?php
                            if (isset($mod['parent_id'])){
                               echo $inCore->getListItemsNS('cms_forums', $mod['parent_id']);
                            } else {
                               echo $inCore->getListItemsNS('cms_forums');
                            }
                        ?>
                        </select>
                   </td>
                </tr>
и вставляем после этого кода (или в другое место на ваше усмотрение)
Код PHP:
<!-- мод добавления иконки к форуму -->
<!-- начало мода -->
                <tr>
		<td><strong>Иконка форума:</strong></td>
		
<?php
if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$mod['id'].'.gif')) {
                        echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/images/forum/'.$mod['id'].'.gif" border="0" /></td>';
} else {
                        echo '<td width="32" class="'.$class.'" align="center" valign="top"><img src="/components/forum/images/forum.gif" border="0" /></td>';
}
?>
		
                </tr>
                <tr>
		<td><strong>Загрузить иконку для форума:</strong></td>
		<td>
		<input name="picture" type="file" id="picture" size="30" />
		</td>
                </tr>
<!-- конец мода --> 
6. теперь необходимо создать папку /images/forum/ и прописать на неё права на запись (777)
получилось вот так
Свои иконки форума (часть 3 - изменение иконок подфорумов)
Комментарии (13)
krz 20 августа 2011 в 19:55 0
http://instantcms.ru/blogs/blog-umnyh-internet-razrabotok/raznye-ikonki-forumov.html
Sergey Platonov 20 августа 2011 в 20:04 0
ну во первых сорри если что не так - не видел я этой статьи.
а во вторых у меня немного подругому, чем там, у меня если таковой картинки нет, то есть пользователь её не залил, то показывается стандартная.
Sergey Platonov 21 августа 2011 в 02:05 0
исправил одну строку в первой части и добавил теперь загрузку при добавлении и редактировании форума, а так же удаление иконки при удалении форума через админку
alpik 21 августа 2011 в 12:27 0
Отличное решение - у себя организовал так, идея - не просто как иконка - а как рекламная иконка спонсора рубрики, задумка дальше - сделать ссылкой иконку: туц!

Sergey Platonov 22 августа 2011 в 03:37 0
ссылкой на что??? на форум к которому данная иконка принадлежит или же ссылкой на какую то стороннюю страницу или сайт, то есть по принципу банера ???
Thanatognozija 21 августа 2011 в 18:57 +2
Спасибо большое, работает даже если картинка не gif, просто великолепно получилось, так не хватало такого инструмента.
Sergey Platonov 23 августа 2011 в 04:24 0
какого бы разрешения не была иконка, скрипт её автоматически делает в gif формат, точнее просто переименовывает в номер форума и на конце ставит разрешение gif
Дмитрий 22 августа 2011 в 00:32 0
Всё работает на ура!!! Спасибо! Иконки в PNG отлично идут)
Алфей 22 августа 2011 в 21:07 0
Почему то не меняет иконки в подфоруме...
NIKITA 13 сентября 2011 в 12:49 0
undefined:
теперь необходимо создать папку /images/forum/ и прописать на неё права на запись (777)
конкретно куда!?
Sergey Platonov 13 сентября 2011 в 12:58 0
что именно куда ??? в корне сайта есть папка images вот в ней нужно создать папку forum и прописать на неё права 777 если сервер на никсах - чего не понятного же ???
SP 25 сентября 2011 в 00:50 0
good
Patriot 30 июля 2012 в 05:10 0
На 1.9 подойдет?