# Egyedi oldalépítő-widgetek regisztrálása a fordításhoz

> Egyedi Elementor-, Beaver Builder-, SiteOrigin- és Cornerstone-widgetek regisztrálása wpml-config.xml fájlban, ismétlő mezőkkel és azonosítókkal.

Az egyedi oldalépítő-widgetek fordításra regisztrálásához a `wpml-config.xml` fájlt kell használnod. Ez az útmutató témát vagy bővítményt készítő, illetve saját oldalépítő-kódot használó fejlesztőknek szól. Ha harmadik féltől származó oldalépítő egyedi widgetjeit nem tudod lefordítani, fordulj a WPML támogatásához.

Az olyan oldalépítők, mint az Elementor, a Beaver Builder, a SiteOrigin és a Cornerstone saját widgetekkel jönnek, és ezek a WPML-lel külön teendő nélkül működnek. Egyedi widget minden olyan további widget, amely nem része az oldalépítőnek: a fejlesztőcsapatod, harmadik fél készítette, vagy más bővítményből, témából jön, illetve olyan kiegészítő bővítményből, amelyet külön egy oldalépítőhöz (például az Elementorhoz) készítettek.

## Mikor kell regisztrálni?

Az egyedi widgetet regisztrálni kell a fordításhoz:

- ha az oldalépítő eredetileg nem tartalmazza;
- ha másik bővítményen vagy témán keresztül hoztad létre és adtad hozzá;
- ha a webhelyeidhez vagy egy oldalépítőhöz a csapatod vagy harmadik fél fejlesztette.

Korábban a leggyakoribb mód az egyedi PHP-kód volt. Ma a widgetet a `wpml-config.xml` fájllal regisztrálhatod.

### Egyedi Elementor-widgetek a WPML 4.9-től

A WPML 4.9-től kezdve a WPML automatikusan felismeri az egyedi Elementor-widgeteket, és fordíthatóvá teszi őket. Előfordulhat azonban, hogy olyan sztringeket is regisztrál, amelyeket nem akarsz lefordítani. Ezért erősen ajánlott akkor is kézzel beállítani a `wpml-config.xml` fájlt az itt leírtak szerint: így te döntöd el, mely mezők fordíthatók.

## Regisztrálás a Multilingual Tools bővítménnyel

A Multilingual Tools bővítmény tartalmaz egy WPML Config Generator eszközt Elementorhoz és Gutenberg-blokkokhoz. Segítségével egy oldalra felveheted az egyedi Elementor-widgeteket vagy Gutenberg-blokkokat, amelyeket regisztrálni akarsz, és az eszköz előállítja a szükséges XML-kód első változatát. A Gutenberg-blokkokról a [Gutenberg-blokkok fordíthatóvá tétele](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/fejleszto-gutenberg-blokkok/) fejezet szól.

## A widget regisztrációs adatainak megkeresése

A `wpml-config.xml` fájlban való regisztráláshoz két adat kell: a widget típusának neve és a lefordítandó mezők nevei.

1. Add a widgetet egyedül egy új oldalhoz, és mentsd az oldalt.
2. Az Elementor az oldal widgetjeit a `_elementor_data` bejegyzés-metamezőben tárolja. Egy olyan bővítmény, mint a JSM Show Post Metadata, az oldalszerkesztő alján egy dobozban mutatja ezt a mezőt, így elolvashatod a widget adatait.

Az adatokban:

- a `widgetType` a widget `name` attribútumához használandó név;
- a `settings` alatti kulcsok a widget mezői. Az a kulcs, amely lefordítandó szöveget tartalmaz (például `title`), regisztrálandó mezőnév;
- az ismétlő mező sorok tömbjét tartalmazza. Az a kulcs, amely ezt a tömböt tartalmazza (például `contents`), az „items of” név.

Ellenőrzéshez nyiss meg egy oldalt, amely használja a widgetet, a fordítószerkesztőben. A regisztrált mezők név szerint látszanak, mellettük a widget szövegei. A nem regisztrált widget semmit nem ad a feladathoz, tehát ha egyetlen szövege sem jelenik meg, a regisztráció nem lépett érvénybe.

## Egyszerű widgetek regisztrálása

Egyszerű widget az, amelynek nincs ismétlő mezője. Példa:

```xml
<wpml-config>
	<elementor-widgets>
		<widget name="heading">
			<conditions>
				<condition key="widgetType">heading</condition>
			</conditions>
			<fields>
				<field type="Heading" editor_type="LINE">title</field>
				<field type="Heading: Link URL" editor_type="LINK">link>url</field>
			</fields>
		</widget>
	</elementor-widgets>
</wpml-config>
```

A felépítés:

1. Kezdd a külső címkével, amely megmondja, melyik oldalépítő widgetjeit regisztrálod:
   - `<elementor-widgets>`: Elementorhoz, Elementor PRO-hoz vagy bármely Elementor-kiegészítőhöz;
   - `<beaver-builder-widgets>`: a Beaver Builder Lite-hoz, a prémium Beaver Builderhez vagy bármely Beaver Builder-kiegészítőhöz;
   - `<siteorigin-widgets>`: a SiteOrigin oldalépítőhöz;
   - `<cornerstone-widgets>`: az X vagy PRO témával jövő Cornerstone oldalépítőhöz.
