Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

К моду "Последние темы" дабавить страницы темы

Опубликовано:

Форум: IPB 2.3.6

 

Мод: "Последние темы", скаченные с сайта

 

Вопрос:

Установил данный мод с небольшими изменениями. Все работает отлично, но хочется чтобы в данном моде с названиями тем выводились и страницы тем, т.е. как выводятся при выводе списка тем.

post-35412-0-41333300-1299923077_thumb.jpg

Не могли бы подсказать где в каком месте (название файла и функции) идет генерация списка страниц тем. Догадываюсь, что скорее всего где-то в файлах: boards.php или forums.php, но сам никак не разберусь что-то.

 

 

Прошу заранее прощения, если тему уже была, но поиск ничего не дал.

 

Код файла, где идет генерация списка последних тем (sources/action_public/Boards.php)

 

$top_data = array();

               $cids = ','.$this->ipsclass->my_getcookie('collapseprefs').',';
               if (strstr($cids, ',top_xx,'))
               {
                       $top_data['fo'] = 'show';
                       $top_data['fc'] = 'none';

               }
               else
               {
                       $top_data['fo'] = 'none';
                       $top_data['fc'] = 'show'; 
               }

	function tt($yer,$veri){
		list($a1,$b1)=@mysql_fetch_row(mysql_query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$yer'"));
		return "$a1"."$veri"."$b1";
	}
	$this->ipsclass->DB->query("SELECT * FROM ibf_members WHERE `posts` > 0 ORDER BY `posts` DESC LIMIT 0,".$statnum);
	$TPosts="";

	function tt2($vr2){
		list($grp)=@mysql_fetch_row(mysql_query("SELECT mgroup FROM ibf_members WHERE name='$vr2'"));
		list($a2,$b2)=@mysql_fetch_row(mysql_query("SELECT prefix, suffix FROM ibf_groups WHERE g_id='$grp'"));
		return "$a2".$vr2."$b2";
	}

	$this->ipsclass->DB->query("SELECT * FROM ibf_topics ORDER BY views DESC LIMIT 0,".$statnum);
	$TView="";
	while($tview=$this->ipsclass->DB->fetch_row()){
		$TView.="<tr><td width='70%'>";
		$TView.="<img src='http://ipbskins.ru/forum/public/style_images/1/lastpost.gif' border='0' hspace=3 alt='{$this->ipsclass->lang['tt_golast']}'  title='{$this->ipsclass->lang['tt_golast']}'/>";
		$TView.="<b><a href='index.php?act=ST&f={$tview['forum_id']}&t={$tview['tid']}&view=getlastpost'>{$tview['title']}</b></a> [{$this->ipsclass->lang['hits']}: {$tview['views']}]";
		$TView.="</td><td align='right' width='30%'>";
		$vr2=tt2($tview[last_poster_name]);
		$TView.="<a href='index.php?showuser={$tview['last_poster_id']}'>$vr2</a>";
		$TView.="</td></tr>";
	}

	$this->ipsclass->DB->query( "SELECT * FROM ibf_topics ORDER BY last_post DESC LIMIT 0,".$statnum);
	$ToNew="";
	while($tonew=$this->ipsclass->DB->fetch_row()){
		$ToNew.="<tr><td width='70%'>";
		$ToNew.="<img src='style_images/1/newpost.gif' border='0' alt='{$this->ipsclass->lang['tt_gounread']}' title='{$this->ipsclass->lang['tt_gounread']}' hspace=2 />";
		$ToNew.="<b><a href='index.php?act=ST&f={$tonew['forum_id']}&t={$tonew['tid']}&view=getlastpost'>{$tonew['title']}</b></a> [{$this->ipsclass->lang['replies']}: {$tonew['posts']}]";
		$ToNew.=", [".date("d.m.Y, H:i" ,$tonew['last_post'])."]";
		$ToNew.="</td><td align='right' width='30%'>";
		$vr2=tt2($tonew[last_poster_name]);
		$ToNew.="<a href='index.php?showuser={$tonew['last_poster_id']}'>$vr2</a>";
		$ToNew.="</td></tr>";
	}
	$this->output = str_replace( "<!-- STATPANEL -->" , $this->ipsclass->compiled_templates['skin_boards']->Top_XX_Stats($TPosts,$TView,$ToNew,$top_data) , $this->output );

Изменено пользователем Zhelezaka

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

Опубликовано:

Предположу что нужное вам находится в файле sources/action_public/forums.php, функция parse_data

 

P.S. код в вашем примере ужасный))

Опубликовано:
  • Автор

Пасиба, буду смотреть.

 

Этот код не мой... я же писал

Установил данный мод с небольшими изменениями.

А код и правду ужасный, там только на вывод 15-ти тем 62 запроса - ужас.

после переделки

