Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.47 KB | None | 0 0
  1. 'api/allproducts' => [
  2. 'elementType' => 'Commerce_Product',
  3. 'criteria' => [
  4. 'search' => buildSearchQuery(craft()->request->getParam('types'))
  5. ],
  6. 'transformer' => function(Commerce_ProductModel $product) {
  7.  
  8. $mergedProductData = [];
  9.  
  10. $title = $product->title;
  11. $url = UrlHelper::getUrl($product->url);
  12. $brand = (string)$product->productBrand[0];
  13. $designer = (string)$product->productDesigner[0];
  14. $num_decimals = (intval($product->defaultVariant->price) == $product->defaultVariant->price) ? 0 :2;
  15. $price = number_format($product->defaultVariant->price,$num_decimals);
  16.  
  17. $frontImage = $product->productImages[0];
  18. $frontImages = [];
  19. if ($frontImage)
  20. {
  21. craft()->config->set('generateTransformsBeforePageLoad', true);
  22. if (craft()->plugins->getPlugin('Imager'))
  23. {
  24. $transformedImages = craft()->imager->transformImage(
  25. $frontImage,
  26. array(
  27. array(
  28. 'width' => 1170,
  29. ),
  30. array(
  31. 'width' => 780,
  32. 'jpegQuality' => 65,
  33. ),
  34. array(
  35. 'width' => 390,
  36. 'jpegQuality' => 65,
  37. ),
  38. ),
  39. array(
  40. 'ratio' => 16/9,
  41. 'position' => 'bottom-right',
  42. 'jpegQuality' => 80,
  43. ),
  44. array(
  45. 'fillTransforms' => true,
  46. )
  47. );
  48. $frontImages[] = craft()->imager->srcset($transformedImages);
  49.  
  50. } else {
  51. $frontImages[] = $frontImage->getUrl(['width' => 390, 'height' => 294]);
  52. }
  53. }
  54.  
  55.  
  56. $mergedProductData[] = [
  57. 'id' => $product->id,
  58. 'title' => $title,
  59. 'productImage' => $frontImages,
  60. 'body' => (string) $product->body,
  61. 'brand' => $brand,
  62. 'designer' => $designer,
  63. 'url' => $url
  64. ];
  65.  
  66. return [
  67. 'title' => $title,
  68. 'id' => $product->id,
  69. 'frontImage' => $frontImages,
  70. 'type' => $product->type->name,
  71. 'designer' => $designer,
  72. 'brand' => $brand,
  73. 'price' => $price,
  74. 'url' => $url,
  75. 'isInWishlist' => craft()->like->isLike($product->id),
  76. 'quickViewJson' => $mergedProductData
  77. ];
  78. },
  79. ],
  80.  
  81. function buildSearchQuery($input) {
  82.  
  83. $query = "";
  84. $i = 0;
  85.  
  86. foreach ($input as $value) {
  87.  
  88. if($i > 0) {
  89.  
  90. $query .= " OR ";
  91.  
  92. }
  93.  
  94. $query .= "title:*$value* OR body:*$value*";
  95. $i++;
  96.  
  97. }
  98.  
  99. return $query;
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement