Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Нужна консультация по плагину SmartUpXML
цитата
28/07/11 в 23:03
 Hamradio
в общем плагин для вордпресса
ставиш плагин скачиваешь баху в xml формате указываешь плагину распарсить и получается ТАКАЯ ХРЕНЬ!

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

где там глюки? что то до саппорта не достучатся когда будет хз

<?php
/**
* @package SmartUp
* @version 0.1
*/
/*
Plugin Name: SmartUpXML
Plugin URI: http://www.smart-up.ru/wp_plugin
Description: Плагин импортирует XML smart-up.ru в WP
Author: Ivan Ivanov (rinat@smart-up.ru)
Version: 0.1
Author URI: http://www.smart-up.ru/
*/

register_activation_hook( __FILE__, 'smartup_register');
add_action('admin_menu', 'smartup_admin_menu');
add_filter('the_content', 'replacePartnerId');

function smartup_register()
{
   global $wpdb;
   $tSQL = "ALTER TABLE ".$wpdb->terms." ADD smartup_id INT UNSIGNED NOT NULL, ADD INDEX (smartup_id)";
   $wpdb->query($tSQL);
   $tSQL = "ALTER TABLE ".$wpdb->posts." ADD smartup_id INT UNSIGNED NOT NULL, ADD INDEX (smartup_id)";
   $wpdb->query($tSQL);
}

function smartup_admin_menu() {
   add_options_page('SmartUpXML', 'SmartUpXML', 8, __FILE__, 'smartup_parse_XML');
}

