Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Разное | Вопросы / Жалобы / Предложения
# 1 Тема: Вывод похожих новостей по теме
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 04 Сентября 2011, 21:06:58
Собственно суть вопроса: возможно в конце каждой новости выводить ссылки на другие похожие новости по теме, либо просто на рандомные новости? Когда-то давно видел плагин для этих целей, но не могу вспомнить, где именно.
 
^ наверх ^
# 2  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 06 Сентября 2011, 19:43:28
Тихо в теме... Никто раньше не задавался таким вопросом?

К примеру есть идея использовать код:

$pres = dbquery("SELECT page_id, page_title FROM ".DB_CUSTOM_PAGES." WHERE page_id='".($_GET['page_id']-1)."'");
$nres = dbquery("SELECT page_id, page_title FROM ".DB_CUSTOM_PAGES." WHERE page_id='".($_GET['page_id']+1)."'");
if (dbrows($pres)) $prev = dbarray($pres);
if (dbrows($nres)) $next = dbarray($nres);
echo "<h4> <left>";

if ((isset($prev['page_id']) && isnum($prev['page_id'])) || (isset($next['page_id']) && ISnUM($next['page_id'])))
echo " Вы здесь: ".($locale['global_200'].$cp_data['page_title'])." ";
echo "<br /> <<<Предыдущая статья: "; { if (isset($prev)) { echo "<a href='".FUSION_SELF."?page_id=".$prev['page_id']."' >".($locale['global_200'].$prev['page_title'])."</a>\n"; }

echo " <br /> >>>Следующая статья: "; if (isset($next)) { echo "<a href='".FUSION_SELF."?page_id=".$next['page_id']."' >".($locale['global_200'].$next['page_title'])."</a>\n"; }
}
echo "</h4> </left>";




Но как быть если статья ранее была удалена? - получаем дырку.
Либо если находимся на первой либо последней странице - аналогично будет дырка.
Также касательно выборки, возможно ли ее сделать рандомной? Сейчас берем станицы по принципу +1 и -1 от той страницы, где находимся.

100% видел плагин для этих целей около 2 лет назад, но никак не могу его найти.

PS. И этот код работает только на простом фушионе. Под php fusion SF адаптировать его не удалось. Может есть кто знающий, кто поможет сделать? Можно на платной основе.


[Изменил(а) mraunder, 06 Сентября 2011, 20:12:11]  
^ наверх ^
# 3  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 06 Сентября 2011, 20:57:33
Вместо page_id='".($_GET['page_id']-1)."' пиши page_id<'".$_GET['page_id']."', и > вместо +1 соответственно - это вывод ссылок на предыдущую и следующие статьи.

Насчет похожих, то можно смотреть как в движке сделан поиск...

если кратко, то титл статьи которую читаем разбиваем на слова, примерный код:

$page_title = "Рада расширила список случаев использования армией оружия в мирное время"; //заголовок статьи которую читаем

$fswords = explode(' ', $page_title);
$swords = array();
for ($i=0;$i<sizeof($fswords);$i++) {
if (strlen($fswords[$i])>=3) { //берем только слова где больше 3 букв, отсеиваются на, в, для, к, от, что, по, из, во и т.д...
$swords[] = $fswords[$i];
}
}
unset($fswords);


далее генерируем строку для запроса

$title = "";
for ($i=0;$i<sizeof($swords);$i++) {
$title .= "page_title LIKE '%".$swords[$i]."%'".($i<sizeof($swords)-1?" OR":"");
}

Сгенерированная строка потом подставляется в запрос.

Так при заголовке статьи "Рада расширила список случаев использования армией оружия в мирное время"

строка будет выглядеть так:
page_title LIKE '%Рада%' OR page_title LIKE '%расширила%' OR page_title LIKE '%список%' OR page_title LIKE '%случаев%' OR page_title LIKE '%использования%' OR page_title LIKE '%армией%' OR page_title LIKE '%оружия%' OR page_title LIKE '%мирное%' OR page_title LIKE '%время%'

Сам запрос будет примерно таким:
$result = dbquery("SELECT * FROM ".$db_prefix."pages WHERE ".$fieldsvar." ORDER BY page_datestamp DESC LIMIT 5");

