added thesaurus ordered in sapi solr database index

This commit is contained in:
Bachir Soussi Chiadmi 2021-10-08 13:39:17 +02:00
parent aca756e64d
commit 7056bce803
5 changed files with 218 additions and 7 deletions

View File

@ -3,6 +3,6 @@ raw_names: false
error_handlers: error_handlers:
- 0 - 0
rebuild_theme: false rebuild_theme: false
devel_dumper: default devel_dumper: kint
debug_logfile: 'temporary://drupal_debug.txt' debug_logfile: 'temporary://drupal_debug.txt'
debug_pre: false debug_pre: false

View File

@ -6,6 +6,8 @@ dependencies:
- search_api_solr - search_api_solr
- taxonomy - taxonomy
- node - node
- materio_sapi
- synonyms
- search_api - search_api
- address - address
config: config:
@ -204,25 +206,134 @@ field_settings:
label: 'Thesaurus » Taxonomy term » Name' label: 'Thesaurus » Taxonomy term » Name'
datasource_id: 'entity:node' datasource_id: 'entity:node'
property_path: 'field_thesaurus:entity:name' property_path: 'field_thesaurus:entity:name'
type: solr_text_wstoken type: 'solr_text_custom:edgeasciistring'
boost: !!float 8 boost: !!float 2
dependencies: dependencies:
config: config:
- field.storage.node.field_thesaurus - field.storage.node.field_thesaurus
module: module:
- taxonomy - taxonomy
thesaurus_name_0:
label: 'Thesaurus 0 » Terme de taxonomie » Nom'
datasource_id: 'entity:node'
property_path: 'thesaurus_0:entity:name'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 21
dependencies:
module:
- materio_sapi
- taxonomy
thesaurus_name_1:
label: 'Thesaurus 1 » Terme de taxonomie » Nom'
datasource_id: 'entity:node'
property_path: 'thesaurus_1:entity:name'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 13
dependencies:
module:
- materio_sapi
- taxonomy
thesaurus_name_2:
label: 'Thesaurus 2 » Terme de taxonomie » Nom'
datasource_id: 'entity:node'
property_path: 'thesaurus_2:entity:name'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 8
dependencies:
module:
- materio_sapi
- taxonomy
thesaurus_name_3:
label: 'Thesaurus 3 » Terme de taxonomie » Nom'
datasource_id: 'entity:node'
property_path: 'thesaurus_3:entity:name'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 5
dependencies:
module:
- materio_sapi
- taxonomy
thesaurus_name_4:
label: 'Thesaurus 4 » Terme de taxonomie » Nom'
datasource_id: 'entity:node'
property_path: 'thesaurus_4:entity:name'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 3
dependencies:
module:
- materio_sapi
- taxonomy
thesaurus_synonyms: thesaurus_synonyms:
label: 'Thesaurus » Taxonomy term » Synonyms' label: 'Thesaurus » Taxonomy term » Synonyms'
datasource_id: 'entity:node' datasource_id: 'entity:node'
property_path: 'field_thesaurus:entity:field_synonyms' property_path: 'field_thesaurus:entity:field_synonyms'
type: solr_text_wstoken type: 'solr_text_custom:edgeasciistring'
boost: !!float 8 boost: !!float 2
dependencies: dependencies:
config: config:
- field.storage.node.field_thesaurus - field.storage.node.field_thesaurus
- field.storage.taxonomy_term.field_synonyms - field.storage.taxonomy_term.field_synonyms
module: module:
- taxonomy - taxonomy
thesaurus_synonyms_0:
label: 'Thesaurus 0 » Terme de taxonomie » Synonyms list'
datasource_id: 'entity:node'
property_path: 'thesaurus_0:entity:synonyms'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 21
dependencies:
module:
- materio_sapi
- synonyms
- taxonomy
thesaurus_synonyms_1:
label: 'Thesaurus 1 » Terme de taxonomie » Synonyms'
datasource_id: 'entity:node'
property_path: 'thesaurus_1:entity:field_synonyms'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 13
dependencies:
config:
- field.storage.taxonomy_term.field_synonyms
module:
- materio_sapi
- taxonomy
thesaurus_synonyms_2:
label: 'Thesaurus 2 » Terme de taxonomie » Synonyms'
datasource_id: 'entity:node'
property_path: 'thesaurus_2:entity:field_synonyms'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 8
dependencies:
config:
- field.storage.taxonomy_term.field_synonyms
module:
- materio_sapi
- taxonomy
thesaurus_synonyms_3:
label: 'Thesaurus 3 » Terme de taxonomie » Synonyms'
datasource_id: 'entity:node'
property_path: 'thesaurus_3:entity:field_synonyms'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 5
dependencies:
config:
- field.storage.taxonomy_term.field_synonyms
module:
- materio_sapi
- taxonomy
thesaurus_synonyms_4:
label: 'Thesaurus 4 » Terme de taxonomie » Synonyms'
datasource_id: 'entity:node'
property_path: 'thesaurus_4:entity:field_synonyms'
type: 'solr_text_custom:edgeasciistring'
boost: !!float 3
dependencies:
config:
- field.storage.taxonomy_term.field_synonyms
module:
- materio_sapi
- taxonomy
thesaurus_tid: thesaurus_tid:
label: 'Thesaurus » Taxonomy term » Term ID' label: 'Thesaurus » Taxonomy term » Term ID'
datasource_id: 'entity:node' datasource_id: 'entity:node'
@ -239,7 +350,7 @@ field_settings:
datasource_id: 'entity:node' datasource_id: 'entity:node'
property_path: title property_path: title
type: text type: text
boost: !!float 13 boost: !!float 21
dependencies: dependencies:
module: module:
- node - node
@ -328,7 +439,17 @@ processor_settings:
- tag_name - tag_name
- tag_synonyms - tag_synonyms
- thesaurus_name - thesaurus_name
- thesaurus_name_0
- thesaurus_name_1
- thesaurus_name_2
- thesaurus_name_3
- thesaurus_name_4
- thesaurus_synonyms - thesaurus_synonyms
- thesaurus_synonyms_0
- thesaurus_synonyms_1
- thesaurus_synonyms_2
- thesaurus_synonyms_3
- thesaurus_synonyms_4
- title - title
- type - type
- uuid - uuid

