Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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