|
|
30.10.2013, 10:13
|
|
Гость
Гость
|
при запуске файла выдает следующую ошибку:
This page contains the following errors:
error on line 2 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
Подскажите что можно с этим сделать?
|
|
|
30.10.2013, 11:14
|
|
Дмитрий
Зарегистрирован: 2013-09-30
Сообщений: 14
|
Вот код файла yandexml.php в котором что-то нужно исправить (во второй строке первом столбце), а что именно не понятно. Подскажите если кто в курсе.
Код:<?
$NETCAT_FOLDER = join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -5 ) ).( strstr(__FILE__, "/") ? "/" : "\\" );
include_once ($NETCAT_FOLDER."vars.inc.php");
require_once ($ROOT_FOLDER."connect_io.php");
header("Content-type: text/xml");
$catalogue = $nc_core->catalogue->get_by_host_name($HTTP_HOST);
$catalogue = $catalogue["Catalogue_ID"];
if (!$catalogue) $catalogue = 1;
if (is_file($MODULE_FOLDER."netshop/".MAIN_LANG.".lang.php")) {
require_once($MODULE_FOLDER."netshop/".MAIN_LANG.".lang.php");
$modules_lang = "Russian";
}
else {
require_once($MODULE_FOLDER."netshop/en.lang.php");
$modules_lang = "English";
}
//LoadModuleEnv();
$MODULE_VARS = $nc_core->modules->load_env($modules_lang);
class Netshop_ExportYML extends Netshop {
private $_CurrencyArray;
private $_MaxNameLen;
public function __construct () {
$this->Netshop();
$this->_CurrencyArray = Array( 'RUR', 'RUB', 'USD', 'EUR', 'UAH');
$this->_MaxNameLen = 20;
}
/**
* Экспорт в формате YandexML
* @param int раздел, который надо экспортировать (по умолчанию - весь магазин)
*/
public function ExportYML ($section=0) {
global $HTTP_HOST, $SUB_FOLDER;
global $db, $nc_core;
if (!$this->shop_id) return false;
$shopName = (nc_strlen($this->ShopName) > $this->_MaxNameLen) ? nc_substr($this->ShopName, 0, $this->_MaxNameLen ) : $this->ShopName;
$default_currency = $this->Currencies[$this->DefaultCurrencyID];
header ("Content-type: text/xml");
$ret = "<?xml version=\"1.0\" encoding=\"".$nc_core->NC_CHARSET."\"?>
<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">
<yml_catalog date=\"".(strftime("%Y-%m-%d %H:%M"))."\">
<shop>
<name>".xmlspecialchars($shopName)."</name>
<company>".xmlspecialchars($this->CompanyName)."</company>
<url>http://".$HTTP_HOST.$SUB_FOLDER."/</url>
<currencies>
<currency id=\"".$default_currency."\" rate=\"1\" />";
foreach ( (array)$this->Currencies as $k => $v ) {
if ( $v != $default_currency && $this->Rates[$k] && in_array($v, $this->_CurrencyArray) ) {
$ret .= "<currency id=\"$v\" rate=\"".$this->Rates[$k]."\" />";
}
}
$ret .= "</currencies>
<categories>\n";
// output categories (shop structure) ---------------------------
if (!$section) $section = $this->shop_id;
$structure = GetStructure($section, "Checked=1");
$all_sections_ids = array(); // потом вытащим на основе этих данных товары
foreach ($structure as $row) {
$ret .= "<category id=\"$row[Subdivision_ID]\"".
($row["Parent_Sub_ID"]==$section ? "":" parentId=\"$row[Parent_Sub_ID]\"").
">".xmlspecialchars($row["Subdivision_Name"])."</category>\n";
$all_sections_id[] = $row["Subdivision_ID"];
}
$ret .= "</categories>\n<offers>";
// GOODS CATALOGUE -----------------------------------------------
$output = array(
"URL"=>"url",
"Price"=>"price",
"CurrencyID"=>"currencyId",
"Subdivision_ID"=>"categoryId",
"Image"=>"picture",
"Name"=>"name",
"Vendor"=>"vendor",
"VendorCode"=>"vendorCode",
"Description"=>"description"
);
// получить типы товаров
$goods_class_ids = $this->GuessGoodsTypeIDs();
// все разделы магазина
$subdivision_id = join(",", $all_sections_id);
foreach ($goods_class_ids as $class_id) {
$query = "SELECT m.*,
ShopCurrency_Name AS CurrencyID,
CONCAT(u.Hidden_URL, s.EnglishName, '_', m.Message_ID, '.html') as URL,
IFNULL(m.$this->PriceColumn, parent.$this->PriceColumn) as Price4User,
IF(m.$this->PriceColumn IS NULL, parent.$this->CurrencyColumn, m.$this->CurrencyColumn) as Currency4User
FROM (`Message".$class_id."` as m, `Subdivision` as u, `Sub_Class` as s)
LEFT JOIN Message".$class_id." as parent
ON (m.`Parent_Message_ID` != 0 AND m.`Parent_Message_ID` = parent.`Message_ID`)
LEFT JOIN `Classificator_ShopCurrency`
ON Classificator_ShopCurrency.`ShopCurrency_ID` = m.`Currency`
WHERE m.`Checked` = 1
AND m.`Subdivision_ID` IN (".$subdivision_id.")
AND s.`Subdivision_ID` = m.`Subdivision_ID`
AND s.`Sub_Class_ID` = m.`Sub_Class_ID`
AND u.`Subdivision_ID` = m.`Subdivision_ID`
HAVING `Price4User` > 0
";
$rows = $db->get_results($query, ARRAY_A);
foreach ( (array)$rows as $row ) {
if (strlen($row["StockUnits"])) {
$row["Available"] = ($row["StockUnits"] ? "true" : "false" );
}
else {
$row["Available"] = "true";
}
// convert to default currency
$row["Price"] = $this->ConvertCurrency($row["Price4User"], $row["Currency4User"]);
// we'll need an absolute url
$row["URL"] = "http://".$HTTP_HOST.$SUB_FOLDER."$row[URL]";
if ($row["Image"]) { // replace to image url
$row["Image"] = "http://" . $HTTP_HOST.$SUB_FOLDER . nc_file_path($class_id, $row["Message_ID"], "Image", "h_");
}
$ret .= "<offer id=\"".sprintf("%d%05d", $class_id, $row["Message_ID"])."\"";
//if ($row['Vendor'] || $row['VendorCode']) $ret .= " type=\"vendor.model\"";
$ret .= " available=\"$row[Available]\"";
$ret .= ">\n";
foreach ($output as $idx=>$tag) {
if ($row[$idx]) {
if ( $tag == 'name' && $row['GroupName'] != '' ) {
$ret .= "<$tag>".xmlspecialchars(strip_tags($row['GroupName']))." - ".xmlspecialchars(strip_tags($row[$idx]))."</$tag>\n";
}
else {
$ret .= "<$tag>".xmlspecialchars(strip_tags($row[$idx]))."</$tag>\n";
}
}
}
$ret .= "</offer>\n";
}
}
// ---------------------------------------------------------------
$ret .= "</offers>\n</shop>\n</yml_catalog>";
print $ret;
// return $ret;
}
} //End Class Netshop_ExportYML
//---------------
$shop = new NetShop_ExportYML();
$shop->ExportYML();
?>
|
|
|
30.10.2013, 12:54
|
|
Дмитрий
Зарегистрирован: 2013-09-30
Сообщений: 14
|
Кто нибудь отзовитесь!!!
|
|
|
31.10.2013, 08:01
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Можете дать ссылку, чтобы я мог посмотреть результат работы этого скрипта, который Вы привели? т.е. полную ссылку на данный php-скрипт.
|
|
|
02.11.2013, 09:36
|
|
Дмитрий
Зарегистрирован: 2013-09-30
Сообщений: 14
|
http://vozduhoved.com/netcat/modules/netshop/export/yandexml.php
|
|
|
02.11.2013, 19:48
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Я посмотрел - там у вас выводится такая ошибка:
Код:Fatal error: require_once(): Failed opening required ...........netcat/modules/calendar/en.lang.php'
Такое может быть, если у вас в настройках сайта не указан язык сайта (в соответствующем поле должно быть написано: ru ) - вот система и пытается (безуспешно) английский язык подключить к генератору.
|
|
|
17.11.2013, 21:31
|
|
Дмитрий
Зарегистрирован: 2013-09-30
Сообщений: 14
|
Большой Вам респект, совет как раз в тему, только вот теперь другая проблема нарисовалась, а именно, в страннице которая формируется, выгружается список брендов вместо товаров. Подскажите в чем может быть проблема?
|
|
|
17.11.2013, 21:51
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
У вас там не с брендами проблема. Они-то как раз должны выводиться в YML-файл, как и положено.
У вас товары на выгружаются в файл. Они должны быть помимо брендов, а не вместо них. Но вот почему они не выгружаются - гадать, не посмотрев внутрь системы, я не возьмусь, причин может быть целое море.
Например, может быть, вы используете в качестве товарного компонента не стандартный компонент, а какой-то свой собственной разработки и не привели его к стандартам netshop-модуля.
Руслан
|
|
|
27.11.2013, 16:02
|
|
Дмитрий
Зарегистрирован: 2013-09-30
Сообщений: 14
|
Руслан подскажите как можно осуществить осмотр системы и устранение необходимых ошибок? Можно ли сделать осмотр по средствам программы TeamViewer?
|
|
|
29.11.2013, 12:24
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Для народа: проблему все-таки решили, она оказалась в ошибке NetCat 4-й версии. Подсмотрели, как сделано в 5м неткате, поставили в нужное место, и все заработало.
|