如何判断产品是否已发布?

时间:2012-12-19 17:00:43

标签: shopify

我想对Shopify API中记录的产品使用published字段:

  

通过将已发布的属性更改为false来隐藏已发布的产品

我可以更改任何产品上的标记,但我还没有弄清楚如何从API返回published字段。它没有列出list of fields of the Product object

2 个答案:

答案 0 :(得分:3)

您可以按照here所述的方式直接设置各个产品的published_at字段:

product.published_at = nil; product.save              # hides product
product.published_at = Time.now.utc; product.save     # makes product visible

您还可以按照here所述将published设置为false来隐藏产品系列:

collection = ShopifyAPI::CustomCollection.find(params[:collection_id])
collection.published = false
collection.save

<强>已更新

现在我更好地理解了这个问题,这就是你想要的答案。您无法真正获得“已发布”值,因为产品上没有真正的published属性。但是,您可以检查published_at字段并检查它是否为nil(未发布)。设置published = false显然会为你设置为零。

答案 1 :(得分:0)

您可以非常轻松地获得已发布的状态。它在API中作为端点:published_status 这将返回已发布,未发布和任何。 https://help.shopify.com/api/reference/product 用法:

To get an array of all published products:
GET /admin/products.json?publish_status=published

To get an array of all unpublished products:
GET /admin/products.json?publish_status=unpublished

然后迭代数组并找到所需的产品。一些示例php执行此操作:

function isPublished($shopify, $myprodid) {
  $products = $shopify('GET /admin/products.json?publish_status=unpublished');
  foreach($products as $prod) {
    if($prod['id'] == $myprodid)
      return false;
  }
  return true
}

除非您有大量未发布的产品,否则迭代未发布的应该很快。然后交换测试。