Shop Integrations

Everything about integrations in OXID, Shopify, Shopware, and more.

OXID Connect-Modul

Setup and configuration of the OXID Connect module

OXID Connect-Modul

Setup

Once the Makaira application is ready, the OXID Connect module, which connects the Makaira to your store, can be installed.

Please perform the following three steps:

  1. Installation of the Connect module
  2. Configuration of the Connect module
  3. Prepare first import (Touch all)

1. Installation of Connect-Moduls

The Connect module can be easily installed via composer. If you need the Connect module as a package, please contact our support.

Note: For OXID versions prior to 6.2, an additional compatibility module is required.

Versions before OXID 6.0

Add the OXID Connect and OXID Connect Compat module to your composer.json and adjust <SHOP-ROOT>> according to your setup (for OXID 6.x replace <SHOP-ROOT> with source).

{
  "require": {
    "makaira/oxid-connect": "^2.0",
    "makaira/oxid-connect-compat": "^2.0"
  },
  "scripts": {
    "pre-install-cmd": ["mkdir -p <SHOP-ROOT>/modules/makaira/", "touch <SHOP-ROOT>/modules/makaira/vendormetadata.php"],
    "pre-update-cmd": ["mkdir -p <SHOP-ROOT>/modules/makaira/", "touch <SHOP-ROOT>/modules/makaira/vendormetadata.php"],
    "post-install-cmd": ["test -d <SHOP-ROOT>/modules/makaira/connect || cp -r vendor/makaira/oxid-connect <SHOP-ROOT>/modules/makaira/connect"],
    "post-update-cmd": ["test -d <SHOP-ROOT>/modules/makaira/connect || cp -r vendor/makaira/oxid-connect <SHOP-ROOT>/modules/makaira/connect"]
  }
}

After the adjustment composer update must be executed. After the completion the module can now be activated in the store.

For OXID versions prior to 6.0, it may still be necessary to include vendor/autoload.php.
Note: The vendor directory is located on the same directory level as composer.json.

Then follow the Next Steps at the bottom of this page.

OXID 6.0 and 6.1 versions

The installation is very similar to the one before OXID 6.0. However, the scripts part is no longer needed because the vendormetadata.php is ignored from OXID 6.0. The compatibility module is still required.
This results in the following configuration for composer.json:

{
  "require": {
    "makaira/oxid-connect": "^2.0",
    "makaira/oxid-connect-compat": "^2.0"
  },
  "extra": {
    "installer-paths": {
      "<SHOP-ROOT>/modules/makaira/connect": ["makaira/oxid-connect"]
    }
  }
}

After the adjustment composer update must be executed. After the completion the module can now be activated in the store.

Then follow the Next Steps at the bottom of this page.

From OXID 6.2

With OXID 6.2 the compatibility module is omitted and the Connect module can be used directly.

{
  "require": {
    "makaira/oxid-connect": "^2.0"
  },
  "extra": {
    "installer-paths": {
      "<SHOP-ROOT>/modules/makaira/connect": ["makaira/oxid-connect"]
    }
  }
}

After the adjustment composer update must be executed. After the completion the module can now be activated in the store.

Then follow the Next Steps at the bottom of this page.

2. Configuration of the Connect Module

For the configuration of the Connect module, all relevant information (Makaira Secret, Makaira Instance and Makaira URL) can be found under the route <SUBDOMAIN>.makaira.io/#/install or via the "Profile Screen" -> "Installation".

Enter this data - possibly separately for each subshop - in the module configuration of the Connect module in OXID.

3. First preparing the data import

Afterwards it is necessary to mark the data for the initial import into Makaira. We call this process "Touch of all documents" - For this purpose the Connect module provides a corresponding console command:

OXID version from (>=) 6.2
php vendor/bin/oe-console makaira:touch-all

Finally, in consultation with Makaira support, the first import for the data in Makaira can be started.

OXID version before (<) 6.2
php vendor/bin/makaira-connect makaira:touch-all

Finally, in consultation with Makaira support, the first import for the data in Makaira can be started.

OXID Connect-Modul

Configuration

In the Connect module, the general configurations are made about how the Makaira will be used in the store:

There is a default list of excluded import fields. These fields are not used by most customers. If you notice that a field is not present, you should check this list first.

OXID Connect-Modul

OXID modules version differences

OXID CE/PE 4.10 (alias OXID EE 5.3)

Mapping the OXID versions

