Перейти к контенту
  • 0

Изменения структуры отоброжения ярлыков статуса тем


kindermix

Вопрос

Я решил изменить структуру страници просмотра тем форума, и изменить систему ярлыков статуса тем.

Я прикрепил скриншот, эскиз того, чего я пытаюсь добиться, то есть, представим что у нас есть 3 столбца, и в них мы должны раскидать статусы тем.

 

 

<table>

  <tr>

  <td> Если топик = горячий, то используем изображение "горячих часов", в противном случае используем ярлык "простых часов"</td>

  <td> Если топик = есть новые сообщения, то используем изображение "синих облаков", в противном случае используем ярлык "простых облаков"</td>

  <td> Ну а здесь можно оставить код по умолчанию {parse replacement="{$data['folder_img']}"} просто изображения горячих тем заменить на прозрачный пиксель x.gif</td>

  </tr>

</table>

 

Думаю в идеале делается так, но к сожалению, я не имею представления как написать это всё в коже с <if>

 

Пока я использую просто другой способ, это изменил макросы эти ярлыков вместо

 

<img src='{style_image_url}/t_hot_unread_dot.png' alt='*{lang:pm_hot_new}' />

 

на

 

/t_hot_unread_dot.png' alt='*{lang:pm_hot_new}' />

 

а код примерно выглядит так:

 

<table>

  <tr>

  <td><img src='{style_image_url}/1/{parse replacement="{$data['folder_img']}"}</td>

  <td><img src='{style_image_url}/2/{parse replacement="{$data['folder_img']}"}</td>

  <td><img src='{style_image_url}/3/{parse replacement="{$data['folder_img']}"}</td>

  </tr>

</table>

 

Способ работает, но это не лучший выход, лишняя загрузка ненужных изображений. :D

post-85181-1266508109_thumb.jpg

Изменено пользователем kindermix
Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0
А откуда скриншот?

Странный народ, когда задаёшь вопрос, вместо того чтобы по делу ответить или мысли сказать, спрашивают вообще бред какой то. но будем считать это Апом ^^

На нашем форуме былоб предупреждение у Вас за сообщение не по теме и вообще непонятно о чём.

Скриншот от сюда :D

post-85181-1266510118_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0

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

откуда скриншот?
обычно на такие вопросы принято отвечать словами или ссылками.

Можете считать это ещё одним апом.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Сейчас думал, если по примеру сообщения многоуважаемого мной пользователя Ritsuka http://forums.ibresource.ru/index.php?s=&a...st&p=361061 сделать тоже самое в этом случае, я просмотрел структуру ibf_topics но к сожалению там нет такой таблицы, которая отвечала бы за горячая или не горячая и за есть новые темы или нет, еслиб речь шла скажем о approved или pinned, тогда можно былоб что-то придумать, а тут у меня вообще понятия нет как тогда быть... как форум распознаёт это и как ему показать, что эта тема горячая и тогда используй это изображение, не горячая, другое, и тоже самое с ответами есть новые или нет...
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Kosiak, чего напал на человека? :D

 

kindermix, переменная $data['folder_img'] содержит всю нужную вам информацию. Она принимает следующие значения:

t_unread
t_hot_unread
t_hot_read
t_read
t_moved

 

Чтобы сделать свои иконки, можно добавить сразу после строки:

				<foreach loop="topics:$topic_data as $tid => $data">

 

строки:

<php>
$img_clocks = (strpos('hot', $data['folder_img']) === false) ? 'clocks_normal.png' : 'clocks_hot.png';
$img_cloud = (strpos('unread', $data['folder_img']) === false) ? 'cloud_normal.png' : 'cloud_blue.png';
</php>

 

И теперь в любом нужном вам месте шаблона использовать код:

<img src='{$this->settings['img_url']}/{$img_clocks}' alt='' />

- чтобы вставить часы, и, аналогично:

<img src='{$this->settings['img_url']}/{$img_cloud}' alt='' />

- чтобы вставить облако.

 

Картинки cloud_blue.png ... clocks_normal.png нужно положить в папку /publc/style_images/%_имя_скина_%/.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

 

Спасибо большое Ritsuka, я поражён насколько быстро вы сообразили как это сделать, и я очень уважаю вас за помощь. Если у Вас есть какая то литература по поводу php или избранные авторы - книги, я буду вам очень признателен, если вы напишите мне в личку, но это только если у вас будет время, если нет то не надо. Потому что я также хочу узнать больше о php и java чтобы каждый раз не спрашивать, стараться самомму это написать.

 

Для того чтобы заработало, мне пришлось изменить переменную hot на t_hot_unread или t_hot_read, и переменную unread на соответствующие, только есть маленький косяк, если можно так назвать, когда используешь

 