function smartup_parse_XML()
{
   global $wpdb;
   
   set_time_limit(0);

   if (isset($_POST['smartup_partner_id']) && (int) $_POST['smartup_partner_id'] != 0)
   {
      add_option('smartup_partner_id', (int) $_POST['smartup_partner_id']);
      update_option('smartup_partner_id', (int) $_POST['smartup_partner_id']);
   }

   if (isset($_REQUEST['xmlname']) && is_file(dirname(__FILE__)."/".$_REQUEST['xmlname']))
   {
      $tXml = simplexml_load_file(dirname(__FILE__)."/".$_REQUEST['xmlname']);
      $tXmlCatId2WPTermId = array(); // отношение XMLID к term_id (id категории в wp)
      $tTermId2TermTaxonomyId = array(); // отношение term_id (id категории в wp) к term_taxonomy_id (id отношения) нужно для связи товара к категории

      foreach ($tXml->shop->categories->category as $node)
      {
         $tTitle = str_replace("'", "", (String) $node);
         
         $tSQL = "SELECT term_id FROM ".$wpdb->terms." WHERE smartup_id='".(Int) $node['id']."'";
         $tResult = $wpdb->get_row($tSQL, ARRAY_A);
         if (isset($tResult['term_id']))
         {
            $tSQL = "UPDATE ".$wpdb->terms." SET name='".$tTitle."' WHERE term_id='".$tResult['term_id']."'";
            $wpdb->query($tSQL);   
         }
         else
         {
            $tSQL = "INSERT INTO ".$wpdb->terms." (name, slug, smartup_id) VALUES ('".$tTitle."', 'sucat".(String) $node['id']."', '".(Int) $node['id']."') ";
            $wpdb->query($tSQL);
            $tResult['term_id'] = $wpdb->insert_id;
         }   
         
         $tXmlCatId2WPTermId[(String) $node['id']] = $tResult['term_id'];

         $tSQL = "SELECT * FROM ".$wpdb->term_taxonomy." WHERE term_id='".$tResult['term_id']."'";
         $tResult = $wpdb->get_row($tSQL, ARRAY_A);
         if (!isset($tResult['term_taxonomy_id']))
         {
            $tSQL = "INSERT INTO ".$wpdb->term_taxonomy." (term_id, taxonomy, parent) VALUES ('".$tResult['term_id']."', 'category', '".(int) $tXmlCatId2WPTermId[(String) @$node['parentId']]."') ";
            $wpdb->query($tSQL);
            $tTermId2TermTaxonomyId[$tXmlCatId2WPTermId[(String) $node['id']]] = $wpdb->insert_id;
         }
         else
         {
            $tTermId2TermTaxonomyId[$tXmlCatId2WPTermId[(String) $node['id']]] = $tResult['term_taxonomy_id'];
         }
      }
      
      $tI = 0;
      foreach ($tXml->shop->offers->offer as $node)
      {
         $tTitle = str_replace("'", "", (String) $node->name);
         $tDescription = str_replace("'", "\"", (String) $node->description);
         
         $tPicture = '';
         if (isset($node->picture)) {
            $tPicture = '<a href="'.(String) $node->url.'/partner/{smartup_partner_id}"><img src="'.(String) $node->picture.'" align="left" class="smartup_cover" style="margin-right: 10px"></a>';
         }
         
         $tParams = '';
         if (isset($node->param))
         {
            $tParams = "<ul>";
            foreach ($node->param as $param) {
               $tParams .= "<li>".(String) $param['name'].": ".(String) $param."</li>";
            }
            $tParams .= "</ul>";
         }
         
         $tBuy = '<p class="smartup_link"><a href="'.(String) $node->url.'/partner/{smartup_partner_id}">Купить "'.$tTitle.'" за '.(String) $node->price.'руб.</a></p>';
         $tPrice = '<p class="smartup_price">Цена: '.(String) $node->price.' руб.</p>';
         
         $tDescription = $tPicture.$tPrice.$tParams.$tBuy.$tDescription;
      
         $tSQL = "SELECT * FROM ".$wpdb->posts." WHERE smartup_id='".(int) $node['id']."'";
         $tResultGood = $wpdb->get_row($tSQL, ARRAY_A);
         if (isset($tResultGood['ID']))
         {
            $tSQL = "UPDATE ".$wpdb->posts." SET post_title='".$tTitle."', post_content='".$tDescription."' WHERE ID='".$tResultGood['ID']."'";
            $wpdb->query($tSQL);
         }
         else
         {
            $tSQL = "INSERT INTO ".$wpdb->posts." (post_author, post_title, post_content, smartup_id) VALUES ('1', '".$tTitle."', '".$tDescription."', '".(int) $node['id']."')";
            $wpdb->query($tSQL);
            $tResultGood['ID'] = $wpdb->insert_id;
         }

         $tSQL = "SELECT * FROM ".$wpdb->term_relationships." WHERE object_id='".$tResultGood['ID']."'";
         $tResult = $wpdb->get_row($tSQL, ARRAY_A);
         if (!isset($tResult['object_id']))
         {
            $tSQL = "INSERT INTO ".$wpdb->term_relationships." (object_id, term_taxonomy_id) VALUES ('".$tResultGood['ID']."', '".$tTermId2TermTaxonomyId[$tXmlCatId2WPTermId[(String) $node->categoryId]]."') ";
            $wpdb->query($tSQL);
         }
      }
      
      add_option('smartup_file_update_'.$_REQUEST['xmlname'], date("Y-m-d H:i:s"));
      update_option('smartup_file_update_'.$_REQUEST['xmlname'], date("Y-m-d H:i:s"));
   }
   
   
   $tXMLs = array();
   $tHandle = @opendir(dirname(__FILE__));
   if($tHandle !== false)
   {
      while (($item = readdir($tHandle)) !== false)
      {
         if (preg_match("/\.xml$/", $item)) {
            $tXMLs[] = $item;
         }
      }
      closedir($tHandle);
   }

   ?>
      <h1>SmartUp XML</h1>
      <ul>
         <li>PHP должен быть не ниже версии 5.2 и поддерживать Simple_XML. Ваша версия PHP - <b><?= phpversion() ?></b></li>
         <li>Файлы XML должны лежать в папке <i>/wp-content/plugins/smartup</i> </i></li>
         <li>Свежий файл XML можно скачать на <a href="http://www.smart-up.ru/catalogxml_descr" target="_blank">странице сайта smart-up.ru</a></li>
      </ul>
      <p>&nbsp;</p>
      <form method="POST" action="?page=smartup/index.php">
         ID партнера <input type="text" name="smartup_partner_id" value="<?= get_option('smartup_partner_id') ?>"><br>
         <input type="submit" value="Сохранить">
      </form>
      <p>&nbsp;</p>
      <? if (count($tXMLs)): ?>
         <p style="color: green">Найдены файлы XML:</p>
         <table>
         <tr>
            <th>№</th>
            <th>Имя файла</th>
            <th>Действие</th>
            <th>Дата загрузки</th>
         </tr>
         <? $tI = 0 ?>
         <? foreach ($tXMLs as $filename): ?>
            <tr <?= ((++$tI%2) != 0) ? 'style="background: #eeeeee"' : '' ?>>
               <td style="padding: 3px 10px 3px 10px"><?= $tI ?></td>
               <td style="padding: 3px 10px 3px 10px"><?= $filename ?></td>
               <td style="padding: 3px 10px 3px 10px"><input type="button" value="Распарсить XML" onclick="location.href='?page=smartup/index.php&xmlname=<?= $filename ?>'"></td>
               <td style="padding: 3px 10px 3px 10px"><?= get_option('smartup_file_update_'.$filename) ?></td>
            </tr>
         <? endforeach ?>
         </table>
      <? else: ?>
         <p style="color: red">Файлы с каталогами XML не найдены</p>
      <? endif ?>
      
      
   <?
}

