Вывод товаров в RSS на других сайтах

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

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

    genjak Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    107
    Симпатии:
    30
    Итак, смотрел по форуму так и не нашел - решил сам сделать.
    Выкладываю в общий доступ.
    Если нужно спрятать - говорите.

    Схема простая - случайный товар с сайта берется через RSS и уже потом он интегрируется на других сайтах, блогах и т.д.

    Итак, в шоп скрипте в корневой папке создаем папку rss
    туда заливаем два фаила - func.php и index.php

    func.php - это связь с БД
    index.php - в нем непосредственно создается rss фаил.

    Фаил func.php
    PHP:
    <?php
    // установки для связи с базой данных

    //include("../cfg/connect.inc.php");
            
    define('DBMS'''); // database system
            
    define('DB_HOST'''); // database host
            
    define('DB_USER'''); // username
            
    define('DB_PASS'''); // password
            
    define('DB_NAME'''); // database name
            
    define('ADMIN_LOGIN''admin');  // administrator's login
            

    function dbconnect($db_host$db_user$db_pass$db_name) {
    $db_connect = @mysql_connect($db_host$db_user$db_pass);
    $db_select = @mysql_select_db($db_name);
    if (!
    $db_connect) {
    die(
    "Не могу установить связь с MySQL
    "
    .mysql_errno()." : ".mysql_error()."");
    } elseif (!
    $db_select) {
    die(
    "Не могу выбрать базу данных MySQL
    "
    .mysql_errno()." : ".mysql_error()."");
    }
    }

    function 
    dbquery($query) {
    $result = @mysql_query($query);
    if (!
    $result) {
    echo 
    mysql_error();
    return 
    false;
    } else {
    return 
    $result;
    }
    }

    function 
    dbarray($query) {
    $result = @mysql_fetch_assoc($query);
    if (!
    $result) {
    echo 
    mysql_error();
    return 
    false;
    } else {
    return 
    $result;
    }
    }

    dbconnect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    ?>

    фаил index.php

    PHP:
    <?php
    include ("func.php");


    echo 
    "
    <?xml version='1.0' encoding='windows-1251' ?>
    <rss version='2.0' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>

    <channel>
    <title>Магазин</title>
    <link>Магазин</link>
    <description>Магазин</description>
    <language>ru</language>
    "
    ;

    $result dbquery("SELECT a.name, a.productID, a.date_modified, a.brief_description, a.price, b.thumbnail  FROM SS_products a, SS_product_pictures b WHERE a.productID=b.productID ORDER BY RAND() DESC LIMIT 0,20");
    while (
    $data dbarray($result)) {
    echo 
    "<item>
    "
    ;
    echo 
    "<title>".$data['name']."</title>
    "
    ;

    echo 
    "<link>http://site.ru/product".$data['productID'].".html</link>";
    echo 
    "<description>".$data['name']."</description>";

    echo 
    "<price>".$data['price']."</price>";
    echo 
    "<image>http://site.ru/products_pictures/".$data['thumbnail']."</image>";

    echo 
    "<guid>http://site.ru/product".$data['productID'].".html</guid>";

    echo 
    "</item>";
    }

    echo 
    "</channel>
    </rss>"
    ;
    ?>
    Все, теперь даже картинки можно выводить на других сайтах.

    Ваша rss лента доступна ваш ваш сайт/rss/

    Конечно код можно улучшить,доработать изменить, объединить в один фаил и т.д.
    Просто только что сделал - решил поделиться с любимым форумом).
    Да сразу оговорюсь - ссылки делаются под ЧПУ магазина.

    Если нужно - расскажу как выводить rss на сайтах других. вместе с картинками.

    Немного изменить - можно выводить новости, другие виды товаров(щас товары выводятся случайным образом).

    Вывода товаров на других сайтах даже у сибиряка нету).
     
    VenomHOLD, wayker47, lexmuse и 5 другим нравится это.
  2. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.265
    Отлично сделал, респект большой тебе. Тока у меня хренотень получилась, (стоит ЧПУ)
    Выводит простым текстом, а не урлами и картинок не видно..
    Код:
    http://sate.ru/products_pictures/88tch.jpghttp://sate.ru/product584.html
    И т.д.

    Спрячька под хайд (не меньше 10-200:D) от греха по дальше. Быстро барыги разнюхают все это дело.
     
  3. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    Подскажи, пожалуйста, а как сделать для сайтов без ЧПУ.... Я думаю, что большинство народа сидит без ЧПУ. Спасибо!
     
  4. nero11

    nero11

    Регистр.:
    8 янв 2007
    Сообщения:
    215
    Симпатии:
    20
    Незабудьте в эту папку .htaccess положить и закрыть её, а то пароли уведут
     
  5. genjak

    genjak Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    107
    Симпатии:
    30
    Итак, спрятал под хайд)

    RSS - это просто XML фаил данных в которых хранятся записи.

    Структура проста -
    <channel> - хранятся данные о канале RSS,
    далее <item></item>хранятся в тэгах записи значения полей.

    Что бы были видны картинки в РСС сразу - можно в desription - вставлять тэг <img > с атрибутами, но не все RSS агрегаторы быдыут понимать и разрешают тэги HTML.

    По поводу ссылок и ЧПУ
    в фаиле index.php
    <link>http://site.ru/product".$data['productID'].".html</link>
    меняем на нужную нам(с ЧПУ, без и т.д.))))

    За HTACCESS спасибо неподумал).

    Вообще - данный пример делался что бы выводить на моих сайтах товары интернет магазина моего же)))
     
  6. virogago

    virogago Постоялец

    Регистр.:
    5 май 2007
    Сообщения:
    118
    Симпатии:
    14


    Спасибо за код (genjak).
    но конечно желателнее если ты в жывом примере обяснил бы, как васпользоватца твоим скриптом?.
    Спасибо
     
  7. genjak

    genjak Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    107
    Симпатии:
    30
    да магазин только заполняется контентом , так что пока показывать рано

    вообще это все - способ свои товары или новости показывать на других сайтах, причем изменяемое содержание.
    Так что обеспечивает приток клиентов.
     
  8. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.265
    Кто сделал себе, выложите скины, хоть поглядеть что из этого получается, у меня все равно крякобрязы...:(
     
  9. Caurus

    Caurus

    Регистр.:
    21 фев 2008
    Сообщения:
    348
    Симпатии:
    285
    Вот я не понял, почему фотки не выводит? Как я понял он должен их брать из SS_product_pictures, где thumbnail и есть фотка..... может там, в коде ошибка, раз он не берет ее....вернее при запросе к базе дынных...кто сечет в запросах к базам....

    PHP:
    $result dbquery("SELECT a.name, a.productID, a.date_modified, a.brief_description, a.price, b.thumbnail  FROM SS_products a, SS_product_pictures b WHERE a.productID=b.productID ORDER BY RAND() DESC LIMIT 0,30");
    и тут
    PHP:
    echo "<image>http://localhost/Polnaya_versiia/products_pictures/".$data['thumbnail']."</image>";
    этот участок отвечает за вывод картинки тут все правильно?
     
  10. genjak

    genjak Постоялец

    Регистр.:
    22 мар 2007
    Сообщения:
    107
    Симпатии:
    30
    Начну с конца)

    Ниодин брайзер не покажет картинку вот так)))
    PHP:
    echo "<image>http://localhost/Polnaya_versiia/products_pictures/".$data['thumbnail']."</image>";  
    Хотите что бы показало замените
    PHP:
    echo "<desсription><img src='http://localhost/Polnaya_versiia/products_pictures/'.$data['thumbnail']."'></description>";  
    Должно работать)


    ПО поводу запросов - b.thumbnail - это ссылка на маленькую картинку. Либо у тебя нет картинки маленькой, либо нужно смотреть.


    nocopy - в каком смысле крякозябры?
    Там кодировка устанавливается encoding='windows-1251'
    может из за этого???

    Кидайте ссылки посмотрю подскажу каждому)

    Добавлено через 19 минут
    кстати проверьте - префикс таблиц "SS_"
     
Статус темы:
Закрыта.