Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 17, January, 2008 10:35

День добрый!
Осваиваем потихоньку Web Irbis 64 и появляются "околоирбисные" вопросы:

1) Как сделать так, чтоб в заголовке окна браузера динамически формировалась надпись "Электронный каталог - ТЕСКТ ЗАПРОСА"

На PHP я бы это делал так <Title>Электронный каталог - <?=$title?></Title>, где $title=ТЕСКТ ЗАПРОСА

Спасибо за ответы!

Re: Динамическое формирование Title страницы
Пользователь: iLq (IP-адрес скрыт)
Дата: 17, January, 2008 12:03

а в запросе у вас что будет?
Пример приведите, пожалуйста. Это только для простого поиска? или у вас с указанием полей будет, типа "Автор: ...;Название:..."?



Редактировано 1 раз. Последний раз 17.01.2008 12:06 пользователем iLq.

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 17, January, 2008 13:58

Тот термин который указал пользователь, неважно для какого поиска.

Например он ищет "Шевченко", тогда заголовок будет выглядеть так

"Электронный каталог - ШЕВЧЕНКО"

Re: Динамическое формирование Title страницы
Пользователь: iLq (IP-адрес скрыт)
Дата: 17, January, 2008 16:37

можно попробовать обработать в формате поле 2226 и выдать эти термины... (гипотетически)

Re: Динамическое формирование Title страницы
Пользователь: Constantin (IP-адрес скрыт)
Дата: 17, January, 2008 17:41

Найдите в файле header*.frm тэги
<TITLE>.......</title>
и замените на строку
<!FORMAT=@title>

Создайте файл title.pft в директории Deposit* для WEB ИРБИС

------------title.pft----------------

&uf('+1W6#',v3331),
&uf('+1W88#'),

(if &uf('+5Tdbn_web.mnu')<>'' then
if &uf('+1R6')= &uf('+5Tdbn_web.mnu')
then
if &uf('+5Fdbn_web.mnu')<>'' then &uf('+1W88#',&uf('+5Fdbn_web.mnu')) else &uf('+1W88#',&uf('+5Tdbn_web.mnu')) fi,
break
else
fi
else break fi),

&uf('+1W6#'),

'<Title>',&uf('+1R88'),' - ',v2226,'</Title>'

Запрос v2226 выглядит не очень читабельно из-за спец символов
Чтобы пригладить его необходимо самостоятельно отследить запрос или написать формат который уберет спец символы

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 18, January, 2008 15:43

Constantin написал(а):
-------------------------------------------------------
> Найдите в файле header*.frm тэги
> .......
> и замените на строку
> <!FORMAT=@title>
>
> Создайте файл title.pft в директории Deposit* для
> WEB ИРБИС

К примеру если ставить все "по умолчанию тогда "header*.frm" будет находиться по адрессу:
c:\IRBIS64\Datai\frames_opak62\Ibis\Default\header_1.frm
Файл "title.pft" должен тоже находиться в
c:\IRBIS64\Datai\frames_opak62\Ibis\Default\ ???

У меня получаеться заголовок вида "Электронный каталог г. Николаева - Web ИРБИС64 - <!FORMAT=@title>"

см. пример:
[e-catalog.biz.ua]

Re: Динамическое формирование Title страницы
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 18, January, 2008 16:07

Конструкции вида
<!FORMAT=...>
должны находится на ЦЕЛОЙ СТРОКЕ. Т.е. запись вида
<title>Мой заголовок - <!FORMAT=...></title>
не допустима. Она должна выглядеть так
<!FORMAT=!'<title>Мой заголовок - ',v2226,'</title>'>
Надеюсь, разница ясна. По этому в варианте, который предложил Константин Олегович теги TITLE должны быть включены внутрь формата title.pft.

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 18, January, 2008 16:38

Вот такой формат:
'<Title>Web ИРБИС64 - ',&uf('+1R88'),' - ',v2226,'</Title>'

При запросе "Фромм, Э.", осуществленным нажатием на ФИО автора в описании приводит к такому результату:
Фонд НПБ - (<.>A=ФРОММ$<.>)



Редактировано 2 раз. Последний раз 18.01.2008 18:27 пользователем Konstantinus.

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 19, January, 2008 00:20

Цитата:
Константин Картузов

Вот такой формат:
'<Title>Web ИРБИС64 - ',&uf('+1R88'),' - ',v2226,'</Title>'

При запросе "Фромм, Э.", осуществленным нажатием на ФИО автора в описании приводит к такому результату:
Фонд НПБ - (<.>A=ФРОММ$<.>)


Насколько я могу понять, перед тобой стоит задача перевести запрос с языка запросов WEB ИРБИС в естественную форму. Я тоже сталкивался с подобной проблемой. Должен сразу заметить, что её решение в полном объёме – задача отнюдь не тривиальная. WEB ИРБИС позволяет создавать путём уточнения очень сложные вложенные запросы, расшифровать которые даже человеку может быть совсем непросто. Написание алгоритма «дешифратора» требует большого количества времени.

Разумеется, использовать для этой цели ИРБИС-скрипт нет никакого смысла. Он для этого не предназначен. Дешифровщик нужно писать или на Java Script, на PHP или на Delphi(чтобы подключать как библиотеку). Я на скорую руку написал Java Script дешифратор и он применяется(http://elib.nwpi.ru) у меня в режиме печати. Думаю, на первых этот скрипт может тебе пригодиться, ну а потом во славу Нэзалэжной ты конечно напишешь что-нибудь более достойное. ;)


<script>
<!FORMAT=!'request="',v6,'";'> 
pref=new Array();
pref[0]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[1]=new Array('D=','ДИСЦИПЛИНА','ДИСЦИПЛИНЫ');
pref[2]=new Array('SP=','СПЕЦИАЛЬНОСТЬ','СПЕЦИАЛЬНОСТИ');
pref[3]=new Array('A=','АВТОР','АВТОРЫ');
pref[4]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[5]=new Array('K=','КЛЮЧЕВЫЕ СЛОВА','КЛЮЧЕВЫЕ СЛОВА');
pref[6]=new Array('O=','ИЗДАТЕЛЬСТВО','ИЗДАТЕЛЬСТВА');
pref[7]=new Array('G=','ГОД ИЗДАНИЯ','ГОДЫ ИЗДАНИЯ');
pref[8]=new Array('R=','РУБРИКА','РУБРИКИ');
pref[9]=new Array('V=','ВИД ИЗДАНИЯ','ВИДЫ ИЗДАНИЯ');
pref[10]=new Array('HD=','ХАРАКТЕР ДОКУМЕНТА','ХАРАКТЕРЫ ДОКУМЕНТА');
pref[11]=new Array('MHR=','МЕСТО ХРАНЕНИЯ','МЕСТА ХРАНЕНИЯ');
pref[12]=new Array('I=','СИСТЕМНЫЙ ШИФР','СИСТЕМНЫЕ ШИФРЫ');
pref[13]=new Array('TJ=','ЗАГЛАВИЕ СТАТЬИ','ЗАГЛАВИЯ СТАТЕЙ');
pref[14]=new Array('VR=','ВИД ДОКУМЕНТА','ВИДЫ ДОКУМЕНТОВ');
pref[15]=new Array('KAF=','КАФЕДРА','КАФЕДРЫ');
integrator2='';
prf_last='';
mytitle='';
multi=request.split('*');
for(i in multi){
	addi=multi[i].split('+');
	prf_find=false;
	for(d in pref){	
		if (multi[i].indexOf(pref[d][0])>0){
			prf_decript=(addi.length>1) ? pref[d][2]+': ' : pref[d][1]+': ';
			prf_decript=(prf_last!=pref[d][0]) ? prf_decript : '';
			mytitle+=integrator2+prf_decript;	
			integrator2=' И '
			prf_find=true;
			prf_last=pref[d][0];
			break;
		}		
	}
	
	if (prf_find){
		integrator='';
		for(k in addi){	
		mytitle+=integrator+'"'+addi[k].replace(/(.*=)|(\<\.\>)|(\))|\$|(\/\(.*\))/g,'')+'"';	
		integrator=' ИЛИ ';
		}
	}
}
document.title=mytitle;
</script>



Редактировано 1 раз. Последний раз 19.01.2008 00:29 пользователем Кирилл Соколинский (СЗТУ).

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 22, January, 2008 17:09

К сожалению не работает, интересует текст запроса по которому идет поиск но без усечений и других "оптимизаций".

Я поясню зачем это надо.
Когда в Гугле челове найдет термин с сылкой на нашу БД то он увидит примерно следующее:
Фонд НПБ - <.>DP=2008$<.>
1. 88.5 Ф 91: Фромм, Э. Искусство любить [Текст] : научно-популярная литература / Э. Фромм. - М. : Педагогика, 1990. - 158 с. - 5.15 р. ...
e-catalog.biz.ua/cgi-bin/irbis64r_opak62/cgiirbis_64.exe?S21CNR=20&S21STN=1&S21REF=2&C21COM=S... - 108k -

Фонд НПБ - <.>DP=2008$<.> - он берет из Title страници, и если тайтл не станет осмысленней, то наш ЭК он точно не посетит :S

Пример



Редактировано 3 раз. Последний раз 22.01.2008 17:18 пользователем Konstantinus.

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 23, January, 2008 01:22

Я не учёл, что у тебя новая версия WEB ИРБИС, где поле с запросом имеет метку не v6, a v2226.

Замени <!FORMAT=!'request="',v6,'";'> на <!FORMAT=!'request="',v2226,'";'> и всё заработает. Кроме того, рекомендую вставить код

Я не учёл, что у тебя новая версия WEB ИРБИС, где поле с запросом имеет метку не v6, a v2226.

Замени <!FORMAT=!'request="',v6,'";'> на <!FORMAT=!'request="',v2226,'";'> и всё заработает. Кроме того, рекомендую вставить код в search_search.frm. Анализировать запрос имеет смысл только после выполненной операции поиска.

Ты сообщил интересное известие. Я не знал, что Google может индексировать ИРБИСовскую базу. Однако краулеры Google вряд ли будут запускать Java Script. Полагаю, что для целей индексирования придётся в любом случае использовать какие-то серверные средства. Т. е. такие, результатом которых будет страница с готовым TITLE. В случае с Java Script заголовок фактически создаётся силами браузера.

Как я уже писал, для этих целей может использоваться или библиотека Delphi или PHP.

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 23, January, 2008 16:55

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<script>
<!FORMAT=!'request="',v2226,'";'>
pref=new Array();
pref[0]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[1]=new Array('D=','ДИСЦИПЛИНА','ДИСЦИПЛИНЫ');
pref[2]=new Array('SP=','СПЕЦИАЛЬНОСТЬ','СПЕЦИАЛЬНОСТИ');
pref[3]=new Array('A=','АВТОР','АВТОРЫ');
pref[4]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[5]=new Array('K=','КЛЮЧЕВЫЕ СЛОВА','КЛЮЧЕВЫЕ СЛОВА');
pref[6]=new Array('O=','ИЗДАТЕЛЬСТВО','ИЗДАТЕЛЬСТВА');
pref[7]=new Array('G=','ГОД ИЗДАНИЯ','ГОДЫ ИЗДАНИЯ');
pref[8]=new Array('R=','РУБРИКА','РУБРИКИ');
pref[9]=new Array('V=','ВИД ИЗДАНИЯ','ВИДЫ ИЗДАНИЯ');
pref[10]=new Array('HD=','ХАРАКТЕР ДОКУМЕНТА','ХАРАКТЕРЫ ДОКУМЕНТА');
pref[11]=new Array('MHR=','МЕСТО ХРАНЕНИЯ','МЕСТА ХРАНЕНИЯ');
pref[12]=new Array('I=','СИСТЕМНЫЙ ШИФР','СИСТЕМНЫЕ ШИФРЫ');
pref[13]=new Array('TJ=','ЗАГЛАВИЕ СТАТЬИ','ЗАГЛАВИЯ СТАТЕЙ');
pref[14]=new Array('VR=','ВИД ДОКУМЕНТА','ВИДЫ ДОКУМЕНТОВ');
pref[15]=new Array('KAF=','КАФЕДРА','КАФЕДРЫ');
integrator2='';
prf_last='';
mytitle='';
multi=request.split('*');
for(i in multi){
addi=multi[i].split('+');
prf_find=false;
for(d in pref){
if (multi[i].indexOf(pref[d][0])>0){
prf_decript=(addi.length>1) ? pref[d][2]+': ' : pref[d][1]+': ';
prf_decript=(prf_last!=pref[d][0]) ? prf_decript : '';
mytitle+=integrator2+prf_decript;
integrator2=' И '
prf_find=true;
prf_last=pref[d][0];
break;
}
}

if (prf_find){
integrator='';
for(k in addi){
mytitle+=integrator+'"'+addi[k].replace(/(.*=)|(\<\.\>|(\))|\$|(\/\(.*\))/g,'')+'"';
integrator=' ИЛИ ';
}
}
}
document.title=mytitle;
</script>


В тайтле - "http://e-catalog.biz.ua/cgi-bin/irbis64r_opak62/cgiirbis_64.exe"

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 24, January, 2008 00:39