$top_data = array();

               $cids = ','.$this->ipsclass->my_getcookie('collapseprefs').',';
               if (strstr($cids, ',top_xx,'))
               {
                       $top_data['fo'] = 'show';
                       $top_data['fc'] = 'none';

               }
               else
               {
                       $top_data['fo'] = 'none';
                       $top_data['fc'] = 'show'; 
               }

	$TPosts="";

	$Topics_ar = array();
	$i = 0;
	$this->ipsclass->DB->query("SELECT tid, title, forum_id, posts, views, last_poster_name, last_poster_id FROM ibf_topics ORDER BY last_post DESC LIMIT 0,".$statnum);
	while($tonew=$this->ipsclass->DB->fetch_row()){
		$Topics_ar[$i] .= '<td class="row2">';
		$Topics_ar[$i] .= "<img src='style_images/1/newpost.gif' border='0' alt='{$this->ipsclass->lang['tt_gounread']}' title='{$this->ipsclass->lang['tt_gounread']}' hspace=2 />";
		$Topics_ar[$i] .= "<b><a href='index.php?act=ST&f={$tonew['forum_id']}&t={$tonew['tid']}&view=getlastpost'>{$tonew['title']}</b></a> ";
		$Topics_ar[$i] .= "[".date("d.m.Y, H:i" ,$tonew['last_post'])."]";
		$Topics_ar[$i] .= "</td>";
		$Topics_ar[$i] .= '<td class="row1" align="center">'.$tonew['posts'].'</td>';
		$Topics_ar[$i] .= '<td class="row1" align="center"><a href="index.php?showuser='.$tonew['last_poster_id'].'">'.$tonew['last_poster_name'].'</a></td>';
		$i++;
	}

	$this->ipsclass->DB->query("SELECT tid, title, forum_id, posts, views, last_poster_name, last_poster_id FROM ibf_topics ORDER BY views DESC LIMIT 0,".$statnum);
	while($tonew=$this->ipsclass->DB->fetch_row()){
		$Topics_ar[$i] .= '<td class="row2">';
		$Topics_ar[$i] .= "<img src='style_images/1/newpost.gif' border='0' alt='{$this->ipsclass->lang['tt_gounread']}' title='{$this->ipsclass->lang['tt_gounread']}' hspace=2 />";
		$Topics_ar[$i] .= "<b><a href='index.php?act=ST&f={$tonew['forum_id']}&t={$tonew['tid']}&view=getlastpost'>{$tonew['title']}</b></a> ";
		$Topics_ar[$i] .= "[".date("d.m.Y, H:i" ,$tonew['last_post'])."]";
		$Topics_ar[$i] .= "</td>";
		$Topics_ar[$i] .= '<td class="row1" align="center">'.$tonew['views'].'</td>';
		$Topics_ar[$i] .= '<td class="row1" align="center"><a href="index.php?showuser='.$tonew['last_poster_id'].'">'.$tonew['last_poster_name'].'</a></td>';
		$i++;
	}

	$Topics = '';
	for($i = 0, $j = 0, $k = 10; $i<count($Topics_ar); $i++)
	{
		if(!($i % 2))
		{
			$Topics .= '<tr>'.$Topics_ar[$j];
			$j++;
		}
		else
		{
			$Topics .= $Topics_ar[$k].'</tr>';
			$k++;
		}
	}


	$TView = '';
	$this->output = str_replace( "<!-- STATPANEL -->" , $this->ipsclass->compiled_templates['skin_boards']->Top_XX_Stats($TPosts,$Topics,$top_data) , $this->output );


Изменено пользователем Zhelezaka

Опубликовано:

Мод уг, что переделанный что не переделанный. :) ТС, ваша переделка пугает ничуть не меньше чем сам оригинал. Особенно сильно отличились с циклом for. Я так понимаю первая часть это новые сообщения, а вторая - просмотры? Нда, хардкоде.

 

Как вариант, собрать массив last_post, views и top_members, и уже в шаблоне foreach'ом перебирать. Все равно быстрее и понятнее будет чем сейчас. И нафига столько запросов когда можно обойтись тремя:

1. 'select' => '*', from => 'topics', 'where' = 'approved=1', 'order' => 'last_post DESC', 'limit' => array( $limit );
2. 'select' => '*', from => 'topics', 'where' = 'approved=1', 'order' => 'views DESC', 'limit' => array( $limit );
3. 'select' => '*', from => 'members', 'order' => 'posts DESC', 'limit' => array( $limit );

 

По сабжу. Нечто подобное делал L-7 с нумерации каждой страницы темы - page titles. Но лучше оставить так как есть. Гкода тут и так хватает.)))

Опубликовано:
  • Автор
нафига столько запросов когда можно обойтись тремя:

Ну если внимательно глянуть, то у меня их вообще два ;)

 

Особенно сильно отличились с циклом for.

это для подсчета и расстановки тэгов в нужном порядке

 

Как вариант, собрать массив last_post, views и top_members, и уже в шаблоне foreach'ом перебирать.

гмм.. ну можно передавать просто массив данных, а в шаблон перенести код по формированию самой таблицы

 

Нечто подобное делал L-7 с нумерации каждой страницы темы - page titles.

пасиба за наводку

Изменено пользователем Zhelezaka

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.