51

Re: Скрипт поиска по сайту на основе Яндекс.XML

С помощью PHP можно вывести так:
document.write('<sc'+'ript type="text/javascript" src="http://an.yandex.ru/code/61513?rnd=' + yandex_r + '&text=<?php echo urlencode($phrase); ?>&page-no=номер_страницы"></'+'sc'+'ript>');

Отредактировано Hanut (2010-10-08 23:18:06)

ВКонтакте Facebook Twitter

52

Re: Скрипт поиска по сайту на основе Яндекс.XML

а это переменная в Вашем скрипте поиска выводит фразу - $phrase или это регулярное вырожение?
В скрипте поиска используется <?php echo $sSearch_text; ?> . Возможно примерно так: <?php echo urlencode($sSearch_text); ?>
А какую переменную использовать для '&text=<?php echo urlencode($sSearch_text); ?>&page-no=номер_страницы"></'+'sc'+'ript>'
Спасибо за ответы!

Сообщение добавлено Sat Oct  9 00:54:33 2010
Было бы просто, если бы посмотреть на страницу вывода поиска у человека, который использует ваш скрипт и участвует в РСЯ для поиска.

53

Re: Скрипт поиска по сайту на основе Яндекс.XML

В общем все разобрался ). &text=<?php echo urlencode($sSearch_text); ?>&page-no=1 - будет правильно, спасибо!

54

Re: Скрипт поиска по сайту на основе Яндекс.XML

Здравствуйте,

