AddUpdateHandlesObserver.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace WeltPixel\Quickview\Observer;
  3. use Magento\Framework\Event\ObserverInterface;
  4. use Magento\Catalog\Api\ProductRepositoryInterface;
  5. use Magento\Framework\Exception\NoSuchEntityException;
  6. class AddUpdateHandlesObserver implements ObserverInterface
  7. {
  8. /**
  9. * @var \Magento\Framework\App\Config\ScopeConfigInterface
  10. */
  11. protected $scopeConfig;
  12. /**
  13. * @var \Magento\Framework\App\Request\Http
  14. */
  15. protected $request;
  16. /**
  17. * @var \Magento\Store\Model\StoreManagerInterface
  18. */
  19. protected $_storeManager;
  20. /**
  21. * @var ProductRepositoryInterface
  22. */
  23. protected $productRepository;
  24. const XML_PATH_QUICKVIEW_REMOVE_PRODUCT_IMAGE = 'weltpixel_quickview/general/remove_product_image';
  25. const XML_PATH_QUICKVIEW_REMOVE_PRODUCT_IMAGE_THUMB = 'weltpixel_quickview/general/remove_product_image_thumb';
  26. const XML_PATH_QUICKVIEW_REMOVE_AVAILABILITY = 'weltpixel_quickview/general/remove_availability';
  27. /**
  28. * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
  29. * @param \Magento\Framework\App\Request\Http $request
  30. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  31. * @param ProductRepositoryInterface $productRepository
  32. */
  33. public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
  34. \Magento\Framework\App\Request\Http $request,
  35. \Magento\Store\Model\StoreManagerInterface $storeManager,
  36. ProductRepositoryInterface $productRepository)
  37. {
  38. $this->scopeConfig = $scopeConfig;
  39. $this->request = $request;
  40. $this->_storeManager = $storeManager;
  41. $this->productRepository = $productRepository;
  42. }
  43. /**
  44. * Add New Layout handle
  45. *
  46. * @param \Magento\Framework\Event\Observer $observer
  47. * @return self
  48. */
  49. public function execute(\Magento\Framework\Event\Observer $observer)
  50. {
  51. $layout = $observer->getData('layout');
  52. $fullActionName = $observer->getData('full_action_name');
  53. if ($fullActionName != 'weltpixel_quickview_catalog_product_view') {
  54. return $this;
  55. }
  56. $productId= $this->request->getParam('id');
  57. if (isset($productId)) {
  58. try {
  59. $product = $this->productRepository->getById($productId, false, $this->_storeManager->getStore()->getId());
  60. } catch (NoSuchEntityException $e) {
  61. return false;
  62. }
  63. $productType = $product->getTypeId();
  64. $layout->getUpdate()->addHandle('weltpixel_quickview_catalog_product_view_type_' . $productType);
  65. }
  66. $removeProductImage = $this->scopeConfig->getValue(self::XML_PATH_QUICKVIEW_REMOVE_PRODUCT_IMAGE, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
  67. if ($removeProductImage) {
  68. $layout->getUpdate()->addHandle('weltpixel_quickview_removeproduct_image');
  69. }
  70. $removeProductImageThumb = $this->scopeConfig->getValue(self::XML_PATH_QUICKVIEW_REMOVE_PRODUCT_IMAGE_THUMB, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
  71. if ($removeProductImageThumb) {
  72. $layout->getUpdate()->addHandle('weltpixel_quickview_removeproduct_image_thumb');
  73. }
  74. $removeAvailability = $this->scopeConfig->getValue(self::XML_PATH_QUICKVIEW_REMOVE_AVAILABILITY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
  75. if ($removeAvailability) {
  76. $layout->getUpdate()->addHandle('weltpixel_quickview_removeavailability');
  77. }
  78. return $this;
  79. }
  80. }