function replacePartnerId($content)
{
   return str_replace("{smartup_partner_id}", get_option('smartup_partner_id'), $content);
}

?>
цитата
28/07/11 в 23:05
 Hamradio
хмл выглядит примерно так :

правда почему то заливал хрен знает сколько а в вордпрессе при редактировании показывает значительно меньше

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2011-07-28"><shop><name>Smart-Up.ru</name><company>Smart-Up.ru</company><url>http://www.smart-up.ru/</url><currencies><currency id="RUR" rate="1"/></currencies><categories><category id="1108885" url="http://www.smart-up.ru/catalog/category/1108885">Книги</category><category id="1108586" parentId="1108885" url="http://www.smart-up.ru/catalog/category/1108586">Электронные книги</category><category id="1108849" parentId="1108586" url="http://www.smart-up.ru/catalog/category/1108849">Справочники</category><category id="1108850" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108850">Справочники</category><category id="1108851" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108851">Путеводители</category><category id="1108852" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108852">Словари</category><category id="1108853" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108853">Справочная литература: прочее</category><category id="1108854" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108854">Энциклопедии</category><category id="1108855" parentId="1108849" url="http://www.smart-up.ru/catalog/category/1108855">Руководства</category><category id="1108873" parentId="1108586" url="http://www.smart-up.ru/catalog/category/1108873">Семья</category><category id="1108874" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108874">Здоровье</category><category id="1108878" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108878">Кулинария</category><category id="1108877" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108877">Развлечения</category><category id="1108882" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108882">Сделай сам</category><category id="1108881" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108881">Домашние животные</category><category id="1108880" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108880">Хобби, Ремесла</category><category id="1108879" parentId="1108873" url="http://www.smart-up.ru/catalog/category/1108879">Дом и семья: прочее</category><category id="1108876" parentId="1108873" url="http://www.smart-
цитата
28/07/11 в 23:08
 Hamradio
вот где там собака порылась? icon_wink.gif

если я правильно понимаю то этот распарсиватель можно под другие партнерки использовать которые тоже в виде хмл дают базу ?

там есть какой то сдандарт под переменные ? ну то есть длинное описание к примеру всегда пишется переменная дескрипшен а не деск или как то по другому ? или каждый проггер по своему указывает и прийдется редактировать перед распарсиванием плагин ?
цитата
28/07/11 в 23:17
 andreich
ну там XML под yandex маркет, поэтому не все распарсят, но думаю тотже CyberSEO плагин при определенных настройках схавает его
цитата
28/07/11 в 23:40
 Hamradio
меня скоро от слова CyberSEO тошнить уже будет
сколько его можно навязывать? ну может он и самый пиздатый скрипт но он платный а тут вопрос в том что в плагине вордпресса неправильно ?
цитата
07/08/11 в 19:05
 Hamradio
в общем проггер криворукий был
сейчас поправил плагин ве пашет как нужно


Эта страница в полной версии