prevnext module
This commit is contained in:
@@ -9,7 +9,7 @@ dependencies:
|
||||
id: reha_contenudelapageprincipale
|
||||
theme: reha
|
||||
region: content
|
||||
weight: -5
|
||||
weight: -6
|
||||
provider: null
|
||||
plugin: system_main_block
|
||||
settings:
|
||||
|
||||
@@ -7,7 +7,7 @@ dependencies:
|
||||
id: reha_onglets
|
||||
theme: reha
|
||||
region: content
|
||||
weight: -6
|
||||
weight: -5
|
||||
provider: null
|
||||
plugin: local_tasks_block
|
||||
settings:
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
uuid: 5cc94347-dd4a-4c9f-896f-27367c9542ac
|
||||
langcode: fr
|
||||
status: true
|
||||
dependencies:
|
||||
module:
|
||||
- reha_mod
|
||||
theme:
|
||||
- reha
|
||||
id: reha_prevnextblock
|
||||
theme: reha
|
||||
region: content
|
||||
weight: -8
|
||||
provider: null
|
||||
plugin: prevnext_block
|
||||
settings:
|
||||
id: prevnext_block
|
||||
label: 'PrevNext Block'
|
||||
label_display: '0'
|
||||
provider: reha_mod
|
||||
visibility: { }
|
||||
@@ -3,3 +3,5 @@ type: module
|
||||
description: Provides additional functionality for the site.
|
||||
package: Custom
|
||||
core_version_requirement: ^9 || ^10
|
||||
dependencies:
|
||||
- drupal:block
|
||||
@@ -23,4 +23,5 @@ function reha_mod_form_node_operation_form_alter(&$form, \Drupal\Core\Form\FormS
|
||||
if($type === 'operation'){
|
||||
$form['field_adresse']['widget'][0]['#type'] = 'container';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace Drupal\reha_mod\Plugin\Block;
|
||||
|
||||
use Drupal\Core\Block\BlockBase;
|
||||
use Drupal\Core\Block\Attribute\Block;
|
||||
// use Drupal\Core\StringTranslation\TranslatableMarkup;
|
||||
use Drupal\Core\Link;
|
||||
use Drupal\Core\Render\Markup;
|
||||
|
||||
/**
|
||||
* Provides a 'Prevnext' Block.
|
||||
* @Block(
|
||||
* id = "prevnext_block",
|
||||
* admin_label = @Translation("PrevNext Block"),
|
||||
* )
|
||||
*/
|
||||
class PrevNext extends BlockBase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function build() {
|
||||
$return = null;
|
||||
/** @var Drupal\node\Entity\Node */
|
||||
$node = \Drupal::routeMatch()->getParameter('node');
|
||||
if ($node) {
|
||||
$nodetype = $node->getType();
|
||||
if($nodetype === "site"){
|
||||
$numerodesite = $node->get('field_numero_site')->getString();
|
||||
$allSites = \Drupal::entityTypeManager()->getStorage('node')
|
||||
->loadByProperties(['type' => 'site', 'status' => 1, 'field_type_de_site' => 1]);
|
||||
|
||||
|
||||
|
||||
usort($allSites, function($a, $b){
|
||||
$numA = $a->get('field_numero_site')->getString();
|
||||
$numB = $b->get('field_numero_site')->getString();
|
||||
if ($numA == $numB) {
|
||||
return 0;
|
||||
}
|
||||
return ($numA < $numB) ? -1 : 1;
|
||||
});
|
||||
$prevnode = null;
|
||||
$nextnode = null;
|
||||
foreach($allSites as $index => $site){
|
||||
$n = $site->get('field_numero_site')->getString();
|
||||
if($n === $numerodesite){
|
||||
$prevnode = $index - 1 >= 0 ? $allSites[$index - 1] : null;
|
||||
$nextnode = $index + 1 < count($allSites) ? $allSites[$index + 1] : null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
$return = [
|
||||
'#cache' => [
|
||||
'max-age' => 0,
|
||||
]
|
||||
];
|
||||
|
||||
if ($prevnode) {
|
||||
$prev_link_title = Markup::create('<span>Site pilote précédent</span>');
|
||||
$prev_options = ['absolute' => FALSE, 'attributes' => ['class' => 'prev-site']];
|
||||
$prev_link_object = Link::createFromRoute($prev_link_title, 'entity.node.canonical', ['node' => $prevnode->id()], $prev_options);
|
||||
$return[] = $prev_link_object->toRenderable();
|
||||
}
|
||||
|
||||
if ($nextnode) {
|
||||
$next_link_title = Markup::create('<span>Site pilote suivant</span>');
|
||||
$next_options = ['absolute' => FALSE, 'attributes' => ['class' => 'next-site']];
|
||||
$next_link_object = Link::createFromRoute($next_link_title, 'entity.node.canonical', ['node' => $nextnode->id()], $next_options);
|
||||
$return[] = $next_link_object->toRenderable();
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
// return [
|
||||
// '#markup' => $this->t('Hello, World!'),
|
||||
// ];
|
||||
}
|
||||
public function getCacheMaxAge() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user