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

Вывод статуса тем.


BlackSun

Вопрос

Есть модуль вывода последних тем форума IPB на главную страницу сайта. Запросами в БД выводится информация (название темы, ответов, просмотров и т.д). В самом форуме IPB слева от тем отображается их статус в виде картинок (горячая тема, перемещена, закрыта и т.д). В таблице БД (которая как раз выводит эту информацию форума) я чего-то даже не нашел переменной, которая отвечает за это. Да и даже еслиб нашел...модуль вывел бы только саму переменную, а не картинку. Прошу помощи уважаемые пользователи форума.
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0

Картинки просчитываются в зависимости от условий.

 

Горячая тема более 100 просмотров / 15 ответов

Закрытая тема - флаг в базе

Перенесенная тема - флаг в базе

 

 

Переменной никакой нет.

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

  • 0
Я так понимаю это макрос, который ведет подсчет просмотров и ответов (в случае с горячей темой например) и выводит нужную иконку. Каким образом можно вывести это в нужное место рядом с темой на сайте? Чтобы динамически иконки менялись, когда тема меняла свой статус. Заранее благодарю.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Это обычный программный код, построенный на условиях

 

Посмотреть можно в /sources/ipsclass.php метод folder_icon

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

  • 0
Там лишь сама функция, которая описывает условия. Модуль вывода тем к примеру делает запрос вида: $getposts = $db->query("SELECT posts, last_poster_name, last_poster_id, starter_id, title, tid, forum_id, last_post, starter_name, start_date, views, icon_id FROM ibf_topics WHERE (forum_id NOT IN ($forumexclude)) ORDER BY last_post DESC LIMIT $posts"); далее уже: $post[starter_name] допустим выводин нужную информацию в нужном месте. Чем вызывать иконки? Что допустим в таком-то месте должна отобразиться иконка, которая уже соответствует условиям этой функции. Еще в модуле есть строка вида: $getpost = $db->query("SELECT macro_replace FROM ibf_skin_macro"); но она ничего не выводит. В таблице ibf_skin_macro как раз хранятся пути к этим иконкам.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

		$getpost = $db->query("SELECT macro_value, macro_replace FROM ibf_skin_macro");

		while( $db->fetch_row($getpost) as $row )
		{
			if ( $row['macro_value'] != "" )
			{
				$переменная_с_макросами = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $переменная_с_макросами );
			}
		}

 

если я еще помню как это делается в 2.3

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

  • 0

Parse error: parse error, unexpected T_AS in...

А вообще очень похоже на запись из ssi.php:

 

     	if ( is_array( $this->ipsclass->skin['_macros'] ) )
     	{
		foreach( $this->ipsclass->skin['_macros'] as $row )
		{
			if ( $row['macro_value'] != "" )
			{
				$to_echo = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $to_echo );
			}
		}
	}

       $to_echo = preg_replace( "#([^/])style_images/(<\#IMG_DIR\#>|".preg_quote($this->ipsclass->skin['_imagedir'], '/').")#is", "\\1".$this->ipsclass->vars['board_url']."/style_images/\\2", $to_echo );
	$to_echo = preg_replace( "#([^/])style_emoticons#is", "\\1".$this->ipsclass->vars['board_url']."/style_emoticons", $to_echo );
	$to_echo = preg_replace( "#([^/])style_avatars#is"  , "\\1".$this->ipsclass->vars['board_url']."/style_avatars", $to_echo );
	$to_echo = preg_replace( "#([^/])jscripts#is"       , "\\1".$this->ipsclass->vars['board_url']."/jscripts", $to_echo );

	$to_echo = str_replace( "<#IMG_DIR#>", $this->ipsclass->skin['_imagedir'], $to_echo );
	$to_echo = str_replace( "<#EMO_DIR#>", $this->ipsclass->skin['_emodir']  , $to_echo );

	echo $to_echo;

	exit();

$переменная_с_макросами -вроде бы сами писали, что переменных там нет.

Очень прошу вас в своих ответах учесть, что ваш собеседник к сожалению не обладает вашими познаниями в php и отвечать как-бы "для чайников". :)

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

  • 0

Вместо этого:

                        while( $db->fetch_row($getpost) as $row )

скорее всего имелось в виду это:

                        while( $row = $db->fetch_row($getpost) )

 

А вообще двойкой не интересуюсь, и что там как не знаю. Обновляйтесь до тройки - для нее подскажу :)

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

  • 0
Если не трудно можешь написать для тройки? Может кто использует двойку сможет переделать. Неужели тройка и двойка так отличаются? И что он имел ввиду в своем коде под "$переменная_с_макросами"?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Неужели тройка и двойка так отличаются?

Очень сильно, если что.

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

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

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

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

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

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

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

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

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

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

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

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