Установил ваш скрипт, но почему то не работает он... sad Пишет программная ошибка!
Все сделал как написано, когда ввожу адрес http://www.km2n.ru/search/test.php ошибок нет, но когда ввожу запрос, выходит эта ошибка...
IP зарегистрирован в Яндекс XML
у нас сайт обслуживается через cpanel, там написано, что общий IP 207.58.151.57, а в Яндекс XML пишет адрес моего компьютера!
Ввожу адрес который зарегистрирован в Яндекс XML (Ваш текущий IP-адрес: 85.174.46.67) пишет Программная ошибка...
Подскажите в чем может быть причина? в настройках конфигурационных файлов вроде все сделал как надо!Очень надо настроить (((((

С уважением Михаил!

55

Re: Скрипт поиска по сайту на основе Яндекс.XML

Вам нужен выделенный IP адрес, обратитесь к хостеру.

56

Re: Скрипт поиска по сайту на основе Яндекс.XML

Potapchik, мы успеваем обновлять данный скрипт и он значительно устарел, появились новые требования Яндекса, которые не были учтены в версии 0.5.

Для начала попробуйте выполнить эти шаги:
1) Откройте файл request.php и найдите строку:
$aLocal['host_s'] = sprintf('host="%s"', $aLocal['host']);
Замените ее на:
$aLocal['host_s'] = sprintf('host:%s', $aLocal['host']);

2) В том же файле request.php найдите строку:
curl_setopt($ch, CURLOPT_URL,            'http://xmlsearch.yandex.ru/xmlsearch/');
И пропишите урл, который найдете на странице регистрации Яндекс.XML. Выглядеть он будет примерно так:
http://xmlsearch.yandex.ru/xmlsearch?us … 9cfa614080

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

ВКонтакте Facebook Twitter

57

Re: Скрипт поиска по сайту на основе Яндекс.XML

Добрый день!
Решил повысить лимит запросов.
Для того чтобы мы могли повысить лимит Вам нужно будет установить поисковый
  блок контекстной рекламы на странице с результатами поиска, а также код для
  учета показов и кликов ( http://help.yandex.ru/partner/?id=1019919 )

Код для фиксации кликов (каждой ссылке на результат поиска надо добавить вызов функции r в onmousedown):
<a href="http://domain.ru" onmousedown="r('xmlsrch/clid=XXXX/reqid=<request id>
/resnum=<номер результата>', this)">Результат</a>

Неподскажете куда это добавить в скрипте?

58

Re: Скрипт поиска по сайту на основе Яндекс.XML

Mia пишет:

Неподскажете куда это добавить в скрипте?

Обязательно подскажем.

Файл request.php

// После строки:
        $print = '<found>' . $found . '</found>' . "\n";
// Добавляем строку:
        $print  .= '<reqid>' . $xml->response->reqid . '</reqid>' . "\n";

Файл search.js
Функция Insert_Search()

// После строки:
        var XML_found_human = oRootNode.getElementsByTagName('found-human').item(0);
// Добавляем строку:
        var XML_reqid = oRootNode.getElementsByTagName('reqid').item(0);

// Меняем строку:
        } else if (XML_found_human && XML_found && XML_rand && XML_page && XML_group.length > 0) {
// На:
        } else if (XML_found_human && XML_reqid && XML_found && XML_rand && XML_page && XML_group.length > 0) {
// Сразу после, добавляем строку. Здесь надо заменить XXXX на идентификатор площадки:
            r('xmlsrch/clid=XXXX/reqid=' + XML_reqid.firstChild.data);

// После строки:
                var XML_url     = XML_group[i].getElementsByTagName('url').item(0);
// Добавляем строку:
                var resnum = (parseInt(XML_page.firstChild.data) * 10) + 1 + i;

// Дальше, все эти строки:
                    var oA = document.createElement('a');
                    oDIV.appendChild(oA);
                    oA.innerHTML = XML_title.firstChild.data.replace(rxRand, sReplace);
                    oA.href = XML_url.firstChild.data;
                    oA.className = 'search_title_a';
// Меняем на (Здесь тоже надо заменить XXXX на идентификатор площадки):
                    oDIV.innerHTML = '<a href="' + XML_url.firstChild.data + '" '
                        +              'class="search_title_a" '
                        +        'onmousedown="r(\'xmlsrch/clid=XXXX/reqid=' + XML_reqid.firstChild.data + '/resnum=' + resnum + '\', this);">'
                        +        XML_title.firstChild.data.replace(rxRand, sReplace) + '</a>';

Не забудьте в файл search.js добавить функцию r().

function r(w, a) {
    var unique = new Date().getTime();
    var path = a ? a.href : document.location;
    document.createElement('IMG').src = 'http://clck.yandex.ru/click/dtype=' + w + '/u=' + unique + '/*' + path; }

ВКонтакте Facebook Twitter

59

Re: Скрипт поиска по сайту на основе Яндекс.XML

Все изменил. Как вы говорили, спасибо. Но вот какой ответ:

Здравствуйте.
На страницах результатов поиска xxxxxx.ru/search необходимо размещать только
поисковый код вызова рекламных объявлений Яндекс.Директа
.

Также в поисковом коде, который размещён на страницах результатов, нужно в код
вызова объявлений необходимо передавать запрос пользователя (вместо
&text=поисковый_запрос). Если результаты поиска на нескольких страницах, то
для того, чтобы объявления не повторялись в код вызова нужно передать номер
текущей страницы (&page-no=номер_страницы). Не забудьте, что поисковый запрос
необходимо перевести в escape-последовательность с помощью php-функции
urlencode() или JavaScript-функции escape.

После внесения изменений наши коллеги смогут повысить лимит запрос к поиску по
сайту от Яндекс.XML.

1. В смысле только код Яндекса, т.е. рекламы быть не должно?
2. нужно в код вызова объявлений необходимо передавать запрос пользователя (вместо
&text=поисковый_запрос), я это менял в index.php у меня &text=<?php echo urlencode($sSearch_text); ?>, разве не правильно было?
3. нужно передать номер
текущей страницы (&page-no=номер_страницы). Было так &page-no=1

60

Re: Скрипт поиска по сайту на основе Яндекс.XML

Mia пишет:

В смысле только код Яндекса, т.е. рекламы быть не должно?

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

Mia пишет:

нужно в код вызова объявлений необходимо передавать запрос пользователя (вместо
&text=поисковый_запрос), я это менял в index.php у меня &text=<?php echo urlencode($sSearch_text); ?>, разве не правильно было?

Если сайт в cp1251, то все правильно.

Mia пишет:

нужно передать номер
текущей страницы (&page-no=номер_страницы). Было так &page-no=1

Тоже не вижу ошибки.

ВКонтакте Facebook Twitter

61

Re: Скрипт поиска по сайту на основе Яндекс.XML

Скрипт поиска обновлен до версии 0.6 (28.11.2010).

Изменения включают в себя:

  • Устранена проблема работоспособности скрипта в связи с изменением синтаксиса языка запросов Яндекса.

  • В конфигурационный файл добавлена переменная $aLocal['url'], которая содержит уникальную ссылку для совершения запросов к Яндекс.XML.

ВКонтакте Facebook Twitter

62

Re: Скрипт поиска по сайту на основе Яндекс.XML

Добрый день.

У меня несколько месяцев работал скрипт поиска, но неожиданно перестал. При вводе поискового запросы на экране появляется поисковая строка и неактивная кнопка "Искать" и на этом все останавливается. Счетчик "Количество запросов сегодня" не увеличивается. IP введен правильно (и в Яндекс.XML и в файл config.php). Хостинг Петерхост.
В чем может быть дело? С чего начинать поиск?

Отредактировано Otpusk (2011-02-03 08:01:15)

63

Re: Скрипт поиска по сайту на основе Яндекс.XML

Otpusk пишет:

С чего начинать поиск?

1) Проверить не выводятся ли ошибки JavaScript.
2) Посмотреть логи веб сервера на наличие ошибок в серверной части скрипта.

ВКонтакте Facebook Twitter

64

Re: Скрипт поиска по сайту на основе Яндекс.XML

Поиск с помощью yandex xml ищет поисковые фразы, а какой запрос к yandex xml нужно выполнить что бы можно было искать сами картинки?

65

Re: Скрипт поиска по сайту на основе Яндекс.XML

vanicon пишет:

Поиск с помощью yandex xml ищет поисковые фразы, а какой запрос к yandex xml нужно выполнить что бы можно было искать сами картинки?

Сложный вопрос. Я признаться, даже не знаю как задать в Яндекс.XML запрос для поиска картинок. В документации ничего найти не смог.

ВКонтакте Facebook Twitter

66

Re: Скрипт поиска по сайту на основе Яндекс.XML

Добавил дополнительные элементы типа size и modtime а вот ни как не получается получить <saved-copy-url>
В request.php добавил:

 $print .= '<saved-copy-url>' . htmlspecialchars($group->doc->saved-copy-url) . '</saved-copy-url>' . "\n";

В js добавил:

var XML_saved   = XML_group[i].getElementsByTagName('saved-copy-url').item(0);

Пробую выводить так:

 if (XML_url && XML_url.firstChild && XML_size && XML_size.firstChild && XML_modtime && XML_modtime.firstChild && XML_saved && XML_saved.firstChild) {    //
                    var oDIV = document.createElement('div');
                    var oA = document.createElement('a');
                    oLI.appendChild(oDIV);
                    oDIV.innerHTML = '<font color="#008000">'
                    + XML_url.firstChild.data + '</font> &ndash; '
                    + (Math.round((XML_size.firstChild.data*10)/1024)/10) + ' Kb, '
                    + XML_modtime.firstChild.data.replace(/([0-9]{4})([0-9]{2})([0-9]{2}).*/,"$3.$2.$1") + '; ';
                    oDIV.appendChild(oA);
                    oA.innerHTML = 'Сохраненная копия';
                    oA.href = XML_saved.firstChild.data; 
                    oDIV.className = 'search_url';
               
               }

В результате XML_saved.firstChild.data выдаёт 0.
В чём может быть проблема?

67

Re: Скрипт поиска по сайту на основе Яндекс.XML

Как добавить поиск по региону? со старым скриптом уже не работает  neutral
на сайте написано:

Чтобы получить результаты поиска из какого-либо региона без зависимости от IP нужно с каждым запросом отправлять дополнительный cgi параметр &lr=[индекс региона].

как это лучше реализовать?

68

Re: Скрипт поиска по сайту на основе Яндекс.XML

По первому вопросу:
С именами элементов объекта содержащими дефис, надо поступать так.

$print .= '<saved-copy-url>' . htmlspecialchars($group->doc->{'saved-copy-url'}) . '</saved-copy-url>' . "\n";

По второму вопросу:
Если регион статический, то можно жестко прописать его в урле, в файле config.php.

$aLocal['url'] = 'http://xmlsearch.yandex.ru/xmlsearch?user=***&key=**************&lt=51';

В случае использования региона, надо немного исправить запрос, убрав неранжирующее "и".

    $sPost = '<?xml version="1.0" encoding="windows-1251"?>' . "\n"
           . '<request>' . "\n"
           .   '<query>' . htmlspecialchars($aLocal['query']) . '</query>' . "\n"
           .   '<groupings>' . "\n"
           .     '<groupby attr="" mode="flat" groups-on-page="10" docs-in-group="1" />' . "\n"
           .   '</groupings>' . "\n"
           .   '<page>' . $aLocal['page'] . '</page>' . "\n"
           . '</request>';

По сути это все, но, как я вижу, старый способ с выбором региона вроде работает, только надо немного поправить синтаксис. В этом случае неранжирующее "и" убирать не следует.

$aLocal['host'] = '11000051'; // Это у нас в конфигурационном файле номер региона плюс 11000000.
$aLocal['host_s'] = sprintf('cat:%s', $aLocal['host']); // Это меняем в request.php

ВКонтакте Facebook Twitter

69

Re: Скрипт поиска по сайту на основе Яндекс.XML

Добрый день! Яндекс поисковые запросы с сайта считает, а на странице ничего не выводится. ИЕ говорит что ошибка в ява скрипте search.js строка 126. Для проверки использую test.php

70

Re: Скрипт поиска по сайту на основе Яндекс.XML

petroffal пишет:

Добрый день! Яндекс поисковые запросы с сайта считает, а на странице ничего не выводится. ИЕ говорит что ошибка в ява скрипте search.js строка 126. Для проверки использую test.php

Это означает, что скрипт request.php не возвращает данные. Скорее всего это из-за ошибки в нем. Посмотрите журнал ошибок веб сервера (логи Apache), чтобы определить причину.

ВКонтакте Facebook Twitter

71

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut пишет:
petroffal пишет:

Добрый день! Яндекс поисковые запросы с сайта считает, а на странице ничего не выводится. ИЕ говорит что ошибка в ява скрипте search.js строка 126. Для проверки использую test.php

Это означает, что скрипт request.php не возвращает данные. Скорее всего это из-за ошибки в нем. Посмотрите журнал ошибок веб сервера (логи Apache), чтобы определить причину.

спасибо за ответ!
вот что в логах
[Wed Mar  2 15:41:18 2011] [error] PHP Fatal error:  Cannot instantiate non-existent class:  simplexmlelement in /search/request.php on line 30

теперь понятно что отсутсвует class simplexmlelement, но он ведь появился в 5 ветке php, а для 4 есть что-нибудь?

72

Re: Скрипт поиска по сайту на основе Яндекс.XML

petroffal пишет:

отсутсвует class simplexmlelement, но он ведь появился в 5 ветке php, а для 4 есть что-нибудь?

К сожалению, готового решения для PHP4 у меня нет. Если на PHP4 стоит расширение DOM XML, то можно попробовать переписать разбор данных на него. Если возьметесь переписать, то постараюсь помочь.

request.php, функция L_XML().

ВКонтакте Facebook Twitter

73

Re: Скрипт поиска по сайту на основе Яндекс.XML

Hanut пишет:

К сожалению, готового решения для PHP4 у меня нет. Если на PHP4 стоит расширение DOM XML, то можно попробовать переписать разбор данных на него. Если возьметесь переписать, то постараюсь помочь.

request.php, функция L_XML().

Переписывать не буду, за наводку спасибо. Проще перенести все это дело на площадку где есть php 5 дабы она под рукой.  smile

74

Re: Скрипт поиска по сайту на основе Яндекс.XML

Та-же проблема, что и у keks, сервер vps, ip выделенный.. Скажите, версия скрипта актуальна?

75

Re: Скрипт поиска по сайту на основе Яндекс.XML

rebenn пишет:

Скажите, версия скрипта актуальна?

Версия скрипта актуальна.

Для анализа ситуации нужны хоть какие-то данные, хотя бы что возвращает скрипт /search/request.php (можно посмотреть в Firebug).

ВКонтакте Facebook Twitter