Константин, в листинге который я привёл, часть регулярного выражения была заменена подмигивающим смайлом и таким образом оказалась съедена скобка. Я оформил текст как листинг, но предотвратить подобное никак не мог...

Чтобы ты убедился в работоспособности кода, я выложил страницу с ним у себя на сервере: [elib.nwpi.ru]

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 24, January, 2008 18:39

Запрос: (<.>A=ИВАНОВ И.И.<.>+<.>A=ПЕТРОВ Д.И.<.>)*(<.>K=ОТЕЧЕСТВЕННАЯ ИСТОРИЯ <.>)*(<.>G=2007<.>)

Кирилл, вот такой тайтл у тебя получился.
Все же, я думаю будет осмысленней:
Запрос1, пробел Запрос2, пробел ЗапросN (если все то пробел и запятая не надо)

Я взял код "mytitle+=integrator+'"'+addi[k].replace(/(.*=)|(\<\.\>)|(\))|\$|(\/\(.*\))/g,'')+'"';"
из твоего сайта, всеравно не хочет формирровать тайтл. :S

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 24, January, 2008 23:14

Константин, тестовая страница по определению не может формировать тот заголовок, который ты привёл. Там просто не может быть слова "Запрос", поскольку этому слову там неоткуда взяться. Оно есть только в одном месте -- в теле документа и приведено как часть пояснения.

Расшифровка выглядит так:

АВТОРЫ: "ИВАНОВ И.И." ИЛИ "ПЕТРОВ Д.И." И КЛЮЧЕВЫЕ СЛОВА: "ОТЕЧЕСТВЕННАЯ ИСТОРИЯ " И ГОД ИЗДАНИЯ: "2007"


Перед тем, как послать тебе скрипт, я протестировал его в Mozilla 2.0.0.11 и IE 6.0.2800. Каким браузером ты пользуешься? Ты уверен, что у тебя не отключены Java Script'ы?

Я модифицировал страницу(http://elib.nwpi.ru/publish/D_Title.html) так, что теперь и запрос и расшифровка генерируются в теле динамически. Кроме того, использовал надёжнейший метод динамической генерации заголовка, вмето обращению к нему как к объекту.

PS
Коллеги, пожалуйста, проверьте работоспособность этой страницы. А то мы с Константином скоро утяжелим форум ещё на пару мегабайт. :)



Редактировано 1 раз. Последний раз 25.01.2008 00:26 пользователем Кирилл Соколинский (СЗТУ).

Re: Динамическое формирование Title страницы
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 25, January, 2008 00:13

У меня в FF все показалось. Алерт выдает красивый запрос. Мне понравилось. Правда я так и не понял, зачем это нужно :). Однако раз сделано, значит нужно. Удачи.

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 25, January, 2008 00:40

Цитата:
Максим Панев
У меня в FF все показалось. Алерт выдает красивый запрос. Мне понравилось. Правда я так и не понял, зачем это нужно . Однако раз сделано, значит нужно. Удачи.

Спасибо, Максим! Ты очень кстати, я просто не знал, что делать. ::o

Идею размещения расшифровки запроса в TITLE я комментировать не могу, но должен сказать, что у нас расшифровка играет достаточно важную роль. Она составляет заголовок в режиме печати записей. После того, как студент сформировал список литературы, отобранный по специальности или по дисциплине, он может распечатать его и благодаря расшифрованному запросу никогда не забудет что это за список, и по какому принципу он составлен.

Re: Динамическое формирование Title страницы
Пользователь: Konstantinus (IP-адрес скрыт)
Дата: 25, January, 2008 16:24

Вот в таком варианте скрипт заработал.
Если буду в Крыму в этом году с меня Кириллу пиво на его выбор!

<script>
<!FORMAT=!'request="',v2226,'";'>

document.writeln('<title>'+request_decrypt(request)+'</title>');

