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) Изменено 23 января 2007 пользователем domovoi Цитата Ссылка на сообщение Поделиться на других сайтах
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, Скрипт работает правильно. Просто неправильная логика. В имя страницы вставляется имя раздела. Нужно переписать немного запрос. Изменено 27 января 2007 пользователем vovik_sumy Цитата Ссылка на сообщение Поделиться на других сайтах
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(); ?> Изменено 28 января 2007 пользователем vovik_sumy Цитата Ссылка на сообщение Поделиться на других сайтах
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 новостей. Кто сможет такое воплотить ? Буду очень признателен! Изменено 4 февраля 2007 пользователем Numb Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.