ondrakoupil/heureka-recenze

用于轻松导入Heuréka.cz的e商店和产品评论的库

v1.0.2 2017-02-13 08:01 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:30 UTC


README

Build Status

安装

使用Composer安装库

composer install ondrakoupil\heureka-recenze

如果没有使用Composer,请包含包含整个库的dist/heureka.php文件,或者以任何方式确保从src目录加载类。

使用

库会为您自动下载并解析Heuréka的XML评论导出文件,并能够根据产品分组评论,并可能为它们创建综合评分。但它不处理已加载评论的存储和与您的网站/商店/应用程序的集成 - 您需要自行编写这部分代码。

正如您所知,Heuréka从您的客户那里收集两种类型的评论 - 一方面是对您的e商店的看法,客户可以就可靠性、沟通、交货时间、网站清晰度等进行评论,另一方面是对他们购买的具体产品进行评论。不幸的是,Heuréka只会提供来自您的e商店的订单的评论,即使该产品在许多其他e商店也被大量购买。

用于e商店评论的类是EshopReviewsClientEshopReview,用于产品评论的是ProductReviewsClientProductReviewProductReviewSummary

除了库之外,您还需要一个用于与Heuréka通信的e商店的秘密密钥。您可以在Heuréka的管理界面中获取此密钥,在您的账户中的Ověřeno zákazníky部分,有关导出评论的更详细描述,请参阅此处

以下示例不包含完整的类名 - 或者您可以在它们之前添加命名空间OndraKoupil\Heureka,或者在一开始将它们添加到程序中

use \OndraKoupil\Heureka\EshopReviewsClient, \OndraKoupil\Heureka\EshopReview,
    \OndraKoupil\Heureka\ProductReviewsClient, \OndraKoupil\Heureka\ProductReview, \OndraKoupil\Heureka\ProductReviewSummary;

创建客户端

在实例化客户端类时,您可以直接指定秘密密钥或完整的地址(适用于SK Heuréka)。对于产品评论,您还可以限制要获取的评论的年龄(最大6个月)。对于e商店评论,Heuréka不支持此参数。

$client  = new   EshopReviewsClient("my-secret-key");
$client2 = new   EshopReviewsClient("http://www.heureka.sk/direct/dotaznik/export-review.php?key=my-secret-key");
$client3 = new ProductReviewsClient("my-secret-key");
$client4 = new ProductReviewsClient("http://www.heureka.sk/direct/dotaznik/export-product-review.php?key=my-secret-key");
$client5 = new ProductReviewsClient("my-secret-key", new DateTime("now - 1 month") );

$client6 = new EshopReviewsClient();
$client6->setSourceAddress("http://www.heureka.cz/direct/dotaznik/export-review.php?key=my-secret-key");

设置

两个客户端都内部使用XmlReader,按顺序处理下载的XML,因此能够处理相对较小的内存要求的大XML文件。但它们需要先从Heuréka下载XML文件到临时位置,然后逐步读取。第二个参数允许设置,在成功处理后是否自动删除临时文件(默认为true)。

$client->setTempFile("tempfile.xml");

接下来需要实现一个函数来处理读取的评论。该函数将接收一个EshopReviewProductReview类对象作为参数,并可以对其进行任何操作。很可能是将其存储在数据库中。这两个类都是普通的简单类,有公共变量(更多请参阅它们的文档)和一个getAsArray方法,该方法将它们转换为普通数组。

为从Heuréka下载的每个评论调用一次指定的函数。

$client->setCallback( 
	function(EshopReview $review) {
		// ... zde si udělejte, co hrdlo ráčí
		print_r($review->getAsArray());
	}
);

下载和处理文件

然后只需调用run方法。客户端将下载文件并将其内容逐个评论传递给之前定义的函数。

$client->run();

如果您出于某种原因不希望立即处理文件,则可以仅下载它

$client->download("heureka-recenze.xml");

或者相反,如果您已经下载了文件,则可以告诉客户端不要下载它,而使用指定的文件

$client->useFile("path/to/downloaded/file.xml");
$client->run();

产品评论

在产品评论中,将它们根据涉及的产品进行分组可能很有用,或者您可能只对总体评价感兴趣,而不是单个评论。遗憾的是,Heuréka会导出一个未分类的评论堆,您需要自己处理分类。图书馆可以帮助您将XML文件中的数据转换为类ProductReviewSummary的清晰结果。

第一个问题是,在Heuréka的导出中,您找不到任何明确的产品标识符(至少现在还没有),尽管您的feed中提到了<ITEM_ID>。这使整个事情变得有些复杂。因此,首先需要实现一个将可用数据转换为您的电子商务中唯一ID的功能。ID可以是数字或字符串,简而言之,可以是任何标量值。在这个例子中,我假设每个产品只有一个URL,它总是唯一的。对于相同的产品,定义的函数只运行一次。

如果您没有设置此函数,则不会有任何事情发生,您将无法在ProductReview对象中使用变量$productId或使用下面列出的任何函数。

$client->setIdResolver(
	function(ProductReview $review) {
		return $review->productUrl; 
	}
);

您还可以设置是否要处理产品的综合信息。如果您不这样做,则与ProductReviewSummary一起工作的函数将返回null或空数组。

$client->setSaveSummary(true);
$client2->setSaveSummary(true, true);

第二个参数表示是否要保存所有评论以供以后使用(对于较大的feed,这可能会占用大量内存)。如果您将其设置为false(或完全省略),则变量$reviews中提供的ProductReviewSummary对象将始终包含空数组。您可以在定义的函数中逐步存储评论,该函数通过setCallback()定义。

然后可以像往常一样调用run(),并利用返回综合数据的各种方法。

$client->run();

// Všechna nalezená ID produktů jako array
$client->getAllProductIds(); 

// Všechny souhrnné informace jako array [ID_produktu] => ProductReviewSummary
$client->getAllSummaries();

// Souhrn recenzí o produktu s konkrétním ID jako objekt ProductReviewSummary
$summary = $client->getSummaryOfProduct(12345);
echo "Celkem $summary->reviewCount recenzí, hodnocení $summary->averageRating z 5";

// Všechny recenze týkající se konkrétního produktu
$reviews = $client->getReviewsOfProduct(12345);

当然,您可以忽略整个ProductReviewSummary的复杂性,只需使用在setCallback()中定义的函数进一步处理加载的评论。

问题?

如果您遇到bug、某些功能不起作用或有改进建议,请添加问题或直接联系我ondrej.koupil@optimato.cz :-)