Форумы / National / Russian / Тех. поддержка / Похожие страницы из одной категории. similar

12>>>

jcrush
#1 15.01.2010 14:41
Есть плагин еще от седа похожих страниц, можно как нибудь его можифицировать, чтобы он похожии страницы цеплял только из категорий к которой относиться открытая страница?

$relev = $cfg['plugin']['similar']['relev'];
$limit = $cfg['plugin']['similar']['max_sim'];

$pag[page_title] = sed_sql_prep($pag[page_title]);
$sql_sim = sed_sql_query("SELECT p.*, u.user_name FROM $db_pages AS p LEFT JOIN $db_users AS u ON u.user_id=p.page_ownerid WHERE (p.page_state='0' OR p.page_state='2') AND p.page_id != $pag[page_id] AND MATCH (page_title) AGAINST ('$pag[page_title]')>$relev LIMIT $limit");
if (sed_sql_numrows($sql_sim)==0)
	{
	$plugin_out .= "";
	}
else {
$i=1;

//$plugin_out .= "<ul><b>.............. ..........:</b>\n";

$plugin_out .= "<p><b>.............. ..........:</b></p><ul>\n";

while ($row = sed_sql_fetcharray($sql_sim))
       {
               $row['page_pageurl'] = (empty($row['page_alias'])) ? "page.php?id=".$row['page_id'] : "page.php?al=".$row['page_alias'];
               $plugin_out .= "<li class=\"pw\"><a href=\"$row[page_pageurl]\">$row[page_title]</a></li>\n";
               $i++;
       }

}
$plugin_out .= "</ul>\n";
$t->assign("SIMILAR_PAGES", $plugin_out);
SEO блог: http://blog.stfw.ru/
Clever
#2 15.01.2010 21:45
Хорошая идея...
Только развил бы...
Помимо из текущей категории дополнительно еще и по сайту исключая найденое выше...

Похожее в категории:
бла бла бла
Похожее на сайте:
бла2 бла2 бла2

Добавлено 4 Минуты спустя:

Скорее всего там в четвертую строку нужно добавить дополнительное условие AND p.page_cat = $с
что-то типа этого, но надо эксперементировать...
но профи должны знать как правильно.
jcrush
#3 15.01.2010 22:14
может кто подскажет, а то как то не айс получается, если сайт растет, а новости совсем не в тему...

вот перелинковка как в википедии это да, это тема, но это для нас пока фантастика...
SEO блог: http://blog.stfw.ru/
esclkm
#4 15.01.2010 23:37
клевер дал относительно верный способ
только изучи как строятся новостит и сделай подобно...

а вообще ребят вы побойтесь SQL запросов и времени со своим сео
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Clever
#5 16.01.2010 01:15
Ну а как без сео жить?

Первыми сайт читают поисковики, а остальными уже пользователи...
Если Первым не понравится, то трижды интересная и нужная статья не будет не кем прочитана.

jcrush, правильно заметил недоработку плуга. Такая проблема даже с моими 2к страницами назревает... а его Пятилетним сайтом, так это вообще беда... Не нужны новости тем кто читает обзоры и обзоры тем кто читает новости.

Добавлено 41 секунда спустя:

esclkm, подскажи... тебе две секи ведь разобраться
esclkm
#6 16.01.2010 02:11
Clev. если сайт грузится больше 10 ссекунд то даже поисковики не будут свое время тратить...
littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты
Yusupov
#7 16.01.2010 04:25
Может добавить в запрос AND p.page_cat = $pag['page_cat']
jcrush
#8 16.01.2010 08:48
ошибки вылазят
SEO блог: http://blog.stfw.ru/
Yusupov
#9 16.01.2010 14:32
Какие ошибки? Покажи...
Нашел тут ветку на возможные ошибки: http://neocrome.ru/forums.php?m=posts&p=16976#16976
У меня все норм заработало.
Пример: http://webbirga.ru/catalog/sport/yoga/81
Отредактировано: Yusupov (16.01.2010 14:44, 14 лет назад)
jcrush
#10 16.01.2010 18:25
напиши как ты сделал чтобы выводилось только из одной категории ?
SEO блог: http://blog.stfw.ru/
Yusupov
#11 16.01.2010 19:34
Фрагмент моего кода:
$simp = new XTemplate(sed_skinfile('similar', true));

$pag[page_title] = sed_sql_prep($pag[page_title]);