View File

@ -1,4 +1,4 @@
uuid: af25836c-6eca-4621-a803-7a7394fff660 uuid: dafb8d3b-f321-4b97-b412-40e1e6b66b25
langcode: en langcode: en
status: true status: true
dependencies: { } dependencies: { }

View File

@ -67,3 +67,46 @@ function materio_sapi_preprocess_fieldset(&$variables) {
$variables['legend']['attributes'] = new Attribute($variables['element']['#legend_attributes']); $variables['legend']['attributes'] = new Attribute($variables['element']['#legend_attributes']);
} }
} }
// ? https://happyculture.coop/blog/drupal-8-declarer-un-champ-extrafield-calcule-computed-field
/**
* Implements hook_entity_bundle_field_info().
*/
function materio_sapi_entity_bundle_field_info(\Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
$fields = [];
if ($entity_type->id() == 'node') {
if ($bundle == 'materiau') {
for ($i=0; $i < 5 ; $i++) {
$fields["thesaurus_$i"] = \Drupal\Core\Field\BaseFieldDefinition::create('entity_reference')
->setLabel(t("Thesaurus $i"))
->setComputed(TRUE)
->setSetting('target_type', 'taxonomy_term')
->setSetting('handler_settings',['target_bundles'=>['thesaurus'=>'thesaurus']] )
->setClass('\Drupal\materio_sapi\ThesaurusRefComputed')
->setDisplayConfigurable('view', FALSE);
}
}
}
return $fields;
}
// ? https://www.webomelette.com/creating-pseudo-fields-drupal-8
// /**
// * Implements hook_entity_extra_field_info().
// */
// function materio_sapi_entity_extra_field_info() {
// $extra = array();
// foreach (NodeType::loadMultiple() as $bundle) {
// $extra['node'][$bundle->Id()]['display']['my_own_pseudo_field'] = array(
// 'label' => t('My own field'),
// 'description' => t('This is my own pseudo-field'),
// 'weight' => 100,
// 'visible' => false,
// );
// }
// return $extra;
// }

View File

@ -0,0 +1,47 @@
<?php
namespace Drupal\materio_sapi;
use Drupal\Core\Field\EntityReferenceFieldItemList;
use Drupal\Core\TypedData\ComputedItemListTrait;
class ThesaurusRefComputed extends EntityReferenceFieldItemList {
use ComputedItemListTrait;
/**
* Computed related blog posts.
*/
protected function computeValue() {
$field_name = $this->getName();
switch ($field_name) {
case 'thesaurus_0':
$delta = 0;
break;
case 'thesaurus_1':
$delta = 1;
break;
case 'thesaurus_2':
$delta = 2;
break;
case 'thesaurus_3':
$delta = 3;
break;
case 'thesaurus_4':
$delta = 4;
break;
default:
$delta = -1;
break;
}
$thes_terms = $this->getParent()->getValue()->get('field_thesaurus')->getValue();
if (count($thes_terms) > 0) {
if (isset($thes_terms[$delta])) {
$term = $thes_terms[$delta];
$this->list[0] = $this->createItem(0, $term);
$t="t";
}
}
}
}