需要为我的自定义应用获取当前shopify主题的id并使用PHP注入片段

时间:2016-12-08 10:25:59

标签: php curl shopify

我正在使用PHP构建shopify应用程序。我需要获取当前主题的ID,其次我需要注入片段。我不确定如何使用Shopify Assests / Api。有人可以帮助我解决这些问题

2 个答案:

答案 0 :(得分:0)

Shopify会为您提供标有“主题”的端点。用它来查询商店中的所有主题。您可以将它们作为主要或当前主题进行检查。找到主要的已发布主题后,您可以使用该主题的ID来获取GET和POST资产,例如您的代码段。

至于不确定如何对Shopify API进行安全的Rest调用,有一百万个教程向您展示如何做到这一点。 Shopify与此方面的任何其他主要网站资产相同。没有什么比在那里学习更疯狂但是oAuth。

答案 1 :(得分:0)

以下是我正在使用的代码请让我纠正。

<?php $url = 'https://' . $API_KEY . ':' . md5($SECRET . $TOKEN) . '@' . $shop . '/admin/themes/155035395/assets.json';
       $session = curl_init($url); 
        $asset = array('asset'=> array(
          'key' => 'snippets/newasset.liquid', 
          'value' => '{% comment %} here is your new snippet {% endcomment %}'
          ));
        curl_setopt($session, CURLOPT_HEADER, true);
        curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($session, CURLOPT_MAXREDIRS, 3);
        curl_setopt($session, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($session, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($session, CURLOPT_TIMEOUT, 30);
        curl_setopt($session, CURLOPT_CUSTOMREQUEST, "PUT");
        //curl_setopt($session, CURLOPT_HTTPHEADER, ['Content-Type:     application/json']);
        curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json', 'X-Shopify-Access-Token: ' . $TOKEN));
        curl_setopt($session, CURLOPT_POSTFIELDS, json_encode($asset));
    $result = curl_exec($session); 
         if(ereg("^(https)",$url))      curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false);
        $r = curl_getinfo($session);
        echo "<pre>";
        print_r($r);

        $result = curl_exec($session); 
        if ( curl_errno($session) ) {
            $result = 'cURL ERROR -> ' . curl_errno($session) . ': ' .     curl_error($session);
        } else {
            $returnCode = (int)curl_getinfo($session, CURLINFO_HTTP_CODE);
            switch($returnCode){
                case 200:
                    break;
                default:
                    $result = 'HTTP ERROR -> ' . $returnCode;
                    break;
            }
        }
        curl_close($session);
        echo $result;?>