у меня есть модуль presta в php4. Он работает путем подключения к базе данных prestashop и распечатывает XML. Пытаясь загрузить их в свой магазин приложений, они попросили сделать его php5 и выполнить определенные действия.
- В двух словах, это просто полный структурный код с 1 методом, который получает соединение с базой данных prestashop и печатает xml.
Так что проблема в том, как заставить его соответствовать стандарту php5, требуемому prestashop. Когда я пытался, я получаю эту ошибку. "Модуль класса не может быть найден"
<?php
include('config/settings.inc.php');
$con = mysql_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_);
mysql_select_db(_DB_NAME_);
$str = '_DB_PREFIX_';
$str1 = constant($str);
$sql = 'SELECT '.
$str1.'product_lang.name,'.
$str1.'product.id_product as id,'.
$str1.'product.quantity,'.
$str1.'product.price,'.
$str1.'product.weight,'.
$str1.'product_lang.description,'.
$str1.'product_lang.link_rewrite as url,'.
$str1.'category_lang.name as category,'.
$str1.'manufacturer.name as manufacturer,'.
$str1.'image.id_image '.
'FROM '.
$str1.'product_lang '.
'INNER JOIN ' .$str1.'product '.
'ON ('.$str1.'product_lang.id_product = '.$str1.'product.id_product) '.
'INNER JOIN ' .$str1.'image '.
'ON ('.$str1.'image.id_product = '.$str1.'product.id_product) '.
'INNER JOIN ' .$str1.'manufacturer '.
'ON ('.$str1.'manufacturer.id_manufacturer = '.$str1.'product.id_manufacturer) '.
'INNER JOIN ' .$str1.'category_lang '.
'ON ('.$str1.'category_lang.id_category = '.$str1.'product.id_category_default) '.
//'WHERE '.$str1.'product_lang.id_lang = 1 AND '.$str1.'category_lang.id_lang = 1';
'WHERE '.$str1.'product_lang.id_lang = 1';
$result = mysql_query($sql);
header("Content-Type: text/xml; charset=ISO-8859-1");
$output = '<?xml version="1.0" encoding="utf-8"?>
<products>';
while($row = mysql_fetch_assoc($result)):
//echo "<br><br><b>text:</b>".$text = addslashes($text);
$text = str_replace(chr(145), "\'", $text);
$output .= '
<product>
<id>'. $row['id'].'</id>
<name><![CDATA['.$name.']]></name>
<description><![CDATA['.$text.']]></description>
<image><![CDATA['. 'http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__.'img/p/'.$row['id'].'-'.$row['id_image'].'.jpg' .']]></image>
<quantity><![CDATA['. $row['quantity'] .']]></quantity>
<price><![CDATA['. $row['price'] .']]></price>
<weight>'. $row['weight'] .'</weight>
<category><![CDATA['.$category.']]></category>
<manufacturer><![CDATA['. $manufacturer.']]></manufacturer>
<url><![CDATA['.'http://'.$_SERVER['HTTP_HOST'].'/product.php?id_product='.$row['id'].']]></url>
</product>';
endwhile;
print $output .= '
</products>';
Это процедура кодирования, которой я должен следовать из prestashop
<?php
//Your class must have the same name than this file.
class module_name extends Module
{
public function __construct()
{
//Name of your module. It must have the same name than the class
$this->name = 'module_name';
//You must choose an existing tab amongst the ones that are available
$this->tab = 'You choose';
//The version of your module. Do not forget to increment the version for each modification
$this->version = '1.0';
//The constructor must be called after the name has been set, but before you try to use any functions like $this->l()
parent::__construct();
//Name displayed in the module list
$this->displayName = $this->l('Display Name on Back Office');
//Short description displayed in the module list
$this->description = $this->l('Description On Back Office');
}
//You must implement the following methods if your module need to create a table, add configuration variables, or hook itself somewhere.
//-------------------------------
public function install()
{
return parent::install();
}
public function uninstall()
{
return parent::install();
}
//-------------------------------
//Display Configuration page of your module.
public function getContent()
{
return 'Hello World!';
}
}
?>