После некоторого размышленияя, пришел к выводу, что предыдущий скрипт был не совсем оптимален. Вот я решил и переписать его по-новой. Теперь он выводит изображения в теле самого текста в тех местах, где встречает слово "изображение" или "рисунок". Список поддерживаемых слов можно установить свой.
Сам код скрипта:
Code
<script type="text/javascript" language="javascript"><!--
/*
// Скрипт разбора аттача в системе UCOZ
// Автор: Szen
// Сайт: http://szenprogs.ru/
*/
function ParseAttach(){
var sResult;
var iNum;
var mes = new String(document.getElementById('MyMessStr').innerHTML);
var att = new String(document.getElementById('MyAttStr').innerHTML);
var img_arr = new Array();
var img_b_arr = new Array();
var arrKWords = new Array('изображение ','изображении ',
'изображением ','изображению ','изображения ',
'Изображение ','Изображении ',
'Изображением ','Изображению ','Изображения ',
'рисунок ','рисунка ','рисунком ','рисунку ','рисунке ',
'Рисунок ','Рисунка ','Рисунком ','Рисунку ','Рисунке ');
var j = 0;
mes = mes.replace(/</g,'<');
mes = mes.replace(/>/g,'>');
att = att.replace(/</g,'<');
att = att.replace(/>/g,'>');
att_arr = att.split(/<a /gi);
for (var i = 0; i < att_arr.length; i++){
var s = new String(att_arr[i]);
s = s.toLowerCase();
s = s.slice(s.indexOf('href='));
s = s.slice(0,s.indexOf(' '));
if (s.indexOf('href=') != -1){
s = s.replace(/href=/gi,'');
s = s.replace(/'/gi,'');
s = s.replace(/"/gi,'');
att_arr[i] = s;
s = ':<br> <br> <center> <a href="%url%" target="_blank"> <img src="%url%" alt="Picture #%num%" border="0" width="400"> </a> </center> <br> <br>';
s = s.replace(/%url%/gi,att_arr[i]);
s = s.replace(/%num%/gi,j+1);
img_arr[j] = s;
img_b_arr[j] = '1';
j++;
} else {
att_arr[i] = '';
};
};
if (img_arr.length > 0){
for(var i = 0; i < arrKWords.length; i++){
sResult = new String('');
while(mes.indexOf(arrKWords[i]) != -1){
sResult = sResult + mes.substr(0,mes.indexOf(arrKWords[i]));
mes = mes.slice(mes.indexOf(arrKWords[i]));
s = new String(arrKWords[i]);
j = s.length;
s = '';
while(!isNaN(mes.substr(j,1))){
s = s + mes.substr(j,1);
j++;
};
if(!isNaN(s)){iNum = new Number(s);} else {iNum = new Number(0);};
if(iNum > 0 && iNum <= img_arr.length){
sResult = sResult + arrKWords[i] + s + img_arr[iNum-1];
img_b_arr[iNum-1] = '0';
} else {
sResult = sResult + arrKWords[i] + s;
};
s = arrKWords[i] + s;
mes = mes.slice(s.length);
};
sResult = sResult + mes;
mes = sResult;
};
mes = mes.replace('<NOSCRIPT>','');
mes = mes.replace('</NOSCRIPT>','');
s = '';
for (var i = 0; i < img_b_arr.length; i++){
if (img_b_arr[i] == '1'){
j = i+1
s = s + 'Pic' + (j) + img_arr[i];
};
};
if (s != ''){mes = mes + '<hr class="eLine"><h3>Приложение</h3>'+s;}
document.getElementById('MyMessStr').innerHTML = mes;
} else {
mes = mes.replace('<NOSCRIPT>','');
mes = mes.replace('</NOSCRIPT>','');
document.getElementById('MyMessStr').innerHTML = mes;
};
};
--></script>
Неного разъясню работу скрипта.
Массив arrKWords содержит описание всех слов, после которых должен следовать рисунок. Цифра после слова "рисунок" означает порядковый номер вложенного изображения. То есть, если в тексте написано "изображение 4", что после него отобразится изображение, загруженное четвертым. Если подобного изображения нет, то никакого рисунка вставляться не будет.
Как это все использовать.
Пишем в шаблоне материала вместо простого вывода сообщения следующее:
Code
<div id="MyMessStr"><?if($ATTACHMENTS$)?>
<noscript>$MESSAGE$</noscript>
<?else?>
$MESSAGE$
<?endif?></div>
<?if($ATTACHMENTS$)?>
<div id="MyAttStr">
<noscript>Рисунки, прикрепленные к сообщению: $ATTACHMENTS$</noscript>
</div>
<?endif?>
<script language="javascript">ParseAttach()</script>
Id в тегах div - это ориентир, откуда брать и куда ставить Их менять нельзя. Тег noscript требуется для того, чтобы учесть появление клиента без java.
зы: Если у вас не показываются картинки, то тогда посмотрите, установлена ли галочка "Прикрепить ссылки на изображения к сообщению" в редакторе сообщения. Текст галочки у каждого может отличаться. Она должна быть отмечена. :)
Вы можете присоедениться к моему микроблогу в Твиттере @SzenProgs. Буду благодарен, если оцените мой труд, и щелкните по звездочкам ниже.
x;z-index:1 }
Google+
Разбор строки аттача в системе UCOZ, второй скрипт
Скрипты
Скрипты, инструкции, справочники