С нами с 12.04.02
Сообщения: 10405
Рейтинг: 908
|
Добавлено: 28/07/11 в 23:03 |
в общем плагин для вордпресса
ставиш плагин скачиваешь баху в 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> </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> </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);
}
?> |
|
|
|
|
С нами с 12.04.02
Сообщения: 10405
Рейтинг: 908
|
Добавлено: 28/07/11 в 23:05 |
хмл выглядит примерно так :
правда почему то заливал хрен знает сколько а в вордпрессе при редактировании показывает значительно меньше
Код: [развернуть] | <?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- |
|
|
|
|
С нами с 12.04.02
Сообщения: 10405
Рейтинг: 908
|
Добавлено: 28/07/11 в 23:08 |
вот где там собака порылась?
если я правильно понимаю то этот распарсиватель можно под другие партнерки использовать которые тоже в виде хмл дают базу ?
там есть какой то сдандарт под переменные ? ну то есть длинное описание к примеру всегда пишется переменная дескрипшен а не деск или как то по другому ? или каждый проггер по своему указывает и прийдется редактировать перед распарсиванием плагин ?
|
|
|
|
Z
С нами с 15.05.05
Сообщения: 55182
Рейтинг: 7770
|
Добавлено: 28/07/11 в 23:17 |
ну там XML под yandex маркет, поэтому не все распарсят, но думаю тотже CyberSEO плагин при определенных настройках схавает его
|
|
|
|
С нами с 12.04.02
Сообщения: 10405
Рейтинг: 908
|
Добавлено: 28/07/11 в 23:40 |
меня скоро от слова CyberSEO тошнить уже будет
сколько его можно навязывать? ну может он и самый пиздатый скрипт но он платный а тут вопрос в том что в плагине вордпресса неправильно ?
|
|
|
|
С нами с 12.04.02
Сообщения: 10405
Рейтинг: 908
|
Добавлено: 07/08/11 в 19:05 |
в общем проггер криворукий был
сейчас поправил плагин ве пашет как нужно
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |