Numb 0 Опубликовано: 21 января 2007 Рассказать Опубликовано: 21 января 2007 В общем, есть код модуля карты сайта, но данный модуль использует около 60 запросов к БД. Реально ли уменьшить количество запросов ??? Собственно вот код: <?php if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } $map = dle_cache("sitemap", $config['skin']); if(!$map) { $map = ""; $result = $db->query("SELECT id,name,alt_name FROM ". PREFIX ."_category ORDER BY posi ASC"); while($row = $db->get_row($result)){ $map .= "<ul style='padding:20px;font-size:18px;'><li style='list-style-type: none;'><a href='".$config['http_home_url']."category/${row[alt_name]}/' style='font-size:10pt;font-weight:bold;'>$row[name]</a></li>\n"; $cat = intval($row[id]); $result2 = $db->query("SELECT id,autor,date,title,alt_name,comm_num,rating,news_read FROM ". PREFIX ."_post WHERE category = '$cat' ORDER BY title ASC"); while ($row2 = $db->get_row($result2)){ $map .= "<li style='padding:2px;font-size:11px;vertical-align:middle;'> <a style='font-weight: bold;' href=".$config['http_home_url'].str_replace("-","/",substr($row2['date'],0,10))."/".$row2['alt_name'].".html>".stripslashes($row2[title])."</a> | $row2[autor] | Прочитано: $row2[news_read] | Комментариев: $row2[comm_num]</li>\n"; } $map .= "</ul>\n"; } create_cache("sitemap", $map); } $tpl->load_template('static.tpl'); $tpl->set('{description}', "Карта сайта"); $tpl->set('{static}', $map); $tpl->compile('content'); $tpl->clear(); ?> Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 21 января 2007 Рассказать Опубликовано: 21 января 2007 реально сделать 1 Ссылка на сообщение Поделиться на других сайтах
Numb 0 Опубликовано: 21 января 2007 Рассказать Опубликовано: 21 января 2007 Автор Если реально, то подскажи как ? Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 21 января 2007 Рассказать Опубликовано: 21 января 2007 Вот написал на скорую руку. Сейчас нет времени вылизывать...) Но наверняка есть глюки. Может сам доработаешь) <style type=text/css> .first_level{ margin:0px 0px 0px 10px; font-size: 12px; color: #808080; display: block; } .second_level{ margin:0px 0px 0px 20px; font-size: 12px; color: #808080; display:block; } </style> <? $cat = 0; $result=$db->query("SELECT * FROM `dle_post`, `dle_category` WHERE `dle_post`.category = `dle_category`.id ORDER BY `dle_category`.id"); while($row = $db->get_row($result)) { if ($row['category']!==$cat) { $map .= "<span class='first_level'><a href='".$config['http_home_url']."category/".$val['alt_name']."/'>$val[name]</a></span>\n"; $cat = $row['category']; } if ($config['allow_alt_url'] == "yes") $map .= "<span class='second_level'><a href=".$config['http_home_url'].str_replace("-","/",substr($row['date'],0,10))."/".$row['alt_name'].".html>".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментарів: $row[comm_num]</span>\n"; else $map .= "<span class='second_level'><a href=".$config['http_home_url']."index.php?newsid=".$row['id'].">".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментарів: $row[comm_num]</span>\n"; } ?> Ссылка на сообщение Поделиться на других сайтах
kolyma 2 Опубликовано: 23 января 2007 Рассказать Опубликовано: 23 января 2007 А готовый есть модуль с докой о подключении? Ссылка на сообщение Поделиться на других сайтах
Numb 0 Опубликовано: 23 января 2007 Рассказать Опубликовано: 23 января 2007 Автор Есть, только там около 60 запросов к БД, вот поэтому я и хочу что бы кто нить его оптимизировал. Вот сам модуль: http://mirclipov.com/site_map.rar Ссылка на сообщение Поделиться на других сайтах
domovoi 0 Опубликовано: 23 января 2007 Рассказать Опубликовано: 23 января 2007 Вот, сделал на основе кода от vovik_sumy ну и оригинала от Numb )) Скачать Только я бы из неё убрал автора, количество просмотров и комментариев - поисковикам и посетителям на это плевать (IMHO) Ссылка на сообщение Поделиться на других сайтах
kolyma 2 Опубликовано: 24 января 2007 Рассказать Опубликовано: 24 января 2007 domovoi, Все работает, но.... id новости в категории одинаковый, без ЧПУ. С ЧПУ норм. Как сделать чтоб работало без ЧПУ? Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 24 января 2007 Рассказать Опубликовано: 24 января 2007 domovoi, Все работает, но.... id новости в категории одинаковый, без ЧПУ. С ЧПУ норм. Как сделать чтоб работало без ЧПУ? Переделать запрос. Т.е. SELECT и вызывать поля по одному.... И как вариант Написать FROM `dle_category`,`dle_post` Вместо FROM `dle_post`, `dle_category` Поле id есть в одной и в другой БД. Ссылка на сообщение Поделиться на других сайтах
Jeka009 2 Опубликовано: 26 января 2007 Рассказать Опубликовано: 26 января 2007 Насколько уменьшилось запросов и сколько их сейчас? Ссылка на сообщение Поделиться на других сайтах
kolyma 2 Опубликовано: 26 января 2007 Рассказать Опубликовано: 26 января 2007 у меня только один запрос прибавился, по крайней мере так показывает GzipOut Ссылка на сообщение Поделиться на других сайтах
denizzz 0 Опубликовано: 27 января 2007 Рассказать Опубликовано: 27 января 2007 Установил, работает! Спасибо! Но вопрос возник... По какому принципу он выбрасывает всю карту??? Вот как она у меня выглядит: http://www.soft-commander.net/sitemap Но мне так не нравится... Хотелось бы... чтобы в карте было категория-подкатегория- и все новости в ней!!! по порядку.... а не от балды...как щас!!! Ссылка на сообщение Поделиться на других сайтах
yacenter 0 Опубликовано: 27 января 2007 Рассказать Опубликовано: 27 января 2007 Вот как она у меня выглядит: http://www.soft-commander.net/sitemap Но мне так не нравится... Прошелся по твоей карте: К сожалению данная статья не найдена, возможно был изменен ее адрес, воспользуйтесь поиском карта должна отображать только рабочие страницы как например на джумале карта циркового сайта Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 27 января 2007 Рассказать Опубликовано: 27 января 2007 yacenter, Скрипт работает правильно. Просто неправильная логика. В имя страницы вставляется имя раздела. Нужно переписать немного запрос. Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 27 января 2007 Рассказать Опубликовано: 27 января 2007 Вот переделанный вариант. Теперь используется только один запрос. <?PHP /* ===================================================== Copyright (c) 2007 dle.net.ua Владимир Лысак ===================================================== Файл: sitemap.php ----------------------------------------------------- Назначение: построение карты сайта. ===================================================== */ <style type=text/css> .first_level{ margin:0px 0px 0px 10px; font-size: 12px; color: #808080; display: block; } .second_level{ margin:0px 0px 0px 20px; font-size: 12px; color: #808080; display:block; } </style> <?php $cat = -1; $result=$db->query("SELECT `post`.alt_name post_alt_name,`category`.alt_name cat_alt_name,`post`.date,`post`.title, `post`.category,`post`.title,`category`.name,`post`.id,`post`.news_read,`post`.comm_num FROM `".PREFIX."_post` AS `post`, `".PREFIX."_category` AS `category` WHERE `post`.category = `category`.id ORDER BY `category`.id"); while($row = $db->get_row($result)) { if ($row['category']!=$cat) { $map .= "<span class='first_level'><a href='".$config['http_home_url']."category/".$row['cat_alt_name']."'>".$row[name]."</a></span>\n"; $cat = $row['category']; } if ($config['allow_alt_url'] == "yes") $map .= "<span class='second_level'><a href=".$config['http_home_url'].str_replace("-","/",substr($row['date'],0,10))."/".$row['post_alt_name'].".html>".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментарів: $row[comm_num]</span>\n"; else $map .= "<span class='second_level'><a href=".$config['http_home_url']."index.php?newsid=".$row['id'].">".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментарів: $row[comm_num]</span>\n"; } $tpl->load_template('static.tpl'); $tpl->set('{description}', "Карта сайту"); $tpl->set('{static}', $map); $tpl->compile('content'); $tpl->clear(); ?> Ссылка на сообщение Поделиться на других сайтах
Numb 0 Опубликовано: 28 января 2007 Рассказать Опубликовано: 28 января 2007 Автор Ловите вновь переделанный вариант vovik_sumy: <?php if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } $cat = -1; $result=$db->query("SELECT `post`.alt_name post_alt_name,`category`.alt_name cat_alt_name,`post`.title, `post`.category,`post`.title,`category`.name,`post`.id,`post`.comm_num FROM `".PREFIX."_post` AS `post`, `".PREFIX."_category` AS `category` WHERE `post`.category = `category`.id ORDER BY `category`.id"); while($row = $db->get_row($result)) { if ($row['category']!=$cat) { $map .= "<span class='first_level'><p><a href='".$config['http_home_url']."category/".$row['cat_alt_name']."'><b>".$row[name]."</b></a></p></span>\n"; $cat = $row['category']; } if ($config['allow_alt_url'] == "yes") $map .= "<span class='second_level'><a href=".$config['http_home_url'].str_replace("-","/",substr($row['date'],0,10))."/".$row['post_alt_name'].".html>".stripslashes($row[title])."</a></span><br>\n"; else $map .= "<span class='second_level'><a href=".$config['http_home_url']."index.php?newsid=".$row['id'].">".stripslashes($row[title])."</a></span><br>\n"; } $tpl->load_template('static.tpl'); $tpl->set('{description}', "Карта сайта"); $tpl->set('{static}', $map); $tpl->compile('content'); $tpl->clear(); ?> Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 28 января 2007 Рассказать Опубликовано: 28 января 2007 Исправленная версия.. Ошибочка была))) <?php /* ===================================================== Copyright (c) 2007 dle.net.ua Владимир Лысак ===================================================== Файл: sitemap.php ----------------------------------------------------- Назначение: построение карты сайта. ===================================================== */ ?> <style type=text/css> .first_level{ margin:0px 0px 0px 10px; font-size: 12px; color: #808080; display: block; } .second_level{ margin:0px 0px 0px 20px; font-size: 12px; color: #808080; display:block; } </style> <?php $cat = -1; $result=$db->query("SELECT `post`.alt_name post_alt_name,`category`.alt_name cat_alt_name,`post`.date,`post`.title, `post`.category,`post`.title,`category`.name,`post`.id,`post`.news_read,`post`.comm_num, `post`.autor FROM `".PREFIX."_post` AS `post`, `".PREFIX."_category` AS `category` WHERE `post`.category = `category`.id ORDER BY `category`.id"); while($row = $db->get_row($result)) { if ($row['category']!=$cat) { $map .= "<span class='first_level'><a href='".$config['http_home_url']."category/".$row['cat_alt_name']."'>".$row[name]."</a></span>\n"; $cat = $row['category']; } if ($config['allow_alt_url'] == "yes") $map .= "<span class='second_level'><a href=".$config['http_home_url'].str_replace("-","/",substr($row['date'],0,10))."/".$row['post_alt_name'].".html>".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментариев: $row[comm_num]</span>\n"; else $map .= "<span class='second_level'><a href=".$config['http_home_url']."index.php?newsid=".$row['id'].">".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментариев: $row[comm_num]</span>\n"; } $tpl->load_template('static.tpl'); $tpl->set('{description}', "Карта сайту"); $tpl->set('{static}', $map); $tpl->compile('content'); $tpl->clear(); ?> Ссылка на сообщение Поделиться на других сайтах
Jeka009 2 Опубликовано: 29 января 2007 Рассказать Опубликовано: 29 января 2007 Надобы выборку сделать от новых новостей к старым и не показывать те что на модерации. Как это сделать? Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 30 января 2007 Рассказать Опубликовано: 30 января 2007 DocentX, WHERE `post`.category = `category`.id ORDER BY `category`.id"); заменить на WHERE `post`.category = `category`.id AND `post`.approve=1 ORDER BY `category`.id,`post`.id"); Сортирует по дате и показывает теперь только допущенные к просмотру. Ссылка на сообщение Поделиться на других сайтах
Numb 0 Опубликовано: 2 февраля 2007 Рассказать Опубликовано: 2 февраля 2007 Автор vovik_sumy, можешь сделать что бы карта кешировалась ? Ссылка на сообщение Поделиться на других сайтах
vovik_sumy 0 Опубликовано: 3 февраля 2007 Рассказать Опубликовано: 3 февраля 2007 Numb, <?php /* ===================================================== Copyright (c) 2007 dle.net.ua Владимир Лысак ===================================================== Файл: sitemap.php ----------------------------------------------------- Назначение: построение карты сайта. ===================================================== */ ?> <style type=text/css> .first_level{ margin:0px 0px 0px 10px; font-size: 12px; color: #808080; display: block; } .second_level{ margin:0px 0px 0px 20px; font-size: 12px; color: #808080; display:block; } </style> <?php $sitemap = dle_cache ("sitemap", $config['skin']); if(!$sitemap) { $cat = -1; $result=$db->query("SELECT `post`.alt_name post_alt_name,`category`.alt_name cat_alt_name,`post`.date,`post`.title, `post`.category,`post`.title,`category`.name,`post`.id,`post`.news_read,`post`.comm_num, `post`.autor FROM `".PREFIX."_post` AS `post`, `".PREFIX."_category` AS `category` WHERE `post`.category = `category`.id ORDER BY `category`.id"); while($row = $db->get_row($result)) { if ($row['category']!=$cat) { $map .= "<span class='first_level'><a href='".$config['http_home_url']."category/".$row['cat_alt_name']."'>".$row[name]."</a></span>\n"; $cat = $row['category']; } if ($config['allow_alt_url'] == "yes") $map .= "<span class='second_level'><a href=".$config['http_home_url'].str_replace("-","/",substr($row['date'],0,10))."/".$row['post_alt_name'].".html>".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментариев: $row[comm_num]</span>\n"; else $map .= "<span class='second_level'><a href=".$config['http_home_url']."index.php?newsid=".$row['id'].">".stripslashes($row[title])."</a> | $row[autor] | Прочитано: $row[news_read] | Коментариев: $row[comm_num]</span>\n"; } create_cache("sitemap", $map); } $tpl->load_template('static.tpl'); $tpl->set('{description}', "Карта сайту"); $tpl->set('{static}', $map); $tpl->compile('content'); $tpl->clear(); ?> Ссылка на сообщение Поделиться на других сайтах
Гость Автоответчик Опубликовано: 3 февраля 2007 Рассказать Опубликовано: 3 февраля 2007 <#thank#> Ссылка на сообщение Поделиться на других сайтах
gopal 0 Опубликовано: 4 февраля 2007 Рассказать Опубликовано: 4 февраля 2007 vovik_sumy можеш архивом скинуть? чет не разобрал Ссылка на сообщение Поделиться на других сайтах
DL87 0 Опубликовано: 4 февраля 2007 Рассказать Опубликовано: 4 февраля 2007 а как установить то этот мод? поиск юзал,ответа не нашёл Ссылка на сообщение Поделиться на других сайтах
Numb 0 Опубликовано: 4 февраля 2007 Рассказать Опубликовано: 4 февраля 2007 Автор Создай файл sitemap.php в него введи весь код из #21 сообщения. А потом по инструкции: Заходим в .htaccess. -------------------- Добавляем где угодно, но лучше в конец Код: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Карта сайта RewriteRule ^sitemap(/?)+$ /?do=sitemap ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Заходим в engine.php. --------------------- Добавляем, например после Код ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ case "addnews" : include ENGINE_DIR.'/modules/addnews.php'; break; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ следующий код Код ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ case "sitemap" : include ENGINE_DIR.'/modules/sitemap.php'; break; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Закачаиваем файл sitemap.php в папку, engine/modules Всё. Карта сайта доступна по адресу: http://ВАШ.САЙТ/sitemap ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ P.S. Всё работает. Можете посмотреть здесь: http://mirclipov.com/sitemap Только что меня посетила очень хорошая мысль! Смысл в том, что бы раздель карту сайта на страницы. Что бы например на каждой странице было бы по 500 новостей. Кто сможет такое воплотить ? Буду очень признателен! Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Архивировано
Эта тема находится в архиве и закрыта для публикации сообщений.