OXID CE/PE OXID EE
4.6 4.6
4.7 5.0
4.8 5.1
4.9 5.2
4.10 5.3
6.0 6.0
OXID Connect-Modul

Overrides in the OXID eShop

The Connect module uses overrides in the store to detect certain events e.g. the change of an item. Saving an item creates an entry in the makaira_connect_changes table, which signals new data to the import process.

Disable touch hooks

Task

An import process, e.g. from merchandise management, often calls the oxArticle::save() method, triggering redundant write operations (touch) to the makaira_connect_changes table.

Solution

The touch hooks can be deactivated during the import.

<?php>

/* ... */

// instance of oxArticle
$oxArticle = oxNew('oxarticle');

// disable touch on save, delete, ...
$oxArticle->disableMakairaTouch();

/* ... */

// oxArticle is saved
$oxArticle->save();

/* ... */

// oxArticle is saved again
$oxArticle->save();

// call explicit touch for this product
$oxArticle->touch();
Information

The method disableMakairaTouch is provided by the Connect for the models oxArticle, oxCategory, oxManufacturer and oxobject2category and disables the touch when saving or deleting the objects for the duration of the PHP process.

OXID Connect-Modul

Modifier (OXID)

Sometimes it is necessary to enrich the data in the Makaira. This is realized by modifiers.

They reside in separate OXID modules and are PHP classes that extend \Makaira\Connect\Modifier.

The Makaira Connect module provides very easy to use events to modify and enrich the data during import.

This allows, for example, to create values for filters, to add content extensions to the fields or to concatenate several fields - all data is taken into account here. Makaira provides a naming of the new fields, which ensures the correct typing of the field. The correct typing is necessary so that the field can be used with the desired effect. Thus Makaira offers all basic data types int, float, time as well as several str types which are more suitable depending upon kind of the text. More details can be found under: Typing in Makaira Index

The removal of whitespaces in the article title will serve as an example here.
The apply() method is passed the object to be modified as an argument

<?php

namespace AwesomeShop\Makaira\Modifier\Product;

use Makaira\Connect\Modifier;
use Makaira\Connect\Type;
use Makaira\Connect\Type\Common\BaseProduct;

class TrimTitleModifier extends Modifier
{
    /**
     * Modify product and return modified product
     *
     * @param BaseProduct $product
     *
     * @return BaseProduct
     */
    public function apply(Type $product)
    {
        $product->title = trim($product->title);

        return $product;
    }
}

Once the class has been created and can be loaded by the autoloader, it still needs to be registered as a modifier. This is done in the services.yaml in the root directory of your OXID module. This file is the definition for Symfony's dependency injection container. For more information, see the Symfony-Dokumentation and the OXID-Blog.

services:
  AwesomeShop\Makaira\Modifier\Product\TrimTitleModifier:
    tags:
      - { name: 'kernel.event_listener', event: 'makaira.importer.modifier.product', priority: -1, method: addModifier }

The event name makaira.importer.modifier.product marks the modifier as an article modifier. Different event names are available for other document types:

Event-Name Modifier für
makaira.importer.modifier.product Artikel
makaira.importer.modifier.variant Artikel-Varianten
makaira.importer.modifier.category Kategorien
makaira.importer.modifier.manufacturer Hersteller

The priority of the modifier can be specified via Priority. This influences the loading order of the modifiers, whereby a modifier with a high value is loaded before a modifier with a lower value.

The function of the modifier can be checked using HTTP requests to the store.
See also: Signed requests with Postman

 

Migration from old Connect

If you still have an old OXID Connect module based on the marmalade :: Yamm module, the container configuration (in dic.php) must be migrated.

The container definition of our example would look something like this in the deprecated OXID Connect.

<?php
$dic['awesome_shop.makaira.product_modifier.trim_title'] = static function () {
  return new \AwesomeShop\Makaira\Modifier\Product\TrimTitleModifier();
};
$dic->tag('awesome_shop.makaira.product_modifier.trim_title', 'makaira.importer.modifier.product', -1);

This must be rewritten to the services.yaml format.

OXID Connect-Modul

Templating

The answers to the most frequently asked questions about templating with Makaira.

I have an OXID theme which is based on Azure/RoxIVE. Will we have any problems with it?

The customizations of the templates and blocks for the functionalities of Makaira are based on the Flow theme and its default blocks. If these blocks are not available in the used theme, the templates can be included manually instead.

In my previous theme I saw filters in the sidebar. After installing Makaira I no longer do, why?

Not displaying the filters in the sidebar is a conscious decision. For the implementation of the filters, autosuggest, etc. for Makaira was oriented to the Flow theme. However, this theme does not have a sidebar on all page types. In order to be able to display the filters on all page types, they were always placed above the products.

As a customer, how can I make adjustments to the template of filters, autosuggest or additional search results?

Filter

By default, the filters are displayed via the blocks of the default theme (Flow) in the frontend. Prerequisite for displayed filters are therefore the blocks:

The blocks used here include template files, which can be overwritten using the usual OXID logic. For this purpose, only the template file, which is to be overwritten, must be stored with the same name and path to the file in the own theme. OXID prioritizes these files before those from the module.

Additional Search Results(Categories, Manufacturer,Searchable Links)

The additional search results(Search fields) are also displayed in the frontend via a search_results block from the default theme's page/search/search.tpl template. The overwriting is done in the same way as for the filters.

Autosuggest

The autosuggest functionality is triggered by the default element for the search - an input with the ID #searchParam. In response to this asynchronous request to the Makaira, an HTML is delivered. This HTML is in turn generated from the templates of the Connect module.

To customize the HTML of the response, these templates can be overridden according to the OXID logic for each type of search result:

Additionally, care was taken to keep the CSS specificity low to allow easy adjustments to the layout and styling through the CSS.

OXID Connect-Modul

Templating in OXID eShop

Customization of the filter display

Task

Filtering by "colors" is to be visualized in the store frontend using color tiles.

Solution

In Makaira, different representations can be selected for the filters.

In addition to the standard templates, so-called "custom templates" can also be configured there. These templates are supplied in the Connect module and play the standard template for the selected filter type without further configuration.

In the store theme, a custom template can now be overridden to customize the display for a selected filter.

The following example shows how the color tiles were implemented in the Makaira Demo-Shop.

After first selecting a custom template for the color filter in the Makaira, this template is overwritten in the store theme:

[{*  ../Application/views/makaira/tpl/makaira/filter/list_multiselect_custom_1.tpl  *}]

<ul class="makaira-filter__list makaira-filter__list--colors">
    [{foreach from=$aggregation->values item="item" name="items"}]
        <li class="makaira-filter__color-item makaira-filter__color-item--[{$item->key|replace:" ":""}][{if $item->selected}] makaira-filter__color-item--active[{/if}]">
            <label>
                <input
                        type="checkbox"
                        name="makairaFilter[[{$aggregation->key}]][]"
                        class="makaira-input makaira-input--checkbox"
                        value="[{$item->key}]"
                        [{if $item->selected}]checked="checked"[{/if}]
                />
                [{$item->key}] [{if $blShowDocCount}]([{$item->count}])[{/if}]
            </label>
        </li>
    [{/foreach}]
</ul>

Using CSS, the filters can then be designed according to the respective specifications:

.makaira-filter__color-item {
    height: 30px;
    width: 30px;
    margin: 5px;
}

.makaira-filter__list--colors label {
    display: flex;
    height: 100%;
    font-size: 0;
    border: 1px solid #e6e7e7
}

.makaira-filter__color-item--Blau label {
    background-color: blue;
}

.makaira-filter__color-item--Clover label {
    background-color: #324D12;
}

// ...etc

Output of a variant screen

Task

If a value is selected for the "Color" filter, the image of the corresponding variant is to be displayed in the store frontend, if available.

Solution

In Makaira, the best variants  can optionally be returned in addition to the parent items.

The return is carried out taking into account the fields sent in the Connect. Accordingly, the same data is sent for the variant as for the father.

The following example shows the simple implementation for the case that the image of the associated variant is played when a value for the filter "Color" was selected.

<?php

/**
 * @param array $productIds
 * @param Result $productResult
 * @return oxArticleList|oxarticlelist
 */
public function loadProducts(array $productIds = [], Result $productResult)
{
    /** @var oxArticleList $oxArticleList */
    $articleList = [];

    foreach ($productResult->items as $productItem) {
        $article = oxNew('oxarticle');
        $article->assign($productItem->fields);

        $article = $this->overrideImageIfColorFilterActive($article);

        $articleList[] = $article;
    }

    /** @var oxArticleList $oxArticleList */
    $oxArticleList = oxNew('oxarticlelist');
    $oxArticleList->assign($articleList);

    return $oxArticleList;
}

protected function overrideImageIfColorFilterActive($article)
{
    if (isset($this->query->aggregations['farbe'])) {
        $variantImage = $article->oxarticles__variant->rawValue['OXTHUMB'];

        if ($variantImage) {
            $article->oxarticles__oxthumb = new \OxidEsales\Eshop\Core\Field($variantImage);
        }
    }

    return $article;
}
OXID Connect-Modul

Data manipulation in OXID eShop

The OXID eShop Makaira Connect module provides very easy to use events to modify and enrich the data during import.

This allows, for example, to create values for filters, to add content extensions to the fields or to concatenate several fields - all data is taken into account here. Makaira provides a naming of the new fields, which ensures the correct typing of the field. The correct typing is necessary so that the field can be used with the desired effect. So Makaira offers all basic data types (int, float, time, as well as several str types which are more suitable depending on the type of text. More details can be found under Typing in the Makaira Index .

Adjustment of the imported data

Task

You want to change or add the data of the OXID eShop for the import.

Solution

With the help of an OXID eShop module you can extend the data:

First create a module directory as usual (here specified with <module_root>) and a metadata.php that looks like this:

<?php
/* <module_root>/metadata.php */

$sMetadataVersion = '1.1';

$aModule = array(
    'id'          => 'makaira/demo',
    'title'       => 'Makaira :: Demo Extension',
    'files'       => array(
        'makaira_demo_modifier' => '<module_root>/makaira_demo_modifier.php',
    ),
    'extend'      => array(),
    'blocks'      => array(),
    'settings'    => array(),
);

Next comes the modifier itself. By using Pimple as a dependency injection container you can add dependencies even in older versions of OXID eShop.

The method apply() gets the object to be modified as argument.

Attention: The field names are case sensitive.

Attention: In order to be able to use newly added fields, for example, as search fields, they must be available at the product objects. It is not enough to extend only the variant objects.

<?php
/* <module_root>/makaira_demo_modifier.php */

use Makaira\Connect\Modifier;
use Makaira\Connect\Type;
use Makaira\Connect\DatabaseInterface;

class makaira_demo_modifier extends Modifier
{
    /**
     * @var DatabaseInterface
     */
    private $database;

    public function __construct(DatabaseInterface $database)
    {
        $this->database = $database;
    }

    /**
     * Modify product and return modified product
     *
     * @param Type $type
     *
     * @return Type
     */
    public function apply(Type $type)
    {
        // Apply custom handling here
        /*
            $type->active = false;                              // Deaktiviert das Objekt.
            $type->newProperty = ["some_int", "Data"];              // Fügt ein Feld des Datentypes ``int`` hinzu.
            $type->OXTITLE = $type->OXTITLE . ' some content';  // Ändert den Inhalt eines Feldes.
            $type->attribute = [];                              // Enfernt alle Attribute.
        */

        return $type;
    }
}

With the help of the file dic.php, which we read automatically by means of the yamm module, you can determine for which object types your modifier should be used.

Additionally, as an optional third parameter, you can specify the priority of the modifier. This influences the loading order of the modifiers, where a modifier with a high value is loaded before a modifier with a lower value.

<?php
/* <module_root>/dic.php */

/* Custom autoloading if needed */
//require_once __DIR__ . '/vendor/autoload.php';

$dic['makaira.connect.modifiers.custom.demo'] = function (\Marm\Yamm\DIC $dic) {
    return new makaira_demo_modifier($dic['oxid.database']);
};

$oxModule = oxNew('oxModule');
$oxModule->load('makaira/demo');
if ($oxModule->isActive()) {
    //Modifier für Produkte anwenden
    $dic->tag('makaira.connect.modifiers.custom.demo', 'makaira.importer.modifier.product', 100);
    // Modifier für Kategorien
    //$dic->tag('makaira.connect.modifiers.custom.demo', 'makaira.importer.modifier.category', 100);
    // Modifier für Hersteller
    //$dic->tag('makaira.connect.modifiers.custom.demo', 'makaira.importer.modifier.manufacturer', 100);
}
Information

The Yamm module, which comes with Makaira-Connect in the release package, provides a Pimple DIC (Dependency Injection Container).

The dic.php file in the module directory is automatically processed and the makaira_demo_modifier class is added as an import modifier for product data by the $dic->tag() method.

In this way, the data for imported manufacturers and categories can also be customized.

The function of the modifier can be checked using HTTP requests to the store. See Signed requests with Postman.

OXID Connect-Modul

Sorting in OXID eShop

Reset the sorting

Task

It should be possible to reset a sorting set by the customer.

Solution

With the help of an OXID eShop module the sorting can be reset

For this it is necessary to overwrite the method getSorting in the controllers alist, manufacturerlist and search

<?php

..

public function getSorting($sSortIdent)
{
    $sortBy = oxRegistry::getConfig()->getRequestParameter($this->getSortOrderByParameterName());
    if ('none' === $sortBy) {
        $aSorting = oxRegistry::getSession()->getVariable('aSorting');
        unset($aSorting[$sSortIdent]);
        oxRegistry::getSession()->setVariable('aSorting', $aSorting);

        return null;
    }

    return parent::getSorting($sSortIdent);
}

Then, in the corresponding template (flow theme: widget/locator/sort.tpl), another link must be added with the parameter listorderby=none, which can be used to reset the sorting.

OXID Connect-Modul

Unsupported features

Makaira adds many features to the store systems for which we provide modules that make the store sell better.

Due to the nature of the searches, however, not all standard functions can be supported with the default module.

For an extensive test we offer in principle to all users a free and all feature comprehensive, unrestricted test phase.

OXID eShop & OXID eShop Connect

The following features can currently not be supported by the default Connect module. A solution in a specific project is certainly possible. We are happy to provide support.

Other systems

Other systems

NDJSON-Import

Makaira can import NDJSON files. NDJSON stands for newline delimited JSON. So one document must be stored per line in the data feed. Each document must adhere to certain field names depending on the type.

General information about import data:

Note: For better clarity, the documents are displayed in multiple lines in the following. In the final data feed, of course, each document must be delivered on one line without line breaks.

 

Document type product (product)

{
  "id": "10013859950",
  "type": "product",
  "parent": "",
  "shop": "4",
  "ean": "48690A",
  "isVariant": false,
  "active": true,
  "stock": 0,
  "onstock": true,
  "picture_url_main": "https://images.makaira.io/out/pictures/generated/250_250/pboxx-pixelboxx-2652106/GRAPH%27IT+%22Brush+%26+Extra+fine%22+Marker+Komplett-Set%2C+Display+mit+96+Markern.jpg",
  "title": "GRAPH'IT \"Brush & Extra fine\" Marker Komplett-Set, Display mit 96 Markern",
  "shortdesc": "Das GRAPH'IT \"Brush & Extra fine\" enth\u00e4lt 96 Marker mit Qualit\u00e4tstinte auf Alkoholbasis und zwei unterschiedlichen Spitzen. Ideal geeignet f\u00fcr unterschiedlichste Mal- und Zeichentechniken.",
  "longdesc": "Das Komplett-Set enthält alle 96 Farbtöne der GRAPH'IT \"Brush & Extra fine\" Marker. Das transparente Display ermöglicht Ihnen jederzeit gute Übersicht und einen schnellen Zugriff zu Ihren Markern.Der GRAPH'IT \"Brush & Extra fine\" Marker verfügt über zwei unterschiedliche Spitzen. Eine lange, flexible Spitze mit synthetischen Pinselfasern, die eine optimale Strömung der Tinte gewährt. Und eine extrafeine 0,5 mm-Spitze mit Metallfassung, die sich insbesondere für Illustrationen eignet.GRAPH'IT \"Brush & Extra fine\" Marker \u2013 Die Produkt-Eigenschaften im ÜberblickKorpus aus weißem Kunststoff mit Dreikantform für hervorragende Haptik und Mal-KomfortQualitätstinte auf AlkoholbasisLeicht zu öffnender Deckel mit Farbcode zur einfachen IdentifizierungDer GRAPH'IT Marker ist ideal geeignet für:ComicsArchitekturDesignLandschaftsmalereiIllustrationuvm.",
  "price": 220.50,
  "soldamount": 0,
  "searchable": true,
  "searchkeys": "GRAPH'IT \"Brush & Extra fine\", Twin Tip, Marker, Pinselmarker, Pinselstift, Stift, Doppelmarker, Kalligrafie, Twin Marker, 2 Spitzen Maker, Comic, Architektur, Design, Illustration, GRAPH'IT Marker, Set, Komplett-Set, Brushpen, Brush Pen, Sortiment",
  "meta_keywords": "GRAPH'IT \"Brush & Extra fine\", Twin Tip, Marker, Pinselmarker, Pinselstift, Stift, Doppelmarker, Kalligrafie, Twin Marker, 2 Spitzen Maker, Comic, Architektur, Design, Illustration, GRAPH'IT Marker, Set, Komplett-Set, Brushpen, Brush Pen, Sortiment",
  "meta_description": "Das GRAPH'IT \"Brush & Extra fine\" Marker Komplett-Set finden Sie in unserem Onlineshop. \u2713 Marker mit Qualit\u00e4tstinte auf Alkoholbasis und zwei unterschiedlichen Spitzen. \u2713 Ideal f\u00fcr unterschiedlichste Mal- und Zeichentechniken. \u2713 \u00dcberzeugen Sie sich selbst! \u2794 Jetzt g\u00fcnstig online kaufen.",
  "manufacturerid": "f58f91bac483a6ea628e9d2be7a4b1e1",
  "manufacturer_title": "pebeo",
  "url": "/GRAPH-IT-Brush-Extra-fine-Marker-Komplett-Set-Display-mit-96-Markern.html",
  "maincategory": "9fb3ea945468f7c61b471c7401e7bad4",
  "maincategoryurl": "/Zeichnen-Grafik-Design/",
  "groups": {
    "DISCOUNT80": {
      "price": 2.00,
      "price_no_vat": 1.68
    }
  },
  "category": [
    {
      "catid": "cb38ac47b6005b97cd1bbed61c70fb18",
      "shopid": [
        "4"
      ],
      "path": "shop\/unser-angebot\/grafik-design\/stifte-marker\/copic-layoutmarker\/",
      "title": "Layoutmarker",
      "pos": 9 # position of product in category
    }
  ],
  "attributes": [
    {
      "d6238d67c4448e37c6bff847b097826e": [
        "Nur Neuheiten anzeigen"
      ],
      "5f65a4212ad959feb266af566d8f3b8f": [
        "Grafik + Design"
      ],
      "852264d68055531b4018323a7d2ba706": [
        "Einsteiger",
        "Schulen",
        "Studenten",
        "Hobbyk\u00fcnstler"
      ],
      "a33c9d88a89257f81eef0f4a001cc365": [
        "Marker + Fineliner"
      ],
      "4c9369a9a485d7ce007f58fa695e5812": [
        "Tinte auf Alkoholbasis"
      ],
      "d8008f87168439ac398f6927cdbd812d": [
        "Set"
      ],
      "6d9b20c89a0ffb28b56bb07ff5bb39ba": [
        "Pinselspitze",
        "metallgefasste Spitze"
      ],
      "76c7e398b67f441fdc9220e11b419945": [
        "0,5 mm"
      ]
    }
  ],
  "attributeStr": [
    {
      "id": "d6238d67c4448e37c6bff847b097826e",
      "title": "Neuheiten",
      "value": "Nur Neuheiten anzeigen"
    },
    {
      "id": "5f65a4212ad959feb266af566d8f3b8f",
      "title": "Empfohlen f\u00fcr Technik",
      "value": ["Grafik + Design", "Einsteiger", "Schulen", "Studenten", "Hobbyk\u00fcnstler"]
    },
    {
      "id": "a33c9d88a89257f81eef0f4a001cc365",
      "title": "Produktart",
      "value": "Marker + Fineliner"
    },
    {
      "id": "4c9369a9a485d7ce007f58fa695e5812",
      "title": "Marker-Basis",
      "value": "Tinte auf Alkoholbasis"
    },
    {
      "id": "d8008f87168439ac398f6927cdbd812d",
      "title": "Auswahl",
      "value": "Set"
    },
    {
      "id": "6d9b20c89a0ffb28b56bb07ff5bb39ba",
      "title": "Form Marker (Spitze)",
      "value": ["Pinselspitze", "metallgefasste Spitze"]
    },
    {
      "id": "76c7e398b67f441fdc9220e11b419945",
      "title": "Strichbreite",
      "value": "0,5 mm"
    }
  ],
  "attributeInt": [],
  "attributeFloat": [],
  "mak_boost_norm_insert": 0.07301991452214238,
  "mak_boost_norm_sold": 0.2763039747051342,
  "mak_boost_norm_rating": 0,
  "mak_boost_norm_revenue": 0.2664841710697083,
  "mak_boost_norm_profit_margin": 0,
  "timestamp": "2019-09-27 15:34:42",
}

Special features:

 

Document type variant (variant)

{
  "id": "10013860005",   "type": "variant",
  "parent": "10013859950",
  "shop": "4",
  "ean": "48690",
  "isVariant": true,
  "active": true,
  "sort": 4001,
  "stock": 10,
  "onstock": true,
  "picture_url_main": "https://images.makaira.io/out/pictures/generated/250_250/pboxx-pixelboxx-2616996/GRAPH%27IT+%22Brush+%26+Extra+fine%22+Marker+Komplett-Set%2C+Display+mit+96+Markern.jpg",
  "title": "GRAPH'IT \"Brush & Extra fine\" Marker Komplett-Set, Display mit 96 Markern",
  "shortdesc": "Das GRAPH'IT \"Brush & Extra fine\" enth\u00e4lt 96 Marker mit Qualit\u00e4tstinte auf Alkoholbasis und zwei unterschiedlichen Spitzen. Ideal geeignet f\u00fcr unterschiedlichste Mal- und Zeichentechniken.",
  "longdesc": "Das Komplett-Set enthält alle 96 Farbtöne der GRAPH'IT \"Brush & Extra fine\" Marker. Das transparente Display ermöglicht Ihnen jederzeit gute Übersicht und einen schnellen Zugriff zu Ihren Markern.Der GRAPH'IT \"Brush & Extra fine\" Marker verfügt über zwei unterschiedliche Spitzen. Eine lange, flexible Spitze mit synthetischen Pinselfasern, die eine optimale Strömung der Tinte gewährt. Und eine extrafeine 0,5 mm-Spitze mit Metallfassung, die sich insbesondere für Illustrationen eignet.GRAPH'IT \"Brush & Extra fine\" Marker \u2013 Die Produkt-Eigenschaften im ÜberblickKorpus aus weißem Kunststoff mit Dreikantform für hervorragende Haptik und Mal-KomfortQualitätstinte auf AlkoholbasisLeicht zu öffnender Deckel mit Farbcode zur einfachen IdentifizierungDer GRAPH'IT Marker ist ideal geeignet für:ComicsArchitekturDesignLandschaftsmalereiIllustrationuvm.",
  "price": 220,
  "soldamount": 0,
  "searchable": true,
  "searchkeys": "GRAPH'IT \"Brush & Extra fine\", Twin Tip, Marker, Pinselmarker, Pinselstift, Stift, Doppelmarker, Kalligrafie, Twin Marker, 2 Spitzen Maker, Comic, Architektur, Design, Illustration, GRAPH'IT Marker, Set, Komplett-Set, Brushpen, Brush Pen, Sortiment",
  "meta_keywords": "GRAPH'IT \"Brush & Extra fine\", Twin Tip, Marker, Pinselmarker, Pinselstift, Stift, Doppelmarker, Kalligrafie, Twin Marker, 2 Spitzen Maker, Comic, Architektur, Design, Illustration, GRAPH'IT Marker, Set, Komplett-Set, Brushpen, Brush Pen, Sortiment",
  "meta_description": "Das GRAPH'IT \"Brush & Extra fine\" Marker Komplett-Set finden Sie in unserem Onlineshop. \u2713 Marker mit Qualit\u00e4tstinte auf Alkoholbasis und zwei unterschiedlichen Spitzen. \u2713 Ideal f\u00fcr unterschiedlichste Mal- und Zeichentechniken. \u2713 \u00dcberzeugen Sie sich selbst! \u2794 Jetzt g\u00fcnstig online kaufen.",
  "manufacturerid": "f58f91bac483a6ea628e9d2be7a4b1e1",
  "manufacturer_title": "pebeo",
  "url": "/GRAPH-IT-Brush-Extra-fine-Marker-Komplett-Set-Display-mit-96-Markern.html",
  "maincategory": "9fb3ea945468f7c61b471c7401e7bad4",
  "maincategoryurl": "/Zeichnen-Grafik-Design/",
  "groups": {
    "DISCOUNT80": {
      "price": 2.00,
      "price_no_vat": 1.68
    }
  },
  "category": [
    {
      "catid": "cb38ac47b6005b97cd1bbed61c70fb18",
      "shopid": [
        "4"
      ],
      "path": "shop/unser-angebot/grafik-design/stifte-marker/copic-layoutmarker/",
      "title": "Layoutmarker"
    }
  ],
  "attributeStr": [
    {
      "id": "76c7e398b67f441fdc9220e11b419945",
      "title": "Strichbreite",
      "value": "0,5 mm"
    }
  ],
  "attributeInt": [],
  "attributeFloat": [],
  "timestamp": "2019-09-27 15:34:42",
  "additionalData": {}
}

Special features:

 

Document type Manufacturer (manufacturer)

{
  "id": "f58f91bac483a6ea628e9d2be7a4b1e1",
  "type": "manufacturer",
  "manufacturer_title": "pebeo",
  "timestamp": "2019-09-27 15:34:42",
  "url": "/markenwelt/pebeo-gs/",
  "active": true,
  "shop": "4",
}

 

Document type category

{
  "id": "ffa7bbaff96b15da5579d99247e981bf",
  "type": "category",
  "active": true,
  "hidden": false,
  "depth": 0,
  "category_title": "Tempera + Gouache Farbe",
  "hierarchy": "6c52086cb1550335611b759cdf8681bd//baafc2f8b5664298b7fb865762918b32//ffa7bbaff96b15da5579d99247e981bf",
  "subcategories": [],
  "timestamp": "2019-09-27 15:34:42",
  "url": "/farben-hilfsmittel/kuenstlerfarben/tempera-gouache-farbe/",
  "shop": "4",
}

Special features::

 

Mapping of Makaira names to OXID and legacy names

Makaira Name Makaira Name legacy Product Category Manufacturer
id - OXID OXID OXID
title mak_title OXTITLE OXTITLE OXTITLE
searchkeys mak_searchkeys OXSEARCHKEYS custom custom
category_title mak_category_title - OXTITLE -
hidden mak_hidden - OXHIDDEN -
sort mak_sort OXSORT OXSORT -
active mak_active (gesamte Shoplogik für active)    
longdesc mak_longdesc OXLONGDESC OXLONGDESC -
shortdesc mak_shortdesc OXSHORTDESC OXDESC OXSHORTDESC
onstock mak_onstock (gesamte Shoplogik für onstock) - -
manufacturerid mak_manufacturerId OXMANUFACTURERID - -
manufacturer_title   MARM_OXSEARCH_MANUFACTURERTITLE - OXTITLE
category_title   - OXTITLE -
price mak_price OXPRICE - -
insert mak_insert OXINSERT - -
soldamount mak_soldamount OXSOLDAMOUNT - -
rating mak_rating OXRATING - -
picture_url_main mak_pic_main OXPIC1 - -
searchable mak_searchable OXISSEARCH - -
stock mak_stock OXSTOCK (OXVARSTOCK) - -
ean mak_ean OXARTNUM -

-

maincategory mainCategory ID der Hauptkategorie - -
maincategoryurl mainCategoryUrl Seo URL der Hauptkategorie - -

Typing in Makaira Index

This topic is interesting for all those who want to use their own fields in their store for searching and filtering.
So that the new fields also fulfill the desired function they should be provided with the correct typing (also called casting or mapping).
For example, if you want to be able to set filters by slider, you should choose a numeric type float or int. The whole thing gets a bit more complicated when str fields are created for the search. Here we distinguish in the Makaira different cases like short fields, long fields or fields with proper names. Only with the right choice of the type you will get the desired result. In the following we list all types and give beside a short explanation of the type also examples for the use

Type:date Fields with date formatting

Necessary suffix _date

Type:float Fields with floating point numbers

Necessary suffix _float

Type:int Fields with integer values

Necessary suffix _int

Type:bool Fields with boolean values

Necessary suffix _bool

 

Type:str Fields with text content. Makaira distinguishes between different types of text fields. Depending on the length and type of content, the text is then analyzed in different ways:

Short text field

The analyzer for most text fields. Decompound, fuzzy analysis, stemming and synonyms are part of the analysis processes, in addition to the standard lowercasing.

Useful for e.g.: Short description of a product

Necessary suffix _str_short

Long text field

For long text fields, the Decompound and Fuzzy Search option is disabled to keep the search accuracy as sharp as possible.

Useful for e.g.: Long description of a product

Necessary suffix _str_long

Key Felder

Decompound, stemming is not used in the analysis of these fields.

Useful for e.g.: Manufacturer names, proper names that should only be found in this spelling.

Necessary suffix _str_short_key

Keywords

The analysis consists only of lowercasing.

Useful for special applications where case-sensitive proper names are important.

Necessary suffix _str_keyword

Deactivate typing "data storage only"

Useful for large objects that are not to be searched and for example are only used for output in the frontend.

Necessary suffix _data_only