> For the complete documentation index, see [llms.txt](https://docs.nosto.com/magento-2/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nosto.com/magento-2/guides/overriding-or-extending-functionalities/overriding-product-data/customising-categories.md).

# Customising Categories

If your store uses a customized logic for handling product's categories you might need to amend categories in Nosto module as well . Start by reading [how to extend Nosto module](/magento-2/guides/overriding-or-extending-functionalities.md) and [how to alter Nosto product data](/magento-2/guides/overriding-or-extending-functionalities/overriding-product-data.md).

If overriding the product data directly does not seem the best option for you, you can create a service class and make use of Dependency Injection pattern.

Create a new class which will implement `CategoryServiceInterface`. Override the required functions and afterwards replace `CategoryServiceInterface` with `MyCategoryServive` in the DI `etc/di.xml`

File `app/code/My/Nosto/Model/Service/MyCategoryServive.php`

```php
<?php

namespace My\Nosto\Model\Service;

use Nosto\Tagging\Model\Service\Product\Category\CategoryServiceInterface;
use Magento\Catalog\Model\Category;
use Magento\Catalog\Model\Product;
use Magento\Store\Api\Data\StoreInterface;

class MyCategoryServive implements CategoryServiceInterface
{   

    /**
     * Method used to return a single category string for given category object
     * @param Category $category
     * @param StoreInterface $store
     * @return null|string
     */
    public function getCategory(Category $category, StoreInterface $store) {
        //ToDo Implement logic    
    }   

    /**
     * Method used to return list of strings representing categories for a given product 
     * @param Product $product
     * @param StoreInterface $store
     * @return array
     */
    public function getCategories(Product $product, StoreInterface $store) {

    }   
}
```

File `app/code/My/Nosto/etc/di.xml`

```markup
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Nosto\Tagging\Model\Service\Product\Category\CategoryServiceInterface" type="My\Nosto\Model\Service\MyCategoryServive"/>
</config>
```
