added country name to sapi index
This commit is contained in:
parent
ed48f145dc
commit
14f2e4a9aa
|
@ -4,16 +4,15 @@ status: true
|
||||||
dependencies:
|
dependencies:
|
||||||
module:
|
module:
|
||||||
- search_api_solr
|
- search_api_solr
|
||||||
|
- materio_sapi
|
||||||
- taxonomy
|
- taxonomy
|
||||||
- node
|
- node
|
||||||
- materio_sapi
|
|
||||||
- synonyms
|
- synonyms
|
||||||
- search_api
|
- search_api
|
||||||
- address
|
- address
|
||||||
config:
|
config:
|
||||||
- field.storage.node.body
|
- field.storage.node.body
|
||||||
- field.storage.node.field_distributor
|
- field.storage.node.field_distributor
|
||||||
- field.storage.taxonomy_term.field_public_address
|
|
||||||
- field.storage.node.field_famille
|
- field.storage.node.field_famille
|
||||||
- field.storage.node.field_manufacturer
|
- field.storage.node.field_manufacturer
|
||||||
- field.storage.node.field_reference
|
- field.storage.node.field_reference
|
||||||
|
@ -68,28 +67,15 @@ name: database
|
||||||
description: ''
|
description: ''
|
||||||
read_only: false
|
read_only: false
|
||||||
field_settings:
|
field_settings:
|
||||||
country_code:
|
field_country_name_computed:
|
||||||
label: 'Manufacturer » Terme de taxonomie » Address » The two-letter country code'
|
label: 'Country Name'
|
||||||
datasource_id: 'entity:node'
|
datasource_id: 'entity:node'
|
||||||
property_path: 'field_manufacturer:entity:field_public_address:country_code'
|
property_path: field_country_name_computed
|
||||||
type: solr_text_wstoken
|
type: 'solr_text_custom:edgeasciistring'
|
||||||
|
boost: !!float 3
|
||||||
dependencies:
|
dependencies:
|
||||||
config:
|
|
||||||
- field.storage.node.field_manufacturer
|
|
||||||
- field.storage.taxonomy_term.field_public_address
|
|
||||||
module:
|
module:
|
||||||
- taxonomy
|
- materio_sapi
|
||||||
country_code_1:
|
|
||||||
label: 'Distributor » Terme de taxonomie » Address » The two-letter country code'
|
|
||||||
datasource_id: 'entity:node'
|
|
||||||
property_path: 'field_distributor:entity:field_public_address:country_code'
|
|
||||||
type: solr_text_wstoken
|
|
||||||
dependencies:
|
|
||||||
config:
|
|
||||||
- field.storage.node.field_distributor
|
|
||||||
- field.storage.taxonomy_term.field_public_address
|
|
||||||
module:
|
|
||||||
- taxonomy
|
|
||||||
field_famille:
|
field_famille:
|
||||||
label: Famille
|
label: Famille
|
||||||
datasource_id: 'entity:node'
|
datasource_id: 'entity:node'
|
||||||
|
@ -428,8 +414,7 @@ processor_settings:
|
||||||
html_filter:
|
html_filter:
|
||||||
all_fields: true
|
all_fields: true
|
||||||
fields:
|
fields:
|
||||||
- country_code
|
- field_country_name_computed
|
||||||
- country_code_1
|
|
||||||
- field_famille
|
- field_famille
|
||||||
- field_reference
|
- field_reference
|
||||||
- field_short_description
|
- field_short_description
|
||||||
|
|
|
@ -70,6 +70,7 @@ function materio_sapi_preprocess_fieldset(&$variables) {
|
||||||
|
|
||||||
|
|
||||||
// ? https://happyculture.coop/blog/drupal-8-declarer-un-champ-extrafield-calcule-computed-field
|
// ? https://happyculture.coop/blog/drupal-8-declarer-un-champ-extrafield-calcule-computed-field
|
||||||
|
// ? https://fivejars.com/blog/entity-basefielddefinitions-fields-examples-drupal-8
|
||||||
/**
|
/**
|
||||||
* Implements hook_entity_bundle_field_info().
|
* Implements hook_entity_bundle_field_info().
|
||||||
*/
|
*/
|
||||||
|
@ -86,8 +87,25 @@ function materio_sapi_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInt
|
||||||
->setClass('\Drupal\materio_sapi\ThesaurusRefComputed')
|
->setClass('\Drupal\materio_sapi\ThesaurusRefComputed')
|
||||||
->setDisplayConfigurable('view', FALSE);
|
->setDisplayConfigurable('view', FALSE);
|
||||||
}
|
}
|
||||||
|
$fields["field_country_name_computed"] = \Drupal\Core\Field\BaseFieldDefinition::create('string')
|
||||||
|
->setLabel(t("Country Name"))
|
||||||
|
->setComputed(TRUE)
|
||||||
|
->setTranslatable(TRUE)
|
||||||
|
->setClass('\Drupal\materio_sapi\CountryNameNodeComputed')
|
||||||
|
->setDisplayConfigurable('view', FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// if ($entity_type->id() == 'taxonomy_term') {
|
||||||
|
// if ($bundle == 'company') {
|
||||||
|
// $fields["field_country_name_computed"] = \Drupal\Core\Field\BaseFieldDefinition::create('string')
|
||||||
|
// ->setName('field_country_name_computed')
|
||||||
|
// ->setLabel(t("Country Name"))
|
||||||
|
// ->setComputed(TRUE)
|
||||||
|
// ->setTranslatable(TRUE)
|
||||||
|
// ->setClass('\Drupal\materio_sapi\CountryNameComputed')
|
||||||
|
// ->setDisplayConfigurable('view', FALSE);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Drupal\materio_sapi;
|
||||||
|
|
||||||
|
use Drupal\Core\Field\FieldItemList;
|
||||||
|
use Drupal\Core\TypedData\ComputedItemListTrait;
|
||||||
|
|
||||||
|
class CountryNameComputed extends FieldItemList {
|
||||||
|
use ComputedItemListTrait;
|
||||||
|
|
||||||
|
protected function computeValue() {
|
||||||
|
$term = $this->getEntity();
|
||||||
|
$name = $term->getName();
|
||||||
|
$address = $term->get('field_public_address')->first();
|
||||||
|
if ($address) {
|
||||||
|
$country_code = $address->getCountryCode();
|
||||||
|
if ($country_code) {
|
||||||
|
$full_country_list = \Drupal::service('country_manager')->getList();
|
||||||
|
$country_name = $full_country_list[$country_code];
|
||||||
|
$lang = \Drupal::languageManager()->getCurrentLanguage()->getId();
|
||||||
|
$translated_markup = $country_name->render();
|
||||||
|
if($parent->id() == 5719){
|
||||||
|
$t="t";
|
||||||
|
}
|
||||||
|
$this->list[0] = $this->createItem(0, $translated_markup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Drupal\materio_sapi;
|
||||||
|
|
||||||
|
use Drupal\Core\Field\FieldItemList;
|
||||||
|
use Drupal\Core\TypedData\ComputedItemListTrait;
|
||||||
|
// use Drupal\Core\StringTranslation\TranslatableMarkup;
|
||||||
|
|
||||||
|
class CountryNameNodeComputed extends FieldItemList {
|
||||||
|
use ComputedItemListTrait;
|
||||||
|
|
||||||
|
protected function computeValue() {
|
||||||
|
$node = $this->getEntity();
|
||||||
|
$node_lang_code = $node->language()->getId();
|
||||||
|
// $distrib = $node->get('field_distributor')->referencedEntities();
|
||||||
|
// $manuf = $node->get('field_manufacturer')->referencedEntities();
|
||||||
|
$companies = array_merge($node->get('field_distributor')->referencedEntities(), $node->get('field_manufacturer')->referencedEntities());
|
||||||
|
$country_codes = [];
|
||||||
|
foreach ($companies as $term) {
|
||||||
|
$address = $term->get('field_public_address')->first();
|
||||||
|
if ($address) {
|
||||||
|
$country_code = $address->getCountryCode();
|
||||||
|
if (!in_array($country_code, $country_codes)){
|
||||||
|
$country_codes[] = $country_code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count($country_codes)) {
|
||||||
|
$full_country_list = \Drupal::service('country_manager')->getList();
|
||||||
|
foreach ($country_codes as $i => $country_code) {
|
||||||
|
/** Drupal\Core\StringTranslation\TranslatableMarkup **/
|
||||||
|
$country_name = $full_country_list[$country_code];
|
||||||
|
// $country_name->options['langcode'] = $this->langcode;
|
||||||
|
// $lang = \Drupal::languageManager()->getCurrentLanguage()->getId();
|
||||||
|
$untranslated = $country_name->getUntranslatedString();
|
||||||
|
// $translated = $country_name->render(['langcode' => $node_lang_code]);
|
||||||
|
$translated = t($untranslated, [], ['langcode'=>$node_lang_code]);
|
||||||
|
// $this->list[$i] = $this->createItem($i, "lang: $lang, node:$node_lang_code, $untranslated, $translated");
|
||||||
|
$this->list[$i] = $this->createItem($i, $translated);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue