Вместо родных новостей - новости из RSS

Тема в разделе "Shop-script", создана пользователем djslap, 3 окт 2008.

Статус темы:
Закрыта.
  1. djslap

    djslap

    Регистр.:
    29 сен 2007
    Сообщения:
    193
    Симпатии:
    2
    У меня на одном хосте стоят DLE и Shop Script

    Подскажите - каким образом можно сделать так чтобы последние 7 новостей из DLE были в шортлисте новостей Shop Scriptа. Ну только заголовки - а при нажатии на них открывалась сама новость.

    на ветке о DLE
    мне сказали, что это реально:
    подскажите что делать?

    вот такой у меня RSS:
    http://www.etm.com.ua/news/engine/rss.php
     
  2. Welho®

    Welho® Предвестник пьянки

    Регистр.:
    4 дек 2007
    Сообщения:
    855
    Симпатии:
    331
    в принципе идея не нова, нужно только будет скрипт написать, который будет парсить нужную(твою) ленту и выводить ее в нужном месте сайта или магазина.
    даже здесь, на нулледе пошерсти поиском, кто-то упоминал простенькие скрипты вывода RSS
     
    djslap нравится это.
  3. djslap

    djslap

    Регистр.:
    29 сен 2007
    Сообщения:
    193
    Симпатии:
    2
    Пол дня искал - читал... голова кругом идет, а то что нужно не нашел :(
    точно на нулледе это есть?
     
  4. Welho®

    Welho® Предвестник пьянки

    Регистр.:
    4 дек 2007
    Сообщения:
    855
    Симпатии:
    331
    хреново искал :D
    даю пинок в нужном направлении
     
    djslap нравится это.
  5. djslap

    djslap

    Регистр.:
    29 сен 2007
    Сообщения:
    193
    Симпатии:
    2
    не много не понимаю
    там написано что это "но только *.rdf"
    и далее код:
    PHP:
    <?php 

    function startElement($parser$name$attrs) { 
    global 
    $tag$rss
    if (
    $name == 'RSS'
    $rss '^RSS'
    elseif (
    $name == 'RDF:RDF'
    $rss '^RDF:RDF'

    $tag .= '^' $name


    function 
    endElement($parser$name) { 
    global 
    $tag
    global 
    $itemCount$items
    if (
    $name == 'ITEM') { 
    $itemCount++; 
    if (!isset(
    $items[$itemCount])) $items[$itemCount] = array('title' => '''link' => '''desc' => '''pubdate' => ''); 


    $tag substr($tag0strrpos($tag'^')); 


    function 
    characterData($parser$data) { 
    global 
    $tag$chanTitle$chanLink$chanDesc$rss$imgTitle$imgLink$imgUrl
    global 
    $items$itemCount

    $rssChannel ''
    if (
    $data) { 
    if (
    $tag == $rss '^CHANNEL^TITLE') { 
    $chanTitle .= $data
    } elseif (
    $tag == $rss '^CHANNEL^LINK') { 
    $chanLink .= $data
    } elseif (
    $tag == $rss '^CHANNEL^DESCRIPTION') { 
    $chanDesc .= $data

    if (
    $rss == '^RSS'$rssChannel '^CHANNEL'

    if (
    $tag == $rss $rssChannel '^ITEM^TITLE') { 
    $items[$itemCount]['title'] .= $data
    } elseif (
    $tag == $rss $rssChannel '^ITEM^LINK') { 
    $items[$itemCount]['link'] .= $data
    } elseif (
    $tag == $rss $rssChannel '^ITEM^DESCRIPTION') { 
    $items[$itemCount]['desc'] .= $data
    } elseif (
    $tag == $rss $rssChannel '^ITEM^PUBDATE') { 
    $items[$itemCount]['pubdate'] .= $data
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^TITLE') { 
    $imgTitle .= $data
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^LINK') { 
    $imgLink .= $data
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^URL') { 
    $imgUrl .= $data





    function 
    parseRSS($url) { 
    global 
    $tag$chanTitle$chanLink$chanDesc$rss$items$itemCount$imgTitle$imgLink$imgUrl
    $chanTitle ''
    $chanLink ''
    $chanDesc ''
    $imgTitle ''
    $imgLink ''
    $imgUrl ''
    $tag ''
    $rss ''

    global 
    $items$itemCount

    $itemCount 0
    $items = array(=> array('title' => '''link' => '''desc' => '''pubdate' => '')); 

    $xml_parser xml_parser_create(); 
    xml_set_element_handler($xml_parser"startElement""endElement"); 
    xml_set_character_data_handler($xml_parser"characterData"); 

    @
    $fp fopen($url"r"); 
    $data ""
    while (
    true) { 
    @
    $datas fread($fp4096); 
    if (
    strlen($datas) == 0) { 
    break; 

    $data .= $datas


    @
    fclose($fp); 

    if (
    $data != '') { 
    $xmlresult xml_parse($xml_parser$data); 
    $xmlerror xml_error_string(xml_get_error_code($xml_parser)); 
    $xmlcrtline xml_get_current_line_number($xml_parser); 

    if (
    $xmlresult
    displayData(); 
    else 
    print(
    "Error parsing this feed !<br />Error: $xmlError , at line: $xmlCrtline"); 
    } else { 
    print(
    "Error while retriving feed $url"); 


    xml_parser_free($xml_parser); 


    function 
    displayData() { 
    global 
    $chanTitle$chanLink$chanDesc$rss$items$itemCount$imgTitle$imgLink$imgUrl
    global 
    $items$itemCount
    ?> 
    <?= $chanTitle ?> 
    <div> 
    <a href="<?= $chanLink ?>"><img src="<?= $imgUrl ?>" alt="<?= $imgTitle ?>" border="0" /></a> 
    <h1><?= $chanTitle ?></h1> 
    <h3><?= $chanDesc ?></h3> 
    </div> 
    <hr /> 
    <?php 
    for($i 0;$i count($items)-1;$i++) { 
    echo 
    "<h4>".$items[$i]['title']."</h4>"
    echo 
    "<h5>".$items[$i]['pubdate']."</h5>"
    echo 
    "<a href='".$items[$i]['link']."'>".$items[$i]['desc']."</a>"

    ?> 


    <?php 

    $url="http://www.kazna.ru/news.rdf"
    parseRSS($url); 
    ?> 
    это то что мне нужно? или я опять не то нашел?
     
  6. Welho®

    Welho® Предвестник пьянки

    Регистр.:
    4 дек 2007
    Сообщения:
    855
    Симпатии:
    331
    ну не знаю в каком формате у тебя лента-донор, скриптов навалом, в яндексе глянь. там ссылок тьма на скрипты подобные.
    пользуйся поисковыми системами.
    ну и вот например ссылка тебе http://forum.searchengines.ru/showthread.php?t=38283
    http://forum.searchengines.ru/showthread.php?t=140276
    последняя ссылку думаю полезней тебе будет
     
    djslap нравится это.
  7. djslap

    djslap

    Регистр.:
    29 сен 2007
    Сообщения:
    193
    Симпатии:
    2
    Перепробовал все коды с этих тем, чтото не то
    у меня на сайте сразу Fatal Error :(

    может у нас есть люди которые уже это делали себе?

    нагел интересный сайт
    http://www.rss-script.ru
    там можно дать адрес на свой rss и код генерируется сам
    только у меня не получается разобраться что куда вставлять нужно.
    Собственно вот код:
    <!-- begin rss-script.ru style -->

    <!-- добавьте эту таблицу стилей в тег HEAD вашей страницы -->
    <!--<style type="text/css">-->

    <!--

    .divrrs{width:100%;font-size:12px;background-color:#ffffff;color:#000000;padding:5px;margin:5px;}

    .arss{color:#000000}

    .h1rss{font-size:16px;}

    .h2rss{font-size:14px;}

    -->

    <!--</style>-->

    <!-- end rss-script.ru style -->

    <!-- добавьте этот код в отведенное для ленты новостей место -->

    <!-- begin rss-script.ru code -->
    <script type="text/javascript">
    var charset=false;
    var t=document.getElementsByTagName('meta');
    for(var i=0; i<t.length; i++)
    {
    var rg=/charset=["']?([^"']*)/g;
    if(t.content.indexOf('charset')!=-1){charset=rg.exec(t.content)[1];break;}
    }
    document.write('<div class="divrrs"> <script type="text/javascript" src="http://www.rss-script.ru/js.php?rss=http://www.etm.com.ua/news/engine/rss.php&charset='+charset+'"><\/script><\/div>');
    </script>
    <noscript>Для просмотра этой RSS ленты требуется поддержка Java Script</noscript><center><a title='RSS новости на вашем сайте' class='arss' href='http://www.rss-script.ru'>RSS импорт: www.rss-script.ru</a></center>
    <!-- end rss-script.ru code -->



    я понимаю что этот кусок
    PHP:
    <!-- begin rss-script.ru code -->
    <
    script type="text/javascript">
    var 
    charset=false;
    var 
    t=document.getElementsByTagName('meta');
         for(var 
    i=0i<t.lengthi++)
    {
    var 
    rg=/charset=["']?([^"']*)/g;
    if(t[i].content.indexOf('
    charset')!=-1){charset=rg.exec(t[i].content)[1];break;}
    }
    document.write('
    <div class="divrrs"> <script type="text/javascript" src="http://www.rss-script.ru/js.php?rss=http://www.etm.com.ua/news/engine/rss.php&charset='+charset+'"><\/script><\/div>');
    </script>
    <noscript>Для просмотра этой RSS ленты требуется поддержка Java Script</noscript><center><a title='
    RSS новости на вашем сайте' class='arss' href='http://www.rss-script.ru'>RSS импорт: www.rss-script.ru</a></center>
    <!-- end rss-script.ru code -->
    нужно вставить в файл news.frontend.shortlist.tpl

    но куда вставлять первую часть кода?
    когда вставляю код без первой части - опять ФАТАЛ ЭРРОР
     
  8. partizannn

    partizannn

    Регистр.:
    15 сен 2008
    Сообщения:
    418
    Симпатии:
    52
    <!-- добавьте эту таблицу стилей в тег HEAD вашей страницы -->

    Первая часть по всей логике должна вставляться в head.tpl.html, а стили пропиши в свои стили...
    А что за еррор, можно подробнее?
     
  9. djslap

    djslap

    Регистр.:
    29 сен 2007
    Сообщения:
    193
    Симпатии:
    2
    Fatal error: Smarty error: [in news.frontend.shortlist.tpl.html line 31]: syntax error: unrecognized tag: width:100%;font-size:12px;background-color:#ffffff;color:#000000;padding:5px;margin:5px; (smarty_compiler.class.php, line 436) in /usr/home/compshop/data/www/etm.com.ua/smarty/smarty.class.php on line 1088
     
  10. partizannn

    partizannn

    Регистр.:
    15 сен 2008
    Сообщения:
    418
    Симпатии:
    52
    ааа)))
    Я понял, тебе надо попробовать сделать так:
    <!-- begin rss-script.ru code -->
    {literal}
    <script type="text/javascript">
    var charset=false;
    var t=document.getElementsByTagName('meta');
    for(var i=0; i<t.length; i++)
    {
    var rg=/charset=["']?([^"']*)/g;
    if(t.content.indexOf('charset')!=-1){charset=rg.exec(t.content)[1];break;}
    }
    document.write('<div class="divrrs"> <script type="text/javascript" src="http://www.rss-script.ru/js.php?rss=http://www.etm.com.ua/news/engine/rss.php&charset='+charset+'"><\/script><\/div>');
    </script>
    <noscript>Для просмотра этой RSS ленты требуется поддержка Java Script</noscript><center><a title='RSS новости на вашем сайте' class='arss' href='http://www.rss-script.ru'>RSS импорт: www.rss-script.ru</a></center>
    {/literal}
    <!-- end rss-script.ru code -->

    Красненьким выделил то что надо попробовать добавить ;)
     
    djslap нравится это.
Статус темы:
Закрыта.