Re: Скрипт поиска по сайту на основе Яндекс.XML
Скрипт поиска обновлен до версии 0.4.
Добавлена возможность перелистывания страниц с помощью нажатия клавиш Ctrl и стрелочек влево/вправо.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → Разработки проекта → Скрипт поиска по сайту на основе Яндекс.XML
Скрипт поиска обновлен до версии 0.4.
Добавлена возможность перелистывания страниц с помощью нажатия клавиш Ctrl и стрелочек влево/вправо.
Скрипт поиска обновлен до версии 0.5.
Причина обновления - необходимость соответствия изменившимся условиям лицензии сервиса Яндекс.XML.
[li]Ссылка на Яндекс.XML выводится сверху, в первом экране выдачи, а не снизу, как было ранее.[/li]
[li]В документации прописано условие при котором сайты находящиеся в Рекламной Сети Яндекса не ограничиваются в количестве запросов, если установлен код статистики оговоренный в 7 параграфе лицензии.[/li]
Обращайтесь на данный форум, если являетесь партнером Рекламной Сети Яндекса и нуждаетесь в помощи по установке кода статистики.
Произошла программная ошибка. выдает ошибку ...зарегал ip адрес в XML Яндекс все сделал по инструкции
2) На странице отображения результатов поиска должна стоять ссылка на Яндекс.XML (http://xml.yandex.ru).
непонятно о чем идет речь? какая именно ссылка? и где стоять?
Произошла программная ошибка. выдает ошибку ...зарегал ip адрес в XML Яндекс
все сделал по инструкции
Это может быть только если скрипт отрабатывает неверно.
Если есть такая возможность, посмотрите с помощью Firebug что возвращает скрипт при запросе.
2) На странице отображения результатов поиска должна стоять ссылка на Яндекс.XML (http://xml.yandex.ru).
непонятно о чем идет речь? какая именно ссылка? и где стоять?
Необходимо на страницу поиска добавить ссылку http://xml.yandex.ru
Разместить ее можно где угодно.
если я все правильно сделал - то в сценарии вот что написал firebug - Insert_Search(http_request.responseXML);
Сообщение добавлено Thu Sep 30 08:52:10 2010
а в Консоли пишет:
POST http://мой сайт/search/request.php 200 OK 4.16s
<?xml version="1.0" encoding="windows-1251" ?>
<root></root>
Сообщение добавлено Thu Sep 30 08:53:13 2010
http_request.send(request); search.js (строка 238)
keks
Ошибки не вижу, просто данные не получены от Яндекса и не обработаны. Посмотрите логи веб сервера, чтобы быть уверенным в отсутствии ошибок скрипта.
в логах вообще нет ни чего
помогите запустить скрипт)
keks
Попробуем разобраться. Возможно причина в изменении ссылки для обращения к Яндексу, но пока старые ссылки еще работают и не должны вызывать проблем.
На этой странице можете выполнить тестовый запрос? http://xml.yandex.ru/test_query.xml
Вы уверены, что прописали выделенный IP сервера?
keks
Попробуем разобраться. Возможно причина в изменении ссылки для обращения к Яндексу, но пока старые ссылки еще работают и не должны вызывать проблем.На этой странице можете выполнить тестовый запрос? http://xml.yandex.ru/test_query.xml
Вы уверены, что прописали выделенный IP сервера?
тестовый запрос выполняется при условии: что я укажу свой IP адрес а не сервера...тогда выполняется...если ставлю IP сайта то он выдает ошибку что с этого адреса не разрешены запросы...
да прописываю выделенный IP адрес
keks
Попробуйте заменить ссылку http://xmlsearch.yandex.ru/xmlsearch/ в файле request.php (15 строка) на ту, которая предлагается Яндексом. Примерно она выглядит так:
http://xmlsearch.yandex.ru/xmlsearch?us … 99984c156a
понял..сейчас попробую
Сообщение добавлено Fri Oct 1 10:59:34 2010
к сожалению не работает все равно
Сообщение добавлено Fri Oct 1 11:01:40 2010
ведь сделал все по вашим указаниям! взял у хостера выделенный IP для сайта...произвел регистрацию на XML яндекса..в вел в конфиг все данные..может в нем проблема?)
вот ответ хостинга:
На сколько я понимаю, данный скрипт осуществляет запрос с сайта к яндексу, яндекс принимает запросы только от зарегистрированного ip, однако из-за настроек хостинга по-умолчанию запрос осуществляется с ip адрес сервера, не смотря на наличие выделенного ip адреса. Осуществить запрос с выделенного ip возможно с помощью привязок (bind), но данная возможность в целях безопасности закрыта на тарифах виртуального хостинга. Она присутствует на тарифе *****, VPS и выделенных серверах
keks
Очень жаль, но даже не знаю как решить эту проблему с хостингом. У нас VPS и на нем нет таких трудностей.
я думаю придется отказаться от этог оскрипта жаль..спасибо за помощь в любом случае
Поиск с недавнего времени перестал работать, сначала думал что временный глюк. Написал в хелп яндекса.
Ответ Яндекса:
Скорее всего, в своих запросах Вы используете старый синтаксис языка запросов
Яндекса. Вам нужно проверить, соответствует ли текст Вашего запроса новому
синтаксису:
http://help.yandex.ru/search/?id=1111313
Например, получать результаты поиска по определенному сайтe Вы можете
следующим образом:
запрос host:site.ru
Нет ли у кого готового решения с измененным синтаксисом для данного скрипта?
Mia
Решение, конечно, есть.
1) Зайдите на http://xml.yandex.ru/settings.xml
2) Скопируйте ссылку, которую вы там сразу увидите, ее вид будет примерно такой:
http://xmlsearch.yandex.ru/xmlsearch?us … e99984c156
3) В файле request.php замените строку:
curl_setopt($ch, CURLOPT_URL, 'http://xmlsearch.yandex.ru/xmlsearch/');
На следующую, где поставьте свой урл из 2 пункта:
curl_setopt($ch, CURLOPT_URL, 'http://xmlsearch.yandex.ru/xmlsearch?us … 11549c4946');
4) В файле request.php сделайте замену строки:
$aLocal['host_s'] = sprintf('host="%s"', $aLocal['host']);
На:
$aLocal['host_s'] = sprintf('host:%s', $aLocal['host']);
Это исправит синтаксис запроса на новый.
Если будут проблемы, то обязательно пишите, постараемся их решить. Скоро будет готова новая версия скрипта поиска, где мы все эти моменты учтем.
Hanut
Большое спасибо за помощь, поиск работает )
Есть еще одна проблема, возможно не только у меня. Есть виджет яндекса, где используется поисковая форма. Сайт мой в кодировке windows-1251 и скрипт поиска тоже, когда с виджета посылается запрос (со страницы яндекса у которой кодировка utf-8), то на моей странице /search/, кодировка не преобразуется. Решил проблему так: добавил к форме поиска accept-charset="cp1251", однако как всегда подвел internet explorer, на нем кодировка не преобразуется.
Нашел в другом скрипте подобное что-то, но не силен в php
// Следующий код нужен для нормальной поддержки пейджинга поисковых результатов,
// а также для преобразования UTF-8 строки запроса в кодировку Windows-1251.
// $DOMAIN_NAME это имя хоста, например myhost.com.ua
if (strstr($query, "host=") === FALSE )
$full_query = $query.' << host="'.$DOMAIN_NAME.'"';
else
$full_query = stripslashes(iconv("UTF-8", "CP1251", $query));
Mia
Вам надо конвертировать кодировку с помощью функции iconv().
[mono]iconv("UTF-8", "CP1251", $query);[/mono]
Конкретнее можно только по коду посмотреть.
Вот здесь это реализовано http://developer.co.ua/posts/view/poisk … _xml_v_php
Mia
А куда вы добавили [mono]accept-charset="cp1251"[/mono]? Что-то пока не понял.
Mia
А куда вы добавили [mono]accept-charset="cp1251"[/mono]? Что-то пока не понял.
accept-charset="cp1251 добавил к форме, ссылку отправил вам в ПМ.
accept-charset="cp1251" вам здесь вряд ли поможет, надо обработать данные при их приеме. Посмотрите как в поле формы на вашем сайте вставляется текст запроса от Яндекса и конвертируйте POST['find'] данные строкой:
$find = iconv("UTF-8", "windows-1251", $query);
И уже переменную $find вставьте в поле формы.
В самом скрипте поиска ошибок вроде нет и он работает нормально, как я смог заметить.
Не поможешь еще раз; нужно преобразовать в скрипте в escape-последовательность:
<script type="text/javascript"><!--
// Размер шрифтов
var yandex_ad_fontSize = 1;
// Настройки объявлений Директа
var yandex_direct_fontColor = '000000';
var yandex_direct_BorderColor = 'FBE5C0';
var yandex_direct_BgColor = 'FFF9F0';
var yandex_direct_headerBgColor = 'FEEAC7';
var yandex_direct_titleColor = '0000CC';
var yandex_direct_siteurlColor = '006600';
var yandex_direct_linkColor = '0000CC';
function yandex_direct_print(){ }
// Настройки Спец. размещения
var yandex_premium_fontColor = '000000';
var yandex_premium_headerBgColor = 'FEEAC7';
var yandex_premium_titleColor = '0000CC';
var yandex_premium_siteurlColor = '006600';
function yandex_premium_print(){ }
var yandex_r = Math.round(Math.random() * 100000);
document.write('<sc'+'ript type="text/javascript" src="http://an.yandex.ru/code/61513?rnd=' + yandex_r + '&text=поисковый_запрос&page-no=номер_страницы"></'+'sc'+'ript>');
//--></script>
Прмер:
$phrase = "слон";
$phrase = urlencode($phrase);
Сам никак не могу разобраться (
Форум PHP-MyAdmin.RU → Разработки проекта → Скрипт поиска по сайту на основе Яндекс.XML
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.