<php>
$img_clocks = (strpos('t_hot_read', $data['folder_img']) === false) ? 'time_clock.png' : 'time_hot_clock.png';
$comment_count = (strpos('t_unread', $data['folder_img']) === false) ? 'comment_count.png' : 'comment_blue.png';
</php>

 

То там где t_hot_unread не ставятся горящие часы, а там где t_hot_read не ставится синее облако, тоесть работает но 50 на 50 :D

 

Думал я, что всё так просто, щас изменю это на

 

<php>
$img_clocks = (strpos('t_hot_read', $data['folder_img']) === false) ? 'time_clock.png' : 'time_hot_clock.png';
$img_clocks = (strpos('t_hot_unread', $data['folder_img']) === false) ? 'time_clock.png' : 'time_hot_clock.png';
$comment_count = (strpos('t_hot_unread', $data['folder_img']) === false) ? 'comment_count.png' : 'comment_blue.png';
$comment_count = (strpos('t_unread', $data['folder_img']) === false) ? 'comment_count.png' : 'comment_blue.png';
</php>

 

и везде где надо появятся картинки, но нет, поверхностно я думал оказывается.

 

как я понимаю, сейчас используется что-то вроже <if> <else /> </if>, только на php, а надо както это сделать в <if> t_hot_unread or t_unread = $data['folder_img'] use comment_blue.png <else /> comment_count.png</if>

 

Попробовал написать так:

 

$comment_count = (strpos('t_hot_unread', 't_unread', $data['folder_img']) === false) ? 'comment_count.png' : 'comment_blue.png';

 

Все синие стали ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Для того чтобы заработало, мне пришлось изменить переменную hot на t_hot_unread или t_hot_read, и переменную unread на соответствующие, только есть маленький косяк, если можно так назвать, когда используешь

Ррррррр! Не надо было ничего менять!

 

Сделайте так:

<php>
switch ($data['folder_img']) 
{
 case 't_unread':
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_blue.png';
  break;
 case 't_hot_unread':
  $img_clocks = 'clocks_hot.png';
  $img_cloud  = 'cloud_blue.png';
  break;
 case 't_hot_read':
  $img_clocks = 'clocks_hot.png';
  $img_cloud  = 'cloud_normal.png';
  break;
 case 't_read':
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_normal.png';
  break;
 default:
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_normal.png';
 break;
}
</php>

 

Раз более сложную логику не понимаете :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Для того чтобы заработало, мне пришлось изменить переменную hot на t_hot_unread или t_hot_read, и переменную unread на соответствующие, только есть маленький косяк, если можно так назвать, когда используешь

Ррррррр! Не надо было ничего менять!

 

Сделайте так:

<php>
switch ($data['folder_img']) 
{
 case 't_unread':
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_blue.png';
  break;
 case 't_hot_unread':
  $img_clocks = 'clocks_hot.png';
  $img_cloud  = 'cloud_blue.png';
  break;
 case 't_hot_read':
  $img_clocks = 'clocks_hot.png';
  $img_cloud  = 'cloud_normal.png';
  break;
 case 't_read':
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_normal.png';
  break;
 default:
  $img_clocks = 'clocks_normal.png';
  $img_cloud  = 'cloud_normal.png';
 break;
}
</php>

 

Раз более сложную логику не понимаете :)

 

Спасибо Ritsuka, этот способ отлично работает, ещё добавил туда t_poll_unread, и несколько с припиской _dot, не знаю что это означает, к примеру t_hot_unread_dot но у нас такие ярлыки есть, редко, но есть, сам не знаю что этот dot значит :D

Но главное что всё получилось, я безумно рад, это очень сильно оживило дизайн, он можно сказать ожил прям ;)

 

А то что первый способ, я ставлю, к примеру

 

<php>
$img_clocks = (strpos('hot', $data['folder_img']) === false) ? 'clocks_normal.png' : 'clocks_hot.png';
$img_cloud = (strpos('unread', $data['folder_img']) === false) ? 'cloud_normal.png' : 'cloud_blue.png';
</php>

 

Но как были все белые облака и обычные ярлыки, так и остались, несколько раз проверял, почему то он (скрипт) ставит normal.

вот если unread поменять на t_hot_unread то тогда работает, будут и те что горячие и те что обычные не прочтённые - синими, а вот те что с опросом, не работает, о идея, только что попробывал, просто изменил unread и hot просто на _unread и _hot, но нет, также не сработало...

 

Главное что Ваш второй способ работает, и я очень рад, спасибо большое!

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Странно.... Может, проблема в парсере IP.Board и он съедает одно "=" из знака тождества.... Ладно, главное что все работает :D
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.