2. Add hozzá a widgeteket:
   - `<widget name="widget_name">`: a `widget_name` az a név, amellyel a widget az oldalépítőben regisztrálva van;
   - `<conditions>` (opcionális): feltételben megadhatsz egy kulcsot a widget nevével. Akkor használható, ha a widget neve eltér az adatokban lévő kulcstól, de általában nem kell.
3. A widget mezőit `<fields>` címkébe csomagolva add meg:
   - `field`: a mező azonosítója, ugyanaz, mint amelyet a `Control_stack::add_control` függvénnyel a vezérlő hozzáadásakor használtál;
   - `type` (opcionális): a mező típusa, az a szöveg, amelyet a WPML Advanced Translation Editor vagy Classic Translation Editor mutat, hogy a fordító tudja, melyik mezőt fordítja;
   - `editor_type` (opcionális): a Classic Translation Editor szövegmezőjének típusa. Értékei: `LINE`, `AREA`, `LINK`, `VISUAL`. Ha hiányzik, `LINE`;
   - `key_of` (opcionális): csak a `<fields-in-item>` címkén belüli, tömböt tartalmazó `<field>` címkéknél használatos.

Ezekkel az elemekkel tetszőleges számú mezős egyszerű widgetet regisztrálhatsz.

### Bejegyzés- vagy taxonómiaazonosítót tartalmazó mezők

A `type` attribútum általában leíró szöveget jelenít meg a fordítószerkesztőben. Ha viszont a widget mezői bejegyzés- vagy taxonómiaazonosítót tárolnak (kiválasztott képeket, kapcsolódó bejegyzéseket, kiválasztott kategóriákat), különleges értékeket használsz, amelyek automatikus átalakítást váltanak ki:

- `type="post-ids"`: bejegyzésazonosítókat tartalmazó mezőkhöz;
- `type="term-ids"`: taxonómia-/kifejezésazonosítókat tartalmazó mezőkhöz.

Ilyen értékeknél:

- a mező nem jelenik meg a fordítószerkesztőben;
- a WPML automatikusan átalakítja az azonosítókat a lefordított tartalomra mutatókká;
- egyetlen azonosító és vesszővel elválasztott lista egyaránt támogatott.

```xml
<wpml-config>
    <elementor-widgets>
        <widget name="the-widget-name">
            <fields>
                <field type="post-ids" sub-type="attachment">image_id</field>
                <field type="post-ids" sub-type="post">selected_posts</field>
                <field type="term-ids" sub-type="category">category_filter</field>
            </fields>
        </widget>
    </elementor-widgets>
</wpml-config>
```

Az opcionális `sub-type` megadja a pontos bejegyzéstípust vagy taxonómiát:

- `type="post-ids"` esetén: `attachment`, `post`, `page` vagy az egyedi bejegyzéstípus slugja;
- `type="term-ids"` esetén: `category`, `post_tag` vagy az egyedi taxonómia slugja.

A `sub-type` megadása gyorsít, mert nem kell további adatbázis-lekérdezéssel megállapítani a tartalom típusát.

## Ismétlő mezőket tartalmazó widgetek

Az ismétlő mezős widgeteknél a mezőket `<fields-in-item items_of="tabs">` címkébe kell csomagolni (ahol a `tabs` az ismétlő mezőket tartalmazó kulcs neve):

```xml
<widget name="accordion">
	<fields-in-item items_of="tabs">
		<field type="Accordion: Title" editor_type="LINE">tab_title</field>
		<field type="Accordion: Content" editor_type="VISUAL">tab_content</field>
	</fields-in-item>
</widget>
```

Egy widgetnek több ismétlő mezője is lehet. Az Ultimate Addons for Elementor Table widgetjénél például így:

```xml
<widget name="uael-table">
	<fields-in-item items_of="table_content">
		<field type="The Cell text" editor_type="LINE">cell_text</field>
	</fields-in-item>
	<fields-in-item items_of="table_headings">
		<field type="The Heading text" editor_type="LINE">heading_text</field>
	</fields-in-item>
</widget>
```

## Egyszerű és ismétlő mezőket is tartalmazó widgetek

Egy widgetnek lehet `fields` és `fields-in-item` része is:

```xml
<widget name="price-table">
	<fields>
		<field type="Price Table: Heading" editor_type="LINE">heading</field>
		<!-- ... -->
	</fields>
	<fields-in-item items_of="features_list">
		<field type="Price table: text" editor_type="LINE">item_text</field>
	</fields-in-item>
</widget>
```

## Mezők csoportosítása

Az XML áttekinthetőségéért a mezők címkéjének elé teheted a csoport nevét. Példa egy hotspot widgetre:

```xml
<widget name="hotspot">
    <fields-in-item items_of="hotspot">
        <field type="Hotspot: Label">hotspot_label</field>
        <field type="Hotspot: URL" key_of="hotspot_link">url</field>
        <field type="Hotspot: Content" editor_type="VISUAL">hotspot_tooltip_content</field>
    </fields-in-item>
</widget>
```

Itt minden mező a **Hotspot:** előtagot kapja. Ez az előtag az Advanced Translation Editorban is megjelenik: a widget mezői egy **Hotspot** dobozban vannak, és mindegyiknek saját címkéje van, így könnyebb azonosítani és fordítani őket.

## Más oldalépítő-tartalmak regisztrálása

Sztringek, shortcode-ok és más oldalépítő-tartalmak regisztrálását a [Nyelvi konfigurációs fájl](https://hub.hellowp.io/hu/plugins/sitepress-multilingual-cms/fejleszto-wpml-config/) fejezet sorolja fel.
