Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Хак "Динамические слова" для PHP-Nuke

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сперва комментарии:
Годится как для новостей, так и для статей. Берутся первые 1024 символа их текста, но посольку поисковики воспринимают в основном по 800 и слова меньше чем с 3 символами отбрасываются, то в итоге остается гораздо меньше. Плюс я еще на "дубли слов" проверяю и одинаковые слова выкидываю.
"Дотягивать" до 800 символов лень - усложняется код.
 
Кроме того, чтобы не изращаться,  добавил первым слово "ролевые", нам это актуально и полезно - по этому слову нас находят чаще всего, к тому же убирается некрасивая запятая  в начале
 
Вставляйте в article.php и в sections.php перед вызовом заголовка  

Код:
 include ("header.php");  

 
Для sections этот заголовок встречается несколько раз, вставьете перед тем, что находится в функции viewarticle
 
Вот измененный код:
 

Код:
 
$browserkeywords="ролевые";
$htmlless = check_html($hometext, $strip = nohtml);  
$symbolLess = trim(ereg_replace('("|\?|!|:|\.|\(|\)|;|\\\\)+', ' ', $htmlless));  
$keywords = ereg_replace('( |'.CHR(10).'|'.CHR(13).')+', ',', $symbolLess);  
$keywords2 = substr($keywords,0,1024);  
$pieces = array_unique (explode (",", $keywords2));
for ($i=0; $i < sizeof($pieces); $i++) {
if ( (strlen($pieces[$i])) > 3) {
$browserkeywords="$browserkeywords".", "."$pieces[$i]";}  
     }
 

 
 
 
 
 

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 14:18 15-09-2001 | Исправлено: FatCat, 14:42 15-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, забыл.
 
Вот образец работы:
 
Сама новость:
http://www.rolemancer.ru/article.php?sid=3044&mode=&order=0&thold=0
 
А вот получаемый тэг для поисковиков:
 

Код:
 
<meta name="keywords" content="ролевые, Уважаемые, посетители, Напоминаем, воскресенье, вечером, заканчивается, голосование, конкурсные, работы, тогда, скорее, всего, утром, понедельник, будут, объявлены, победителя, понимаете, больше, проголосовавших, более, объективен, результат, Вынужден, будем, рассматривать, победителей, которые, проголосовало, менее, человек, сказать, нижняя, граница, достоверности, оценки, статьи, призываю, сделал, пройтись, списку, прочитать, поставить, свою, оценку, полный, список, всех, да-да-да, сами, нарвались, разделе, Лучший, сюжет, сказочного, приключения, статей, Старая, цель, новая, надежда, Островные, этюды, Южные, жаркие, ночи, Жемчужина, Джахерда, Плавный, съезд, крыши, настолки, полевку, Подвал, дома, волшебника, игрока-мага, 1-го, уровня, чужой, шкуре, Зачарованный">
 

 
Имхо, более вразумительно получилось, чем Пост-Нюковский вариант?
 
