Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как сделать вывод на печать на чужом форуме.

Ответить
Настройки темы
Как сделать вывод на печать на чужом форуме.

Ветеран


Сообщения: 1862
Благодарности: 132


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


На одном форуме нет возможности вывести топик в печатном виде. Вот как есть 10 сообщенй на странице, так и смотри. А очень хотелось бы вывести многостраничные топики на одной странице и, скажем, поискать что-нибудь.
Есть какие-нибудь идеи на этот счет? PHP, Javascript (?).

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 21:06, 28-09-2007

 
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


не очень поняла - у тебя доступ к кодам форума, или ты хочешь для себя с внешней стороны приделать такую возможность?

в принципе
1) выясняем, по какому принципу составляется url по страницам
2) научаемся его генерировать по url первой страницы
3) научится парсить страницу, выгребая из нее нужную информацию
3) пишем скрипт (на своем сервере), получающий все затребованные страницы по первой (от первой гененрируем дальнейшие url, пока приходят нормальные ответы)
4) паросим результат, сливая значимую информацию вместе и, наверное, вставляя в родное обрамление

Интерфейс к этому - форма, куда можно занести url первой страницы---> потом склеенный результат

Если надо отвечать из своей псевдостраницы, то надо возиться с получением своей сессии-кук и т.д.

В общем, не уверена, что игра стоит свеч

Отправлено: 21:40, 28-09-2007 | #2



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

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


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


для себя с внешней стороны приделать такую возможность

Игра свеч стоит, вот только отвечать не надо, надо только читать.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 22:14, 28-09-2007 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


ну, если отвечать не надо, то что-то типа того, что я по пунктам изобразила. С учетом *nix на машине вопрошающего - можно все оформить, как страничку на своем локальном апаче.
А можно выпендрится и еще и вход туда сделать из какой-нибудь кнопочки на панели firefox-а

Отправлено: 22:39, 28-09-2007 | #4


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


не-а я так и останусь виндузятником
К сожалению тюнер нельзя (хотя и не пробовал) завести под никсы.
А про кнопочку думаю, только в опере Причем без кнопочки это не солидно. Сейчас копаю operafan, может найду чего.

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 22:54, 28-09-2007 | #5


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Кое-как чего-то настряпал.
mar, самое сложное парсить страницу. Надо найти одну циферку показывающей общее количество страниц. Потому как более-менее отрабатываются ~ 15-20 страниц, поболее - сервер ничего не отвечает, больше 40 Windows выпадает в BSOD.
Потом убрать из всех страниц (кроме первой) head.
Запихнуть свой css -файл (чем?)
Убрать мелкие картинки, чем лучше - вырезать с помощью php, или спрятать с помощью css.




Паралельно с помощью css удаляю лишние элементы со страницы.
Возник вопрос. Предположим некоторый элемент удаляем со страницы с помощью:
PHP код: Выделить весь код

span[class="gensmall"],

 *[
width="88"][height="31"]{
    
display:none !important;
 } 

Можно ли аналогично сделать для этого элемента функцию скрытый текст.
Как здесь - http://forum.oszone.net/thread-86772-7.html#post640859

Наверно понять что же я хочу трудно, но может кто поймет

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 00:02, 20-10-2007 | #6


Аватара для Arrest

runs with scissors


Сообщения: 642
Благодарности: 77

Профиль | Отправить PM | Цитировать


Igor_I
Не совсем понимаю, но скрытый текст делается так:
читать дальше »
Javascript-часть:
PHP код: Выделить весь код

<script language="Javascript">

function 
toggle(element){
 if(
document.getElementById(element).style.display == "none"){
  
document.getElementById(element).style.display "inline";
  
document.getElementById(element "toggle").style.display "none";
 }
 if(
document.getElementById(element).style.display != "none"){
  
document.getElementById(element).style.display "none";
  
document.getElementById(element "toggle").style.display "inline";
 }
 return 
false;
}
</script> 

Сам html-код:
HTML код: Выделить весь код
<span class="gen" id="hide1" onClick="toggle(hide1);">Какой-то текст</span><span id="hide1toggle" onClick="toggle(hide1);">смотреть...</span>

Писал на ходу, общая идея ясна, за ошибки не отвечаю

-------
- Why do you call this version of software 'beta'?
- Coz it's beta than nothing.


Отправлено: 01:36, 20-10-2007 | #7


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Arrest, как думаешь, можно ли использую UserJS в Опере, превратить обычный текст в скрытый?

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Отправлено: 01:07, 22-10-2007 | #8


Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Ну что же, будем позорится
читать дальше »

PHP код: Выделить весь код

$url $_GET['url'];

$spages $_GET['spages'];
$numpages $_GET['numpages'];
$count $_GET['count'];
$contents '';

function  
getpage($urlp){

        global 
$page;

        
$fp fopen($urlp"r");                  // открыть файл

        
while (! feof($fp)) {
               
$page .= fread($fp,1000000);               // прочитать файл
        
}
           
fclose($fp);

           unset (
$urlp);
        return 
$page;
       }