$sql_sim = sed_sql_query("SELECT p.*, u.user_name FROM $db_pages AS p 
LEFT JOIN $db_users AS u ON u.user_id=p.page_ownerid 
WHERE (p.page_state='0' OR p.page_state='2') 
AND p.page_id != $pag[page_id] 
AND page_cat='$pag[page_cat]' 
AND MATCH (page_title) AGAINST ('$pag[page_title]')>$relev 
LIMIT $limit");

if (sed_sql_numrows($sql_sim)!=0){
	$jj = 0;
	while ($pag = sed_sql_fetcharray($sql_sim)){
		$jj++;
		$catpath = sed_build_catpath($pag['page_cat'], "<a href=\"%1\$s\">%2\$s</a>");
		$pag['page_pageurl'] = (empty($pag['page_alias'])) ? sed_url('page', 'id='.$pag['page_id']) : sed_url('page', 'al='.$pag['page_alias']);
		$pag['page_fulltitle'] = $catpath." ".$cfg['separator']." <a href=\"".$pag['page_pageurl']."\">".htmlspecialchars($pag['page_title'])."</a>";
	
		$item_code = 'p'.$pag['page_id'];
		list($pag['page_comments'], $pag['page_comments_display']) = sed_build_comments($item_code, $pag['page_pageurl'], FALSE);
		list($list_ratings, $list_ratings_display) = sed_build_ratings('p'.$pag['page_id'], $pag['page_pageurl'], $ratings);
		
		$simp-> assign(array(
			"PAGE_ROW_URL" => $pag['page_pageurl'],
			"PAGE_ROW_ID" => $pag['page_id'],
			"PAGE_ROW_TITLE" => $pag['page_fulltitle'],
			"PAGE_ROW_SHORTTITLE" => htmlspecialchars($pag['page_title']),
			"PAGE_ROW_CAT" => $pag['page_cat'],
			"PAGE_ROW_CATTITLE" => htmlspecialchars($sed_cat[$pag['page_cat']]['title']),
			"PAGE_ROW_CATPATH" => $catpath,
			"PAGE_ROW_CATDESC" => htmlspecialchars($sed_cat[$pag['page_cat']]['desc']),
			"PAGE_ROW_CATICON" => $sed_cat[$pag['page_cat']]['icon'],
			"PAGE_ROW_KEY" => htmlspecialchars($pag['page_key']),
			"PAGE_ROW_DESC" => htmlspecialchars($pag['page_desc']),
			"PAGE_ROW_AUTHOR" => htmlspecialchars($pag['page_author']),
			"PAGE_ROW_OWNER" => sed_build_user($pag['page_ownerid'], htmlspecialchars($pag['user_name'])),
			"PAGE_ROW_AVATAR" => sed_build_userimage($pag['user_avatar'], 'avatar'),
			"PAGE_ROW_DATE" => @date($cfg['formatyearmonthday'], $pag['page_date'] + $usr['timezone'] * 3600),
			"PAGE_ROW_FILEURL" => $pag['page_url'],
			"PAGE_ROW_SIZE" => $pag['page_size'],
			"PAGE_ROW_COUNT" => $pag['page_count'],
			"PAGE_ROW_FILECOUNT" => $pag['page_filecount'],
			"PAGE_ROW_COMMENTS" => $pag['page_comments'],
			"PAGE_ROW_RATINGS" => $list_ratings,
			"PAGE_ROW_ODDEVEN" => sed_build_oddeven($jj),
			"PAGE_ROW_NUM" => $jj,
			));
	
		$simp->parse("SIMILAR.PAGE_ROW");		
	   }

	$simp->parse("SIMILAR");
	$t->assign('SIMILAR', $simp->text("SIMILAR"));
}

Еще нужно добавить файл similar.tpl с кодом:

<!-- BEGIN: SIMILAR -->
	<!-- BEGIN: PAGE_ROW -->
	<strong><a href="{PAGE_ROW_URL}">{PAGE_ROW_SHORTTITLE}</a></strong><br>
	<!-- END: PAGE_ROW -->
<!-- END: SIMILAR -->
Snake07
#12 16.01.2010 19:44
А еще можно сделать чтобы похожие страницы выводились случайным образом. Вот пример
http://knizhnik.org/page/skott-mariani-zagovor-motsarta.html
jcrush
#13 16.01.2010 20:16
случайным не айс

Добавлено 18 Минут спустя:

спасибо, я кавычки забыл написать, все ок.
SEO блог: http://blog.stfw.ru/
Отредактировано: jcrush (16.01.2010 20:35, 14 лет назад)
Azazello
#14 01.08.2010 17:37
Выложите кто нибудь "Similar pages" под Cotonti.
jcrush
#15 06.08.2010 05:54
плагин с седа еще...
SEO блог: http://blog.stfw.ru/

12>>>