function request_decrypt(request){
pref=new Array();
pref[0]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[1]=new Array('D=','ДИСЦИПЛИНА','ДИСЦИПЛИНЫ');
pref[2]=new Array('SP=','СПЕЦИАЛЬНОСТЬ','СПЕЦИАЛЬНОСТИ');
pref[3]=new Array('A=','АВТОР','АВТОРЫ');
pref[4]=new Array('T=','ЗАГЛАВИЕ','ЗАГЛАВИЯ');
pref[5]=new Array('K=','КЛЮЧЕВЫЕ СЛОВА','КЛЮЧЕВЫЕ СЛОВА');
pref[6]=new Array('O=','ИЗДАТЕЛЬСТВО','ИЗДАТЕЛЬСТВА');
pref[7]=new Array('G=','ГОД ИЗДАНИЯ','ГОДЫ ИЗДАНИЯ');
pref[8]=new Array('R=','РУБРИКА','РУБРИКИ');
pref[9]=new Array('V=','ВИД ИЗДАНИЯ','ВИДЫ ИЗДАНИЯ');
pref[10]=new Array('HD=','ХАРАКТЕР ДОКУМЕНТА','ХАРАКТЕРЫ ДОКУМЕНТА');
pref[11]=new Array('MHR=','МЕСТО ХРАНЕНИЯ','МЕСТА ХРАНЕНИЯ');
pref[12]=new Array('I=','СИСТЕМНЫЙ ШИФР','СИСТЕМНЫЕ ШИФРЫ');
pref[13]=new Array('TJ=','ЗАГЛАВИЕ СТАТЬИ','ЗАГЛАВИЯ СТАТЕЙ');
pref[14]=new Array('VR=','ВИД ДОКУМЕНТА','ВИДЫ ДОКУМЕНТОВ');
pref[15]=new Array('KAF=','КАФЕДРА','КАФЕДРЫ');
integrator2='';
prf_last='';
myreq='';
multi=request.split('*');
for(i in multi){
addi=multi[i].split('+');
prf_find=false;
for(d in pref){
if (multi[i].indexOf(pref[d][0])>0){
prf_decript=(addi.length>1) ? pref[d][2]+': ' : pref[d][1]+': ';
prf_decript=(prf_last!=pref[d][0]) ? prf_decript : '';
myreq+=integrator2+prf_decript;
integrator2=' И '
prf_find=true;
prf_last=pref[d][0];
break;
}
}

if (prf_find){
integrator='';
for(k in addi){
myreq+=integrator+'"'+addi[k].replace(/(.*=)|(\<\.\>)|(\))|\$|(\/\(.*\))/g,'')+'"';
integrator=' ИЛИ ';
}
}
}

return myreq;
}


</script>

Re: Динамическое формирование Title страницы
Пользователь: nereader (IP-адрес скрыт)
Дата: 22, September, 2017 14:25

Здравствуйте. Как сделать так, чтоб в заголовке окна браузера динамически формировалось: автор и название? Конкретная запись выводится по MFN.

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 23, September, 2017 12:33

nereader написал(а):
-------------------------------------------------------
> Здравствуйте. Как сделать так, чтоб в заголовке
> окна браузера динамически формировалось: автор и
> название? Конкретная запись выводится по MFN.

Воспользуйтесь конструкцией

&uf('D',v3331',@'[метка поля с MFN]',@[формат вывода автора и заглавия]')

Re: Динамическое формирование Title страницы
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 19, February, 2019 12:28

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

&uf('+1W6#',v3331),
&uf('+1W88#'),

(if &uf('+5Tdbn_web_private.mnu')<>'' then
if &uf('+1R6')= &uf('+5Tdbn_web_private.mnu')
then
if &uf('+5Fdbn_web_private.mnu')<>'' then &uf('+1W88#',&uf('+5Fdbn_web_private.mnu')) else &uf('+1W88#',&uf('+5Tdbn_web_private.mnu')) fi,
break
else
fi
else break fi),

&uf('+1W6#'),

'<Title>',&uf('+1R88'), if v3417<>'' then if v3331='DP' then '. ',&uf('DDP,/I='v3417'/,v700^A," "v700^G') else fi fi,'. Муниципальная Информационно-Библиотечная Система г. Новокузнецка</Title>'


Если в шифре используется "/", а он почти во всех базах используется, то ничего не выводится

Что можно поправить?

Re: Динамическое формирование Title страницы
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 03, March, 2019 10:44

auto_02 написал(а):
-------------------------------------------------------

> Если в шифре используется "/", а он почти во всех
> базах используется, то ничего не выводится
>
> Что можно поправить?

Используйте другой разделитель в &uf('D Например,

&uf('DDP,|I='v3417'|,v700^A," "v700^G')

Re: Динамическое формирование Title страницы
Пользователь: auto_02 (IP-адрес скрыт)
Дата: 04, March, 2019 05:19

Спасибо, получилось



Редактировано 1 раз. Последний раз 06.03.2019 05:47 пользователем auto_02.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.