app\code\EasyndFaster\HidePrice\Plugin\Pricing\Render\HidePriceBox.php
<?php
namespace EasyndFaster\HidePrice\Plugin\Pricing\Render;
use Magento\Catalog\Pricing\Price;
use Magento\Framework\Pricing\Render;
use Magento\Framework\Pricing\Render\PriceBox as BasePriceBox;
use Magento\Msrp\Pricing\Price\MsrpPrice;
use EasyndFaster\HidePrice\Helper\Data as Helper;
/**
* Class for final_price rendering
*
* @method bool getUseLinkForAsLowAs()
* @method bool getDisplayMinimalPrice()
*/
class HidePriceBox extends \Magento\Catalog\Pricing\Render\FinalPriceBox
{
protected $_helper;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\Pricing\SaleableInterface $saleableItem,
\Magento\Framework\Pricing\Price\PriceInterface $price,
\Magento\Framework\Pricing\Render\RendererPool $rendererPool,
array $data = [],
\Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolverInterface $salableResolver = null,
\Magento\Catalog\Pricing\Price\MinimalPriceCalculatorInterface $minimalPriceCalculator = null,
Helper $helper
) {
parent::__construct($context,
$saleableItem,
$price,
$rendererPool,
$data,
$salableResolver,
$minimalPriceCalculator);
$this->_helper = $helper;
}
/**
* Wrap with standard required container
*
* @param string $html
* @return string
*/
protected function wrapResult($html)
{
$status = $this->_helper->getGeneralConfig("enable");
if(!$status){
return '<div class="price-box" ' .
'data-role="priceBox" ' .
'data-product-id="' . $this->getSaleableItem()->getId() . '"' .
'>' . $html . '</div>';
}
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$httpContext = $objectManager->get('Magento\Framework\App\Http\Context');
$isLoggedIn = $httpContext->getValue(\Magento\Customer\Model\Context::CONTEXT_AUTH);
if($isLoggedIn){
return '<div class="price-box " ' .
'data-role="priceBox" ' .
'data-product-id="' . $this->getSaleableItem()->getId() . '"' .
'>' . $html . '</div>';
}else{
$wording = $this->_helper->getGeneralConfig("msg");
return '<div class="" ' .
'data-role="priceBox" ' .
'data-product-id="' . $this->getSaleableItem()->getId() . '"' .
'>'.$wording.'</div>';
}
}
}
app\code\EasyndFaster\HidePrice\etc\di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Pricing\Render\FinalPriceBox"
type="EasyndFaster\HidePrice\Plugin\Pricing\Render\HidePriceBox" />
<preference for="Magento\ConfigurableProduct\Pricing\Render\FinalPriceBox"
type="EasyndFaster\HidePrice\Plugin\Pricing\Render\HidePriceBox" />
</config>
app\code\EasyndFaster\HidePrice\etc\adminhtml\system.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Pricing\Render\FinalPriceBox"
type="EasyndFaster\HidePrice\Plugin\Pricing\Render\HidePriceBox" />
<preference for="Magento\ConfigurableProduct\Pricing\Render\FinalPriceBox"
type="EasyndFaster\HidePrice\Plugin\Pricing\Render\HidePriceBox" />
</config>
app\code\EasyndFaster\HidePrice\etc\adminhtml\system.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="easyndfaster" translate="label" sortOrder="10">
<label>EasyndFaster</label>
</tab>
<section id="hideprice" translate="label" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="1">
<class>separator-top</class>
<label>General</label>
<tab>easyndfaster</tab>
<resource>EasyndFaster_HidePrice::hideprice_config</resource>
<group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>General Configuration</label>
<field id="enable" translate="label" type="select" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Module Enable</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="msg" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Messages of Guest User</label>
</field>
</group>
</section>
</system>
</config>
app\code\EasyndFaster\HidePrice\Helper\Data.php
app\code\EasyndFaster\HidePrice\Helper\Data.php
<?php
namespace EasyndFaster\HidePrice\Helper;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Store\Model\ScopeInterface;
class Data extends AbstractHelper
{
const XML_PATH_HELLOWORLD = 'hideprice/';
public function getConfigValue($field, $storeId = null)
{
return $this->scopeConfig->getValue(
$field, ScopeInterface::SCOPE_STORE, $storeId
);
}
public function getGeneralConfig($code, $storeId = null)
{
return $this->getConfigValue(self::XML_PATH_HELLOWORLD .'general/'. $code, $storeId);
}
}

Post a Comment
Post a Comment