News (часть2)
Оптимизируем модуль Новостей
Открываем modules/News/article.php
Находим:
PHP код:
require_once("mainfile.php");
Выше добавляем:
PHP код:
$show_related = 1; // 1 - Показывать блок "Связанные ссылки" | 0 - не показывать $show_ratings = 1; // 1 - Показывать блок "Рейтинг статьи " | 0 - не показывать $show_option = 1; // 1 - Показывать блок "Опции " | 0 - не показывать (Админ все равно будет видить этот блок)
То, что мы сейчас добавили, является настраиваемой частью скрипта, вы можете выключить не нужные вам блоки.
Находим:
Заменяем на:
PHP код:
$sid = intval($_GET['sid']);
Находим:
PHP код:
$result = $db->sql_query("select catid, aid, time, title, hometext, bodytext, topic, informant, notes, acomm, haspoll, pollID, score, ratings FROM ".$prefix."_stories where sid='$sid'");
Заменяем на:
PHP код:
$result = $db->sql_query("SELECT s.*, t.*, c.title as title1 FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_topics AS t ON(t.topicid=s.topic) LEFT JOIN ".$prefix."_stories_cat AS c ON( c.catid=s.catid and s.catid>0) WHERE s.sid='$sid'");
Находим:
Заменяем на:
PHP код:
$topicid = intval($row['topicid']); $topicname = filter($row['topicname'], nohtml); $topicimage = filter($row['topicimage'], nohtml); $topictext = filter($row['topictext'], nohtml);
Находим:
PHP код:
if ($catid != 0) { $row2 = $db->sql_fetchrow($db->sql_query("select title from ".$prefix."_stories_cat where catid='$catid'")); $title1 = filter($row2['title'], nohtml);
Заменяем на:
PHP код:
if($title1 = filter($row['title1'], nohtml)){
Это мы оптимизировали вывод самих новостей, а теперь займемся выводом блоков, которые выводятся с права от новости.
Находим:
PHP код:
$row3 = $db->sql_fetchrow($db->sql_query("SELECT pollTitle, voters FROM ".$prefix."_poll_desc WHERE pollID='$pollID'"));
Заменяем на:
PHP код:
$row3 = $db->sql_fetchrow($db->sql_query("SELECT d.pollTitle, d.voters, COUNT(c.tid) AS ctid FROM ".$prefix."_poll_desc AS d LEFT JOIN ".$prefix."_pollcomments AS c ON(c.pollID='$pollID') WHERE d.pollID='$pollID' GROUP BY d.pollTitle"));
Находим:
PHP код:
for($i = 1; $i <= 12; $i++) { $result4 = $db->sql_query("SELECT pollID, optionText, optionCount, voteID FROM ".$prefix."_poll_data WHERE (pollID='$pollID') AND (voteID='$i')"); $row4 = $db->sql_fetchrow($result4); $numrows = $db->sql_numrows($result4); if($numrows != 0) { $optionText = $row4['optionText']; if($optionText != "") { $boxContent .= "<tr><td valign=\"top\"><input type=\"radio\" name=\"voteID\" value=\"".$i."\"></td><td width=\"100%\"><font class=\"content\">$optionText</font></td></tr>\n"; } } }
Заменяем на:
PHP код:
$result4 = $db->sql_query("SELECT pollID, optionText, optionCount, voteID FROM ".$prefix."_poll_data WHERE pollID='$pollID' ORDER BY voteID "); $numrows = $db->sql_numrows($result4); if($numrows != 0) { while($row4 = $db->sql_fetchrow($result4)){ $optionText = $row4['optionText']; if($optionText != "") { $boxContent .= "<tr><td valign=\"top\"><input type=\"radio\" name=\"voteID\" value=\"".$row4['voteID']."\"></td><td width=\"100%\"><font class=\"content\">$optionText</font></td></tr>\n"; } } }
Находим и удаляем:
PHP код:
for($i = 0; $i < 12; $i++) { $row5 = $db->sql_fetchrow($db->sql_query("SELECT optionCount FROM ".$prefix."_poll_data WHERE (pollID='$pollID') AND (voteID='$i')")); $optionCount = $row5['optionCount']; $sum = (int)$sum+$optionCount; }
Находим:
PHP код:
if ($pollcomm) { $result6 = $db->sql_query("select * from ".$prefix."_pollcomments where pollID='$pollID'"); $numcom = $db->sql_numrows($result6); $boxContent .= "<br>"._VOTES.": <b>$sum</b><br>"._PCOMMENTS." <b>$numcom</b>\n\n"; } else { $boxContent .= "<br>"._VOTES." <b>$sum</b>\n\n"; }
Заменяем на:
PHP код:
if ($pollcomm) { $boxContent .= "<br>"._VOTES.": <b>$voters</b><br>"._PCOMMENTS." <b>".$row3['ctid']."</b>\n\n"; } else { $boxContent .= "<br>"._VOTES." <b>$voters</b>\n\n"; }
Находим:
PHP код:
$row7 = $db->sql_fetchrow($db->sql_query("select title, content, active, bposition from ".$prefix."_blocks where blockfile='block-Login.php' $querylang"));
Выше добавляем (изменено):
PHP код:
global $block_info; $show_login = false; if($block_info){ if($block_info['r']){ foreach($block_info['r'] as $value){ if($value['blockfile'] =='block-Login.php'){ $show_login = true; break; } } } }else{
Находим:
PHP код:
if (($active == 1) AND ($position == "r") AND (!is_user($user))) { loginbox(); }
Заменяем на:
PHP код:
if (($active == 1) AND ($position == "r")) $show_login = true; } if(!is_user($user) and $show_login) loginbox();
Находим:
PHP код:
$boxtitle = ""._RELATED."";
Выше добавляем:
Находим:
PHP код:
$boxstuff .= "<a href=\"modules.php?name=$module_name&file=article&sid=$topstory\">$ttitle</a></font></center><br>\n"; themesidebox($boxtitle, $boxstuff);
Ниже добавляем:
Находим:
Выше добавляем:
Находим:
PHP код:
$ratecontent .= "<center><input type=\"submit\" value=\""._CASTMYVOTE."\"></center></form>"; themesidebox($ratetitle, $ratecontent);
Ниже добавляем:
Находим:
PHP код:
$optiontitle = ""._OPTIONS."";
Выше добавляем:
PHP код:
if($show_option==1 or is_admin($admin)){
Находим (изменено):
PHP код:
echo "</td></tr></table>\n";
Выше добавляем:
В результате, при прочтение полной версии новости, модуль делает 2 запроса без блоков и 6 с блоками (2-опрос, 2-ссылки). Это без вывода ассоциаций и комментариев (ими займемся позже).
На сегодня хватит :smile:
|