function 
editpage ($page,$new) {

        unset (
$contentsone);
        global 
$contentsone;
        global 
$count;

        
$page2 explode ('head>'$page);                    // вырезать head
           
$page3 explode ('class="catHead"'$page2[2]);      //  удалить верх страницы  с рекламой

           
$page4 explode ('<!-- [begin]'$page3[1]);

           

        
$contentsone $page4[0];

        
$search = array ( "viewtopic.php?",
                          
"valign=\"top\" nowrap=\"nowrap\"",
                          
"valign=\"middle\" nowrap=\"nowrap\"");

        
$replace = array ("http://www.autolada.ru/viewtopic.php?",
                          
"style=display:none",
                          
"style=display:none");

        
$contentsone str_replace($search$replace$contentsone);

        if (
$new='1') {
            
$r=explode ('<span class="nav">Страница',$page3[1]);          // найти место ссылок на страницы
            
$r2=explode ('</span>',$r[1]);

            
$d=strip_tags ($r2[0]);                           // удалить тэги

            
preg_match_all ("/[0-9]{1,3}/",$d,$matches);
            
preg_match_all ("/^(title) + (\/title)/",$page2[1],$title);

            
$count $matches[0][1];
        }

        unset (
$page2);
        unset (
$page3);
        unset (
$page4);

        return 
$contentsone;
        return 
$count;
        return 
$title;
    }

function 
viewpage ($viewpage) {

        unset (
$view);

        
$prepage '<table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0">
                    <tr align="right">
                    <td class="catHead"'
;

        
$endpage '</table>';

          
$view $prepage.$viewpage.$endpage;

        echo 
$view;

         unset (
$view);
          unset (
$viewpage);

    }

$head ='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//RU">
<html dir="ltr">
<head>
<title>AUTOLADA.RU :'
.$title.':</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Content-Style-Type" content="text/css">
<META name="home_url" content="http://www.autolada.ru/index.php">
<link rel="stylesheet" type="text/css" rel="nofollow" href="/go.php?url=http://www.autolada.ru/templates/subSilver/subSilver.css">
<body bgcolor="#E3E7ED" text="#000000" link="#006699" vlink="#5493B4" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<a name="top"></a>
</TR>
</TABLE>
<style type="text/css">
td[valign="middle"][nowrap="nowrap"]{
display:none !important;
}
</style>
'
;


    if (!
$numpages) {

        
getpage($url);
        
editpage ($page,1);


        if (
$count 15){

            echo 
'<div align="center">Сколько страниц вы хотите получить? Максимум 15 страниц.
                  <form name="" action="" method="get">
                  <input name="url" type="hidden" value="'
.$url.'">
                  <input name="count" type="hidden" value="'
.$count.'">
                  Показать
                  <select size="1" name="numpages">'
;
             for (
$i 1$i <= 15$i ++) {
                 echo 
'<option value="'.$i.'">'.$i.'</option>';
                 }

             echo 
'</select> страниц,  начиная с
                  <select size="1" name="spages">'
;

             for (
$i 1$i $count$i ++) {
                 echo 
'<option value="'.$i.'">'.$i.'</option>';
                 }

            echo 
'</select>

                <br>
                <input type="submit" value="Получить">
                </form></div>'
;
        }

        else {

            echo 
$head;
            echo 
"<br><hr> 1 страница из ".$count;
            echo 
" .. urlprint= <a href=".$url.">".$url."</a>";

            
viewpage ($contentsone);

               unset (
$page);

            for (
$q 1$q $count$q ++) {

                echo 
"<br><hr> ".($q 1)." страница из ".$count;

                
$urlprintw $url.'&start='.$q*15;

                   echo 
" .. urlprint= <a href=".$urlprintw.">".$urlprintw."</a>";

                
getpage($urlprintw);
                unset (
$urlprintw);

                
editpage ($page,0);
                unset (
$page);

                
viewpage ($contentsone);
                unset (
$contentsone);
            }
        }
   }

       if (
$numpages) {

            echo 
$head;

            for (
$q 0$q < ($numpages); $q ++) {

                
$urlprintw $url.'&start='.($spages $q 1) * 15;

                echo 
"<br><hr> ".($spages $q)." страница <a href=".$urlprintw.">(".($spages $q).")</a> из ".$count." .. urlprint= <a href=".$urlprintw.">".$urlprintw."</a>";

                   
getpage($urlprintw);
                unset (
$urlprintw);

                
editpage ($page,0);
                unset (
$page);

                
viewpage ($contentsone);
                unset (
$contentsone);
            }
           } 



Выглядит это примерно так =

Жду критики

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Последний раз редактировалось Igor_I, 28-11-2007 в 23:11.


Отправлено: 22:55, 28-11-2007 | #9


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Можно всё сделать (если уже не сделано?) с помощью javascript. Конкретнее, пишем букмарклет, который использует XHTTPRequest-ы для получения всех недостающих страниц. Если форум не шифруется*, то всё достаточно просто.

__
* Некоторые сайты не позволяют себя запрашивать слишком часто или шифруют контент javascript'ом.

Отправлено: 15:07, 11-01-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Как сделать вывод на печать на чужом форуме.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Звук - вывод звука с видеопроигрывателя на две звуковые карты - подскажите как сделать ? andrey_engels Прочее железо 4 30-12-2009 11:32
Драйвер - Принтер Canon LBP 2900 медленный вывод на печать Sector9 Microsoft Windows 2000/XP 3 13-02-2009 12:47
Доступ - Запуск DOS приложения и вывод на печать с правами пользователя ss777 Microsoft Windows 2000/XP 0 27-06-2008 07:30
Вывод на печать???? Novistok Microsoft Windows NT/2000/2003 4 08-11-2005 10:52
Как сделать постраничный вывод? FADE Вебмастеру 7 20-07-2004 18:37




 
Переход