@@ -136,3 +136,61 @@ function fds_fredericia_theme_preprocess_node(array &$variables) {
136
136
}
137
137
}
138
138
}
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