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

Редактировалось: 5 раз — последний сегодня в 06:47
Просмотров: 3223
+5
Голосов: 5

решил поделиться своими доработками форума, а точнее как сделать каждому форуму свою иконку вместо стандартного значка синей папки, так же я смог реализовать управление через админку (добавление, смена и удаление иконки) ну и самое сложное что пришлось реализовывать - это чтоб у подфорумов тоже были свои иконки

цена мода - free , но от материального поощрения не откажусь (данные на моей стене и в подписи на форуме)

и так приступим

часть 1 - добавление мода проверки наличия иконки на сервере, и если таковая есть и лежит в папке - то иконкой форума делаем именно её, если таковой нет - ставим стандартную иконку (которая по умолчанию)

1. открываем редактором фаил на сервере

/components/forum/frontend.php

2. находим следующую строку (примерно 218 строка)

Код PHP:
  1.  
  2. echo '<td width="32" class="'.$class.'" align="center" valign="top">
  3. <img src="/components/forum/images/forum.gif" border="0" /></td>';
  4.  

3. заменяем её на следующий код

Код PHP:
  1.  
  2. // мод добавления иконки к форуму //
  3. // начало мода - добавление//
  4. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$f['id'].'.gif')) {
  5. echo '<td width="32" class="'.$class.'" align="center" valign="top"><img
  6. src="/images/forum/'.$f['id'].'.gif" border="0" /></td>';
  7. } else {
  8. echo '<td width="32" class="'.$class.'" align="center"
  9. valign="top"><img src="/components/forum/images/forum.gif" border="0" /></td>';
  10. }
  11. // конец мода //
  12.  

и сохраняем изменения.

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

что получилось реализовать

*при создании форума - загрузка новой иконки форума на сервер

*при редактировании - показывает текущую иконку (стандартную или ту, которая установленна уже)

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

*при удалении форума - иконка (если она была) тоже удаляется.

и так приступим ко второй части мода

открываем

/admin/components/forum/backend.php

1. находим

Код PHP:
  1.  
  2. if ($opt == 'submit_forum'){
  3.  

в этом разделе if находим строку

Код PHP:
  1.  
  2. dbQuery($sql) ;
  3.  

и добавляем

перед

следующий код

Код PHP:
  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. находим

Код PHP:
  1.  
  2. if ($opt == 'update_forum'){
  3.  

в этом разделе if находим строку

Код PHP:
  1.  
  2. dbQuery($sql) ;
  3.  

и добавляем

перед

следующий код (немного отличается от первого пункта)

Код PHP:
  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. находим

Код PHP:
  1.  
  2. if($opt == 'delete_forum'){
  3.  

в этом разделе if находим строки

Код PHP:
  1.  
  2. //DELETE THREADS
  3. dbQuery("DELETE FROM cms_forum_threads WHERE forum_id = $id");
  4. //DELETE FORUM
  5. dbDeleteNS('cms_forums', $id);
  6. dbQuery($sql) ;
  7.  
  8.  

и добавляем

перед

следующий код

Код PHP:
  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. else echo "Successful!";
  12. };
  13. // конец мода //
  14.  

4. находим

Код PHP:
  1.  
  2. <form action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>"
  3. method="post" name="addform" id="addform">
  4.  

и заменяем на

Код PHP:
  1.  
  2. <!-- мод добавления иконки к форуму -->
  3. <!-- начало мода -->
  4. <form enctype="multipart/form-data" action="index.php?view=components&do=config&id=<?php
  5. echo $_REQUEST['id'];?>" method="post" name="addform" id="addform">
  6. <!-- конец мода -->
  7.  

5. находим

Код PHP:
  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?>"
  7. <?php if (@$mod['parent_id']==$rootid || !isset($mod['parent_id']))
  8. { echo 'selected'; }?>>-- Корень форумов --</option>
  9. <?php
  10. if (isset($mod['parent_id'])){
  11. echo $inCore->getListItemsNS('cms_forums', $mod['parent_id']);
  12. } else {
  13. echo $inCore->getListItemsNS('cms_forums');
  14. }
  15. ?>
  16. </select>
  17. </td>
  18. </tr>
  19.  

и вставляем после этого кода (или в другое место на ваше усмотрение)

Код PHP:
  1.  
  2. <!-- мод добавления иконки к форуму -->
  3. <!-- начало мода -->
  4. <tr>
  5. <td><strong>Иконка форума:</strong></td>
  6.  
  7. <?php
  8. if (file_exists($_SERVER['DOCUMENT_ROOT'].'/images/forum/'.$mod['id'].'.gif')) {
  9. echo '<td width="32" class="'.$class.'" align="center"
  10. valign="top"><img src="/images/forum/'.$mod['id'].'.gif" border="0" /></td>';
  11. } else {
  12. echo '<td width="32" class="'.$class.'" align="center"
  13. valign="top">Для форума - <img src="/components/forum/images/forum.gif"
  14. border="0" />Для подфорума - <img src="/templates/папка_шаблона/images/icons/forum/forum.png"
  15. border="0" /></td>';
  16. }
  17. ?>
  18.  
  19. </tr>
  20. <tr>
  21. <td><strong>Загрузить иконку для форума:</strong></td>
  22. <td>
  23. <input name="picture" type="file" id="picture" size="30" />
  24. </td>
  25. </tr>
  26. <!-- конец мода -->
  27.  

продолжение во второй части

Комментарии (2)
Gorec #
: 0
v
ZmeeLove #
: 0

а как реализовать это для Универсального каталога? кто может скинуть инструкцию?

Голосуем

Самый нужный компонент