-
Notifications
You must be signed in to change notification settings - Fork 6
/
shopify.products.php
69 lines (60 loc) · 2.94 KB
/
shopify.products.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
use Kirby\Data\Data;
use Kirby\Data\Yaml;
class ShopifyProductsPage extends Page
{
public function subpages()
{
return Pages::factory($this->inventory()['children'], $this);
}
public function children(): Pages
{
$products = \KirbyShopify\App::getProducts();
$productsPage = \KirbyShopify\App::$productsPage;
$pages = [];
foreach ($products as $key => $product) {
$slug = Str::slug($product['handle']);
$kirbyProductRoot = $productsPage->root() . '/' . $product['id'] . '_' . $slug . '/shopify.product.txt';
$kirbyProduct = F::exists($kirbyProductRoot) ? new \Kirby\Toolkit\Collection(\Kirby\Data\Data::read($kirbyProductRoot)) : false;
if($kirbyProduct) $kirbyProduct = $kirbyProduct->toArray();
// $kirbyProduct = $this->subpages()->find($slug);
// $kirbyProduct = $kirbyProduct ? $kirbyProduct->toArray() : null;
$shopifyProduct = [
'title' => $product['title'],
'shopifyTitle' => $product['title'],
'shopifyID' => $product['id'],
'shopifyCreatedAt' => $product['created_at'],
'shopifyUpdatedAt' => $product['updated_at'],
'shopifyPublishedAt' => $product['published_at'],
'shopifyHandle' => $product['handle'],
'shopifyVendor' => $product['vendor'],
'shopifyFeaturedImage' => count($product['images']) > 0 ? \Kirby\Data\Yaml::encode([$product['images'][0]]) : '',
'shopifyImages' => \Kirby\Data\Yaml::encode($product['images']),
'shopifyDescriptionHTML' => $product['body_html'],
'shopifyPrice' => count($product['variants']) > 0 ? $product['variants'][0]['price'] : '',
'shopifyCompareAtPrice' => count($product['variants']) > 0 ? $product['variants'][0]['compare_at_price'] : '',
'shopifyType' => $product['product_type'],
'shopifyTags' => $product['tags'],
'shopifyVariants' => \Kirby\Data\Yaml::encode($product['variants']),
];
if ($kirbyProduct) {
foreach ($shopifyProduct as $k => $value) {
unset($kirbyProduct[strtolower($k)]);
}
}
$pages[] = [
'slug' => $slug,
'num' => $product['id'],
'template' => 'shopify.product',
'model' => 'shopify.product',
'content' =>
$kirbyProduct
?
($shopifyProduct + $kirbyProduct)
:
$shopifyProduct,
];
}
return Pages::factory($pages, $this);
}
}