registration.php file,
filepath app/code/Package/Modulename/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Package_Modulename',
__DIR__
);
composer.json file,
app/code/Package/Modulename/composer.json
{
"name": "package/magento2-modulename",
"description": "module desctiption",
"require": {
"php": "~5.5.0|~5.6.0"
},
"type": "magento2-module",
"version": "1.4.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"extra": {
"map": [
[
"*",
"Package/Modulename"
]
]
}
}
module.xml file,
filepath app/code/Package/Modulename/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Package_Modulename" setup_version="1.0.0">
<sequence>
<module name="Magento_Checkout"/>
</sequence>
</module>
</config>
di.xml file
,
filepath app/code/Package/Modulename/etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Checkout\CustomerData\Cart"
type="Package\Modulename\CustomerData\Cart" />
</config>
Cart.php file,
file path, app/code/Package/Modulename/CustomerData/Cart.php
<?php
namespace Package\Modulename\CustomerData;
use Magento\Customer\CustomerData\SectionSourceInterface;
/**
* Cart source
*/
class Cart extends \Magento\Checkout\CustomerData\Cart
{
/**
* {@inheritdoc}
*/
public function getSectionData()
{
$totals = $this->getQuote()->getTotals();
return [
'summary_count' => $this->getSummaryCount(),
'subtotal' => isset($totals['subtotal'])
? $this->checkoutHelper->formatPrice($totals['subtotal']->getValue())
: 0,
'possible_onepage_checkout' => $this->isPossibleOnepageCheckout(),
'items' => $this->getRecentItems(),
'extra_actions' => $this->layout->createBlock('Magento\Catalog\Block\ShortcutButtons')->toHtml(),
'isGuestCheckoutAllowed' => $this->isGuestCheckoutAllowed(),
];
}
/**
* Get active quote
*
* @return \Magento\Quote\Model\Quote
*/
protected function getQuote()
{
if (null === $this->quote) {
$this->quote = $this->checkoutSession->getQuote();
}
return $this->quote;
}
/**
* Get shopping cart items qty based on configuration (summary qty or items qty)
*
* @return int|float
*/
protected function getSummaryCount()
{
if (!$this->summeryCount) {
$this->summeryCount = $this->checkoutCart->getSummaryQty() ?: 0;
}
return $this->summeryCount;
}
/**
* Check if one page checkout is available
*
* @return bool
*/
protected function isPossibleOnepageCheckout()
{
return $this->checkoutHelper->canOnepageCheckout() && !$this->getQuote()->getHasError();
}
/**
* Get array of last added items
*
* @return \Magento\Quote\Model\Quote\Item[]
*/
protected function getRecentItems()
{
$items = [];
if (!$this->getSummaryCount()) {
return $items;
}
foreach (array_reverse($this->getAllQuoteItems()) as $item) {
if (!$item->getProduct()->isVisibleInSiteVisibility()) {
$productId = $item->getProduct()->getId();
$products = $this->catalogUrl->getRewriteByProductStore([$productId => $item->getStoreId()]);
if (!isset($products[$productId])) {
continue;
}
$urlDataObject = new \Magento\Framework\DataObject($products[$productId]);
$item->getProduct()->setUrlDataObject($urlDataObject);
}
$items[] = $this->itemPoolInterface->getItemData($item);
}
return $items;
}
/**
* Return customer quote items
*
* @return \Magento\Quote\Model\Quote\Item[]
*/
protected function getAllQuoteItems()
{
if ($this->getCustomQuote()) {
return $this->getCustomQuote()->getAllItems();
}
return $this->getQuote()->getAllVisibleItems();
}
/**
* Check if guest checkout is allowed
*
* @return bool
*/
public function isGuestCheckoutAllowed()
{
return $this->checkoutHelper->isAllowedGuestCheckout($this->checkoutSession->getQuote());
}
}
you can changes funciton code inside file function.