Ну а далее просто выводим названия страниц

Здесь только пример для заголовка статьи, но можно сделать поиск еще по содержанию статьи

Как пример расматривать можно файл search.php строки 317-391(если ничего неизменилос)


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 4  
SergioSV
Пользователь

Avatar пользователя

В статусе

Любитель Fusion

Сообщений: 305
Откуда: Киев
Зарегистрирован: 23 Декабря 2008, 11:58:57
Сказали спасибо 17 раз
Статус: offline
Опубликовано 09 Сентября 2011, 12:08:11
Всё просто.
Создай панель, обязательно размести её в L-Ctr - тобиш центр низ.
Включить опцию: Отображать на всех страницах
Содержание панели:

if (isset($_GET['readmore']) && isNum($_GET['readmore']) && (substr_count($_SERVER['REQUEST_URI'],'news.php') > 0 ) ) {

//locales
$l_name = 'Другие новости...';
$l_nonews = '<li>В этой категории нет других новостей.</li>';
//===
$cn_count = 25 ; //max news
$cn_ntrim = 100 ; //reduce news
//===
$news_now = $_GET['readmore'];
$see_cat = 0 ;
$result = dbquery("SELECT news_cat FROM ".DB_PREFIX."news WHERE news_id=$news_now LIMIT 0");
if ($data = dbarray($result)) { $see_cat = $data['news_cat']; }

opentable($l_name);
echo '<ul>';

$result = dbquery("SELECT news_subject,news_id,news_reads FROM ".DB_PREFIX."news WHERE news_cat=$see_cat AND news_id<>$news_now ORDER BY news_datestamp DESC LIMIT $cn_count");
if (dbrows($result)) {
while ($data = dbarray($result)) {
echo "<li><span class='small'>[".$data['news_reads']."]</span> <a href='".BASEDIR."news.php?readmore=".$data['news_id']."' title='".$data['news_subject']."'>".trimlink($data['news_subject'],$cn_ntrim)."</a></li>&qu
ot;;
}
}
else { echo $l_nonews; }

echo '</ul>';
closetable();
}

Вот собственно и всё - будет тебе счастье.
С параметрами:
$cn_count = 25 ; //max news
$cn_ntrim = 100 ; //reduce news
Играйся как считаешь нужным для себя.


[Изменил(а) SergioSV, 09 Сентября 2011, 12:10:40]  
^ наверх ^
1 пользователь сказал спасибо Вам: mraunder
# 5  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 09 Сентября 2011, 23:51:27
&qu
ot;;


чот парсится коды негоже smiley


--------------------
Retired
^ наверх ^
# 6  
SergioSV
Пользователь

Avatar пользователя

В статусе

Любитель Fusion

Сообщений: 305
Откуда: Киев
Зарегистрирован: 23 Декабря 2008, 11:58:57
Сказали спасибо 17 раз
Статус: offline
Опубликовано 11 Сентября 2011, 00:09:23
так вставилось
 
^ наверх ^
# 7  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 16 Сентября 2011, 10:01:50
А каким образом в последнем варианте кода выбираются новости для вывода? Как к примеру в этом варианте сделать вывод 5-ти новостей которые были до той, где мы сейчас находимся?
 
^ наверх ^
# 8  
jikaka
Пользователь

Avatar пользователя

jikaka

Почетный SF

Сообщений: 1112
Откуда: Питер
Зарегистрирован: 01 Октября 2008, 08:39:58
Сказали спасибо 106 раз
Статус: offline
ICQ статус 196346743
Опубликовано 16 Сентября 2011, 11:12:45
запрос необходимо подправить


--------------------
жить хорошо! а хорошо жить - еще лучше!
www.rusfusion.ru - официальная поддержка
^ наверх ^ 196346743 www.jikaka.ru
# 9  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 16 Сентября 2011, 21:19:23
Может кто поможет подправить? В замен могу произвести регистрацию сайта в 2700 каталогах. Если что - связь через эту тему либо ЛС. Или пару USD в качестве благодарности переслать.


[Изменил(а) mraunder, 17 Сентября 2011, 16:54:38]  
^ наверх ^
# 10  
SergioSV
Пользователь

Avatar пользователя

В статусе

Любитель Fusion

Сообщений: 305
Откуда: Киев
Зарегистрирован: 23 Декабря 2008, 11:58:57
Сказали спасибо 17 раз
Статус: offline
Опубликовано 18 Сентября 2011, 13:55:43
Если дашь админку к своему сайту подуплюсь, мож подправлю на досуге.
У себя как сообщал в ЛС не могу, так как не юзаю категории вообще.

ЗЫ
А за сам код, зарегить мой сайт в каталогах не? smiley
 
^ наверх ^
# 11  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 18 Сентября 2011, 15:00:58
SergioSV, не вопрос - сделаем. Жду адрес сайта в ЛС, и пожелания по регистрации, если таковые имеются: заголовки, описания.

SergioSV написал:
Если дашь админку к своему сайту подуплюсь, мож подправлю на досуге.

Ок, спасибо. Но проблема в том, что он у меня на Денвере. Я в таком случае на какой-то хостинг его залью, и потом скину в ЛС.
 
^ наверх ^
# 12  
SergioSV
Пользователь

Avatar пользователя

В статусе

Любитель Fusion

Сообщений: 305
Откуда: Киев
Зарегистрирован: 23 Декабря 2008, 11:58:57
Сказали спасибо 17 раз
Статус: offline
Опубликовано 18 Сентября 2011, 18:45:10
Вспомнил, у меня висит ещё один сайтик на шестёрке, посему посмотрю код.

По сайту - каталоги:
Да какие там пожелания, эт не развлекательный ресурс.

Сайт вот: ТЫЦ СЮДЫ

Заголовок: Онкологический портал Украины
Описание: Всё о онкологии и гематологии. Консультации врачей, помощь больным.
Рак не приговор!

Ключевые слова если вдруг понадобятся перешлю в ЛС


[Изменил(а) SergioSV, 18 Сентября 2011, 18:48:16]  
^ наверх ^
# 13  
SergioSV
Пользователь

Avatar пользователя

В статусе

Любитель Fusion

Сообщений: 305
Откуда: Киев
Зарегистрирован: 23 Декабря 2008, 11:58:57
Сказали спасибо 17 раз
Статус: offline
Опубликовано 18 Сентября 2011, 22:31:06
Держи файлом, во избежании каких либо глюков.
Код работает на все 100%
Выводит список только из той категории, в которой просматривается новость.
Выводит по мере убывания.
То есть, свежие новости выше, старые ниже.

Ток локаль подправь под себя.

Вот для примера смотри:
http://prodmash.kiev.ua/news.php?readmore=37

Вот сами категории:
http://prodmash.kiev.ua/news_cats.php
Клацай на новость в категории и увидишь, что выводит список только из неё.
Прикрепленные файлы
Для просмотра вложения зарегистрируйтесь


[Изменил(а) SergioSV, 18 Сентября 2011, 22:33:47]  
^ наверх ^
1 пользователь сказал спасибо Вам: mraunder
# 14  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 25 Сентября 2011, 12:14:39
Все с парсером мучаюсь, может кто поможет? - в замен зарегистрирую сайт в каталогах.

Нужно сам вывод ссылок на новости сделать по схеме:

Вывод двух передних, и трех задних новостей, т.е.:

К примеру находимся на странице:
http://test1.ru/news.php?readmore=500

Соответственно в похожих ссылках выводим:
http://test1.ru/news.php?readmore=501
http://test1.ru/news.php?readmore=502
http://test1.ru/news.php?readmore=499
http://test1.ru/news.php?readmore=498
http://test1.ru/news.php?readmore=497


Как быть в таком случае если находимся на самой первой или самой последней новости?
Если скажем на сайте самая последняя новость имеет адрес:
http://test1.ru/news.php?readmore=500
то тогда «временно» выводить три ссылки на предыдущие новости до тех пор, пока не будут добавлены еще новости.

А если скажем находимся на «первых» новостях:
http://test1.ru/news.php?readmore=1
http://test1.ru/news.php?readmore=2
http://test1.ru/news.php?readmore=3
то тогда выводим 5-ть последующих новостей. (.т.е. что бы не было «дырки»)
 
^ наверх ^
# 15  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 25 Сентября 2011, 13:47:18
То что тебе нужно есть в фотоальбомах...

Старные новости (<500)
$pres = dbquery("SELECT photo_id FROM ".$db_prefix."photos WHERE photo_order='".($data['photo_order']-1)."' AND album_id='".$data['album_id']."'");

Новые новости (>500)
$nres = dbquery("SELECT photo_id FROM ".$db_prefix."photos WHERE photo_order='".($data['photo_order']+1)."' AND album_id='".$data['album_id']."'");

if (dbrows($pres)) $prev = dbarray($pres);
if (dbrows($nres)) $next = dbarray($nres);


если есть старые новости, то выводим их
if (isset($prev)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?photo_id=".$prev['photo_id']."' title='".$locale['451']."'>название новости</a></td>\n";

если есть новые новости, то выводим их
if (isset($next)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?photo_id=".$next['photo_id']."' title='".$locale['452']."'>название новости</a></td>\n";


Только надо немного править, данный код выведет только по 1 новости. Ну и название таблиц и полей надо изменить


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 16  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 26 Сентября 2011, 00:42:49
SELECT photo_id

заменяем на
SELECT news_id


$data['photo_order']-1).

заменяем на
$data['news_order']-1)


А как быть с:
photos WHERE photo_order

на что нужно исправить photos?


[Изменил(а) mraunder, 26 Сентября 2011, 00:45:36]  
^ наверх ^
# 17  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 26 Сентября 2011, 12:30:53
news


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 18  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 26 Сентября 2011, 22:34:34
То есть и photos и photo заменять на news? Так пробовал, но что-то не работает.

album_id заменяем на cats_id - верно?


[Изменил(а) mraunder, 27 Сентября 2011, 21:03:15]  
^ наверх ^
# 19  
mraunder
Пользователь

Avatar пользователя




Местный

Сообщений: 12
Зарегистрирован: 04 Сентября 2011, 21:04:14
Сказали спасибо 0 раз
Статус: offline
Опубликовано 27 Сентября 2011, 21:06:03
Вот переправил, получил два варианта, но к сожалению не первый не второй не хочет работать, где косяк?

$pres = dbquery("SELECT news_id FROM ".$db_prefix."newss WHERE news_order='".($data['news_order']-1)."' AND cats_id='".$data['cats_id']."'");

$nres = dbquery("SELECT news_id FROM ".$db_prefix."newss WHERE news_order='".($data['news_order']+1)."' AND cats_id='".$data['cats_id']."'");

if (dbrows($pres)) $prev = dbarray($pres);
if (dbrows($nres)) $next = dbarray($nres);
if (isset($prev)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?news_id=".$prev['news_id']."' title='".$locale['451']."'>название новости</a></td>\n";

if (isset($next)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?news_id=".$next['news_id']."' title='".$locale['452']."'>название новости</a></td>\n";





$pres = dbquery("SELECT news_id FROM ".$db_prefix."news WHERE news_order='".($data['news_order']-1)."' AND cats_id='".$data['cats_id']."'");

$nres = dbquery("SELECT news_id FROM ".$db_prefix."news WHERE news_order='".($data['news_order']+1)."' AND cats_id='".$data['cats_id']."'");

if (dbrows($pres)) $prev = dbarray($pres);
if (dbrows($nres)) $next = dbarray($nres);
if (isset($prev)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?news_id=".$prev['news_id']."' title='".$locale['451']."'>название новости</a></td>\n";

if (isset($next)) echo "<td width='1%' class='tbl2'><a href='".FUSION_SELF."?news_id=".$next['news_id']."' title='".$locale['452']."'>название новости</a></td>\n";

 
^ наверх ^
# 20  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 28 Сентября 2011, 02:14:46
$data['cats_id']
точно cats? вроде cat было.

Я сделал для семерки, хз сможете переделать под 6рку...
Здесь


--------------------
Retired
^ наверх ^
Перейти на форум:


106,916,774 уникальных посетителей
сейчас: 27 Декабря 2024, 08:14:49
Генерация страницы: 0.49 сек.

Original size:59 кб.
GZipped size: 12 кб.
Compression:80%