[Другое] Цитатник от jon4god (lsass.exe)

Пусть побудут пока H2 о тенденциях я отпишусь. Идея возникла насчет кейвордов... А если их из тегов формировать?
 
jon4god, обнаружилось пару багов.

Если есть "цитаты в рассмотрении", но в них присутствуют теги которые уже есть на сайте, то при отсортировке по любому из этих тегов, показываются/выводятся и ещё неподтверждённые цитаты у которых есть этот тег.

И при создании sitemap.xml если есть неподтвержденные цитаты, то в карте создаётся кол-во ссылок на страницы равное кол-ву всех цитат, в том числе и неподтверждённых. Только ссылки на неподтверждённые цитаты не содержат id, а тупо создаются в виде:

<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>http://site.ru/id</loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
 
Точно баги.
sitemap лечится так:
в файле func.php в функции sitemap_generate
меняем строку
PHP:
$result = mysql_query("SELECT COUNT(*) FROM `quotes`");
на
PHP:
$result = mysql_query("SELECT COUNT(*) FROM `quotes` WHERE `status` = 'checked'");
А вот с тегами сложнее... там поиск идет по совершенно разным таблицам... если запретить показ неодобренных цитат, то ломается шаблон сайта. :( На свежую голову думать надо. Поэтому пока ждем'с! :)
 
С утра пришло простое решение проблемы с тегами неопубликованных цитат.
В файле tag.php в цикле заменить
PHP:
$qid = $t['quote_id'];
$r = mysql_query("SELECT * FROM `quotes` WHERE `id` = '$qid'");
$r = mysql_fetch_array($r);
echo showquote($r['id'],$r['content'],$r['moderator'],$r['date'],$r['rating']);
на
PHP:
$qid = $t['quote_id'];
$r = mysql_query("SELECT * FROM `quotes` WHERE `id` = '$qid' AND `status` = 'checked'");
$r = mysql_fetch_array($r);
if ($r['id'] != 0) echo showquote($r['id'],$r['content'],$r['moderator'],$r['date'],$r['rating']);
Заметил, что титл при поиске тега тоже стандартный. Стоит его менять например с "Советы туристам" на "Советы туристам - горелка"? Эти страницы индексируются или нет?
 
С утра пришло простое решение проблемы с тегами неопубликованных цитат.

Что-то я код на новый заменил и вообще, даже опубликованные цитаты перестали показываться..
 
P.S. А кто надоумит в какие теги лучше взять цитату H1, H2 или H3? Или это вообще делать не надо?

Ну продолжаю копи-пастить
(ИМХО - думаю это особо НЕ повлияет на оптимизацию... Думаю если собрались оптимизировать нужно извлекать опыт из соственного поведения - т.е анализировать какую ссылку мы жмем в поисковике?)
 
Что-то я код на новый заменил и вообще, даже опубликованные цитаты перестали показываться..
Кто то еще менял? У меня почему то работает. Покажите ваш первоначальный участок кода и побольше, побольше! :)
Revenge-R С заголовками вроде понятно. поэтому оставлю H2. Хотя можно и H6. :) И также понятно, что надо все же карту сайта прикрутить. Да такую что бы Sape ее хорошо кушала, т.е. по 150 ссылок.
 
У меня почему то работает. Покажите ваш первоначальный участок кода и побольше, побольше!

Полное содержимое файла tag.php

PHP:
<?
require_once "inc/top.php";
require_once "config.php";
require_once "func.php";
$tag = protect_get($_GET['tag']);
$stag = strlen($tag);
if($stag >= 2)
  {
  $t_query = mysql_query("SELECT `quote_id` FROM `tags_cloud` WHERE `tag` = '$tag' ORDER BY `id` DESC LIMIT 0,20");
  $n_query = mysql_num_rows($t_query);
  if ($n_query >=1 )
     {
       echo "<table width=750>";
       while($t = mysql_fetch_array($t_query))
            {
              $qid = $t['quote_id'];
              $r = mysql_query("SELECT * FROM `quotes` WHERE `id` = '$qid'");
              $r = mysql_fetch_array($r);
	          echo showquote($r['id'],$r['content'],$r['moderator'],$r['date'],$r['rating']);
            }
       echo "</table><br><br>";
     } else {
      echo "<div class=\"dialog-round\">
             <span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span>
			 <div><strong>Цитат по данному тегу не найдено</strong></div>
			 <span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span>
									</div><br>
			<meta http-equiv='refresh' content='3; URL=javascript:javascript:history.go(-1)'>";
     }
 } else {
    echo "<div class=\"dialog-round\">
             <span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span>
			 <div><strong>Длина тега должна быть более 2 символов!</strong></div>
			 <span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span>
									</div><br>
			<meta http-equiv='refresh' content='3; URL=javascript:javascript:history.go(-1)'>";
 }
require_once "inc/bottom.php";
?>
 
Странно. Все должно работать.
Осуществляется два действия
PHP:
$r = mysql_query("SELECT * FROM `quotes` WHERE `id` = '$qid' AND `status` = 'checked'");
- из базы берутся только одобренные цитаты.
И
PHP:
if ($r['id'] != 0) echo showquote($r['id'],$r['content'],$r['moderator'],$r['date'],$r['rating']);
- вывод цитаты осуществляется только по условию, т.е. если возник лишний цикл вывода цитаты из-за встречающейся неодобренной цитаты, то она пропускается.
Вы точно все вставляете? Копируете с форума или вручную пишите?
 
Вы точно все вставляете? Копируете с форума или вручную пишите?

Ну, конечно не вручную. Из вашего сообщения копирую, собственно вот как выглядит файл tag.php после замены:

PHP:
<?
require_once "inc/top.php";
require_once "config.php";
require_once "func.php";
$tag = protect_get($_GET['tag']);
$stag = strlen($tag);
if($stag >= 2)
  {

  $t_query = mysql_query("SELECT `quote_id` FROM `tags_cloud` WHERE `tag` = '$tag' ORDER BY `id` DESC LIMIT 0,20");
  $n_query = mysql_num_rows($t_query);

  if ($n_query >=1 )
     {

       echo "<table width=750>";
       while($t = mysql_fetch_array($t_query))
            {
$qid = $t['quote_id']; 
$r = mysql_query("SELECT * FROM `quotes` WHERE `id` = '$qid' AND `status` = 'checked'"); 
$r = mysql_fetch_array($r); 
if ($r['id'] != 0) echo showquote($r['id'],$r['content'],$r['moderator'],$r['date'],$r['rating']); 
            }
       echo "</table><br><br>";

     } else {
      echo "<div class=\"dialog-round\">
             <span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span>
			 <div><strong>Цитат по данному тегу не найдено</strong></div>
			 <span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span>
									</div><br>
			<meta http-equiv='refresh' content='3; URL=javascript:javascript:history.go(-1)'>";
     }

 } else {
    echo "<div class=\"dialog-round\">
             <span class=\"d1\"></span><span class=\"d2\"></span><span class=\"d3\"></span>
			 <div><strong>Длина тега должна быть более 2 символов!</strong></div>
			 <span class=\"d3\"></span><span class=\"d2\"></span><span class=\"d1\"></span>
									</div><br>
			<meta http-equiv='refresh' content='3; URL=javascript:javascript:history.go(-1)'>";
 }

require_once "inc/bottom.php";
?>
 
Назад
Сверху