Skip to content

Commit df74b60

Browse files
committed
Fredericia WQK-290-58937 fix sort kode
1 parent daf2ff3 commit df74b60

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

web/themes/custom/subsites/fds_fredericia_theme/fds_fredericia_theme.theme

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,61 @@ function fds_fredericia_theme_preprocess_node(array &$variables) {
136136
}
137137
}
138138
}
139+
140+
141+
142+
function fds_fredericia_theme_views_pre_render(Drupal\views\ViewExecutable &$view) {
143+
144+
if ($view->id() == 'taxonomy_term' && count($view->result) > 1) {
145+
146+
$resultSort = [];
147+
148+
if (\Drupal::routeMatch()->getRouteName() == 'entity.taxonomy_term.canonical') {
149+
$tax_id = \Drupal::routeMatch()->getRawParameter('taxonomy_term');
150+
151+
foreach ($view->result as $itemIdx => &$item) {
152+
$node = $node = \Drupal\node\Entity\Node::load($item->nid);
153+
if ($node && $node->hasField('field_os2web_page_section_sort')) {
154+
155+
$sorting_found = false;
156+
$sections = $node->get('field_os2web_page_section_sort');
157+
foreach ( $sections->referencedEntities() AS $idx => $paragraph ) {
158+
if ($paragraph->hasField('field_os2web_page_section_sort') && $paragraph->hasField('field_sorting')) {
159+
if ($paragraph->field_os2web_page_section_sort->target_id == $tax_id) {
160+
$sorting_found = true;
161+
$resultSort[] = (object) array(
162+
'name' => $node->getTitle(),
163+
'sort' => $paragraph->field_sorting->value,
164+
'itemIdx' => $itemIdx
165+
);
166+
}
167+
}
168+
}
169+
170+
if (!$sorting_found) {
171+
$resultSort[] = (object) array(
172+
'name' => $node->getTitle(),
173+
'sort' => ((count($view->result) + $itemIdx) * 100),
174+
'itemIdx' => $itemIdx
175+
);
176+
}
177+
}
178+
}
179+
180+
$sort = array();
181+
foreach ( $resultSort AS $key => $row ) {
182+
$sort[$key] = $row->sort;
183+
}
184+
array_multisort($sort, SORT_ASC, $resultSort);
185+
186+
$res = array();
187+
foreach ( $resultSort AS $sortRow ) {
188+
$res[] = $view->result[$sortRow->itemIdx];
189+
}
190+
191+
$view->result = $res;
192+
193+
}
194+
}
195+
196+
}

0 commit comments

Comments
 (0)