Если кто подскажет более изящное решение, да еще и с тем чтобы дотянуть таки до 800 символов - буду благодарен.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 14:23 15-09-2001
Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
aka Uniq. (уже вижу ,как batva матерится...
 
FatCat, ты - чудо! Я тоже над этим хаком поработал, но твой вариант, имхо, лучше. Спасибо!
 
Есть еще такая мысль. Для поисковиков большой вес имеет title документа, на нюке же все title'ы - одинаковы. Можно выдирать заголовок из статьи и вставлять в title. Для полного же юзабилити, title надо сделать так:
 
Sitename | Topic or Category Name | Article's Title

Отправлено: 16:08 15-09-2001
voll



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не элегантно, но сойдет.
 
$keywords2 = substr($keywords,0,1600);  
$pieces = array_unique (explode (",", $keywords2));  
for ($i=0,$j=7; $i < sizeof($pieces) && $j < 800; $i++) {  
if ( ($slen=strlen($pieces[$i])) > 3) {  
$browserkeywords="$browserkeywords".", "."$pieces[$i]"; $j+=$slen+2; }  
}

Всего записей: 656 | Зарегистр. 16-07-2001 | Отправлено: 18:23 15-09-2001 | Исправлено: voll, 18:33 15-09-2001
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
aka Uniq. (уже вижу ,как batva матерится...  

 почему?
классный хак, я даже его возьму может быть...
 
Я матился по постнюковскому варианту.
 
FatCat

Цитата:
Имхо, более вразумительно получилось, чем Пост-Нюковский вариант?  


Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 19:05 15-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uniq
 

Цитата:
Есть еще такая мысль. Для поисковиков большой вес имеет title документа, на нюке же все title'ы - одинаковы. Можно выдирать заголовок из статьи и вставлять в title. Для полного же юзабилити, title надо сделать так:  
Sitename | Topic or Category Name | Article's Title

 
Я разве не говорил? Подстановка "пути" в title у нас сделана месяц назад. Там все гораздо проще - просто названия секций собираешь, но посколькуу нас схема формирования не такая как у всех - я ее тут не расписывал. Мы берем только название сайта + название текущей секции + название статьи.
 
Да вот, сам посмотри на title
http://www.rolemancer.ru/sections.php?op=viewarticle&artid=1142
 
Это потому что у нас уровень вложенности неограниченный и если собирать все названия разделов - дико длинный title получится - поисковик может не взять.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 20:57 15-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
voll
Оно! Спасибо.
Только не понял почему $slen+2, а не просто $slen - запятую и пробел учитываешь? Я так думаю что поисковик их все же не считает.
 
Кстати, я еще добавил вначале дополнительный  

Код:
 
$content2=strip_tags($content);
$htmlless = check_html($content2, $strip = nohtml);  
 

а то у меня на втором сайте в ряде статей спева идет длиннююююющая табличка со скриншотами, в итоге в кейворды почти ничего не попадает. А так сперва теги выкидываются, а потом уже берется тэг. Почему-то вторая строка не срабатывала. Я вообще не понял откуда эта check_html - ее в мануале нет. Скорей всего какая-та функция в том же вайле, кода которой я не знаю (Постнюк не ковырял). Добавил впереди стандартную php-шную выкидывалку - вроде помогло.
 
В итоге - вот финальный (?) код.
 

Код:
 
 
$browserkeywords="ролевые";  
$content2=strip_tags($content);
$htmlless = check_html($content2, $strip = nohtml);  
$symbolLess = trim(ereg_replace('("|\?|!|:|\.|\(|\)|;|\\\\)+', ' ', $htmlless));  
$keywords = ereg_replace('( |'.CHR(10).'|'.CHR(13).')+', ',', $symbolLess);  
$keywords2 = substr($keywords,0,1600);    
$pieces = array_unique (explode (",", $keywords2));  
for ($i=0,$j=7; $i < sizeof($pieces) && $j < 800; $i++) {  
if ( ($slen=strlen($pieces[$i])) > 3) {  
$browserkeywords="$browserkeywords".", "."$pieces[$i]"; $j+=$slen+2; }    
     }  
 
 

 
Note: $content - это переменная которая у нас в статьх испольщуется - просто измените на свою, если у вас отличается.
 
Что в итоге получается?
вот статья:
http://www.rolemancer.ru/sections.php?op=viewarticle&artid=1140
 
Это старый вариант:

Код:
 
<meta name="keywords" content="ролевые, Наверное, состоянии, вспомнить, правила, трех-четырех, карточных, конечно, каждый, может, перечислить, карты, стандартной, колоды, листов, говорить, всегда, были, одним, самых, популярных, занятий, кругу, скучающих, масс, желающих, приятно, провести, время, хорошей, компании, убить, пару-другую, часов, свободного, времени, Оставив, покое, моральный, аспект, процесса, уничтожения, временного, фонда, можно, отметить, несмотря, относительно, небольшой, набор, карт, вполне, достаточно, создания, множества, удовлетворяющих, самые, разнообразные, слои, населения, Кто-то, предпочитает, сражаться, своими, соседями, «дурачка», азартные, жить, могут, покера, интеллектуалы, часами, сидят, преферансом, есть, сложность, варьируются, весьма, существенно, чего, желать, довольны, счастливы, доволен, играет, шахматы, менее, люди, существа, изобретательные, вечно, ищущие, чего-нибудь, нового, Видимо, поэтому, появилось, совершенно, новое, семейство, коллекционные, карточные, игры…, Собственно, этом, семействе, планировал, поговорить">
 

 
Вариант текущий:

Код:
 
<meta name="keywords" content="ролевые, Наверное, состоянии, вспомнить, правила, трех-четырех, карточных, конечно, каждый, может, перечислить, стандартной, колоды, листов, говорить, всегда, были, одним, самых, популярных, занятий, кругу, скучающих, масс, желающих, приятно, провести, время, хорошей, компании, убить, пару-другую, часов, свободного, времени, Оставив, покое, моральный, аспект, процесса, уничтожения, временного, фонда, отметить, несмотря, относительно, небольшой, набор, карт, вполне, достаточно, создания, множества, удовлетворяющих, самые, разнообразные, слои, населения, Кто-то, предпочитает, сражаться, своими, соседями, «дурачка», азартные, жить, могут, покера, интеллектуалы, часами, сидят, преферансом, есть, сложность, варьируются, весьма, существенно, чего, можно, желать, довольны, счастливы, доволен, играет">
 

 
Гм...во втором случае 637 символов, а в первом - 835
 
ЗЫ.  Мне тут подсказали что поисковик таки считает пробелы и запятые, поэтому  $slen+2 нужно оставить. Вместе с пробелами и запятыми как раз 800 и выходит (хотя 800 можно уменьшить на размер "вводного" слова).

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 21:40 15-09-2001 | Исправлено: FatCat, 21:44 15-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, как думаете - может увеличить "отброс" до 5 символов? Я тут глянул - слова из 4-х символов как правило невразумительные.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 21:48 15-09-2001 | Исправлено: FatCat, 21:50 15-09-2001
Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
aka Uniq.
 
Есть такое мнение, что пробелы после запятых - не обязательны. Однако. Чем больше ключевых слов в кивордсах - тем меньше их вес. Вот такая вот байда.

Отправлено: 22:08 15-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ага, я тоже читал. Есть альтернатиная мысль выбирать только слова, заключенные внутри тэгов <b></b>. Правда у нас есть статьи в которых выделение вообще не используется. Да и даже если выделено, не факт что в заголовке "умные" слова используются.
А как предлагашь тогда отбирать???

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 22:26 15-09-2001
Guest

BANNED
Редактировать | Цитировать | Сообщить модератору
aka Uniq.
 
ИМХО, как есть - пока лучше не придумаешь. Как правило, ключевые слова статьи встречаются уже в первом-втором абзаце.

Отправлено: 00:29 16-09-2001
law



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А у меня сразу не получилось (Nuke v.4.4), поэтому для тех кто захочет использовать данный совет у себя на сайте - дополнительные инструкции:
 
Надо прописать переменную $browserkeywords в header.php как глобальную. У меня это выглядит теперь так:

Код:
 
function head() {
    global $index;
    if (!isset($index)) {
include("config.php");
    } else {
global $slogan, $site_font, $sitename, $banners, $Default_Theme, $uimages;
    }
    global $artpage, $browserkeywords, $topic, $hlpfile, $user, $hr, $theme, $cookie, $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $textcolor1, $textcolor2, $forumpage;
 

 
И в связи с тем что сама статья состоит из 2 частей $hometext и $bodytext я изменил вышеприведенный код от FatCat следующим образом:
 

Код:
 
$browserkeywords="хостинг";
$lawcontent="$hometext $bodytext";
$content2=strip_tags($lawcontent);
$htmlless = check_html($content2, $strip = nohtml);
$symbolLess = trim(ereg_replace('("|\?|!|:|\.|\(|\)|;|\\\\)+', ' ', $htmlless));
$keywords = ereg_replace('( |'.CHR(10).'|'.CHR(13).')+', ',', $symbolLess);
$keywords2 = substr($keywords,0,1600);
$pieces = array_unique (explode (",", $keywords2));
for ($i=0,$j=7; $i < sizeof($pieces) && $j < 800; $i++) {
if ( ($slen=strlen($pieces[$i])) > 3) {
$browserkeywords="$browserkeywords".", "."$pieces[$i]"; $j+=$slen+2; }
}
 

 
Спасибо FatCat за классную фичу!!!
 
LAW

Всего записей: 265 | Зарегистр. 16-08-2001 | Отправлено: 02:47 16-09-2001
law



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И еще забыл, чтобы остальные страницы не остались без keywords content добавил в config.php переменную
 

Код:
 
$browserkeywords = "чего-нибудь";
 

 
LAW

Всего записей: 265 | Зарегистр. 16-08-2001 | Отправлено: 04:07 16-09-2001
FatCat



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Упс...сорри, забыл  и не учел свою специфику - у нас такие же изменения давно были сделаны а поле bodytext попросту не используется (мы все новости пишем только "снаружи")..//
Что касается "чего-нибудь", то у нас просто в header стоит проверка, если $browserkeywords = ""; - идет постановка "стандартного набора" с первой страницы,
а если есть - идет строка из динамических кейвордов.
 
Зы. Вот малость разгребусь с форумом - хочу еще связанные ссылки сделать с возможностью их редактирования.

Всего записей: 346 | Зарегистр. 10-07-2001 | Отправлено: 18:18 16-09-2001
MC



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
итак, вы отбраковали, как создаються динамические слова в Пост Нюке...
но как мне, пользователю Пост Нюка 0,64 и хреновому знатоку РНР заменить на то, что есть сейчас в Пост Нюке 0,64 на то, что вы привели выше и чтобы это работало! :)
 
Спасибо!

Всего записей: 781 | Зарегистр. 09-09-2001 | Отправлено: 00:01 05-11-2001
Gv

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MC
Не меняй ничего в 0.6.4
Если кто то что то обсуждает, не всегда надо это повторять

----------
Free dating

Всего записей: 1180 | Зарегистр. 05-09-2001 | Отправлено: 01:02 05-11-2001
MC



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну я считал мнение Батвы довольно существенным!
 
и вот только что посмотрел, как работают динамические слова в 0,64:
 

Код:
 
<META HTTP-EQUIV="Keywords" CONTENT="Мне,тут,письмо,пришло,из,Югославии,
Тамошние,диджеи,и,музыканты,хотят,с,нами,дружить,и,возможно,
обмениваться,делигациями,на,различные,тусовки,и,
мероприятия,посему,хотел,бы,получить,информацию,от,желающих,сконнектиться,
Информация,нужна,по,поводу,современной,музыкальной,жизни,
России,или,Эстонии,диджейского,движения,а,также,музыкальные,
примеры,для,наших,будущех,друзей,ну,и,вообще,чем,больше,инфы,
тем,лучше,Подробности,переписки,я,буду,освещать,в,данном,форуме">
 

 
а страница вот эта: http://veneportaal.ee/muzzclub/article.php?sid=19
 
тут говорят боты не индексят слова до размером меньше 3-х букв, а здесь их в тексте немало....
так что могет все-таки надо что-то делать?!
 
а например статьи, которые идут в специальном разделе (не на главной) вообще идут со стандартными кевордсами....

Всего записей: 781 | Зарегистр. 09-09-2001 | Отправлено: 01:50 05-11-2001 | Исправлено: MC, 02:13 05-11-2001
Antuan



moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MC
Мне всегда казалось, что после запятой надо поставить пробел.
Иначе всё читается как одно слово

----------
EuRuChess

Всего записей: 10669 | Зарегистр. 10-04-2001 | Отправлено: 10:47 05-11-2001
sotnik

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FatCat!!!
Подскажи как ты разбил раздел sections на под разделы? плз.
http://www.rolemancer.ru/sections.php?op=listarticles&secid=1
На PostNuke такое можно сделать? очень надо для создания библиотеки, т.е. например мне надо сделать раздел книги и разбить на 3-5 подразделов а вних уже помещать тексты, а на данные момент получается только в меню создать разл: создаешь раздел и только туда помещать статьи т.е. подразделы никак невыходят
Помоги полз.
Админ извени за офтопик.

Всего записей: 20 | Зарегистр. 23-10-2001 | Отправлено: 12:48 05-11-2001
MC



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Antuan вот и я про тоже... значит нада все-таки что-то изменить в Пост Нюке.... вот только скажите мне плиз что и где! а то я ведь  

Всего записей: 781 | Зарегистр. 09-09-2001 | Отправлено: 15:51 05-11-2001
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Хак "Динамические слова" для PHP-Nuke


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru