Node_save и сохранить ручками. не хватает проверок при node_save

Аватар пользователя voviko voviko 14 мая в 14:37

Суть проблемы. Иногда термины при просмотре через taxonomy_get_parents_all перемешиваются.
Как и почему не суть, хотя тоже интересует ваше мнение.
Иерархия сохраняется, но вот при выдаче taxonomy_get_parents_all сортировка не верная.
Решается данная проблема через ресейв ноды руками.
Необходимо выловить функции валидации и сортировки иерархии таксономии при вызове node_save.
Может есть решение без node_save
Какие есть варианты? спасибо.

0 Thanks

Комментарии

Аватар пользователя voviko voviko 15 мая в 10:14

Набросал небольшой тест. Два вывода по функции.
1-й До пересохранения ноды
2-й после сохранения
По сути меняется только порядок сортировки терминов в node.
наверно можно переформулировать вопрос так: Как при node_save сортировать термины в правильном порядке. Написать могу, мне бы из коробки решение, которое срабатывает при нажатии на кнопку.

<?php
 $terms 
taxonomy_get_tree(33461);
    print 
'-Баки и емкости'.'<br>';;
    foreach (
$terms as $term) {
       
// print_r($term->parents);
        
$parents taxonomy_get_parents_all($term->tid);
        print 
str_repeat('-'count($parents)).$term->name.'<br>';
    }
    print 
'<br>';
    
$terms taxonomy_get_parents_all(3464);
    foreach (
$terms as $term) {
        
$parents taxonomy_get_parents_all($term->tid);
        print  
str_repeat('-'count($parents)).$term->name.'<br>';
    }

    print 

'<br>';
    print 
'<b>Вывод  терминов из Node</b><br>';
    print 
'<br>';
    
$node node_load(56040);
    foreach (
$node->field_categorys['und'] as $row) {
        print  
taxonomy_term_load($row['tid'])->name.'<br>';
    }
?>

До сохранения
-Баки и емкости
--Гидроаккумуляторы
---EVAN WATV
--Комплектующие
--Мембраны
--Расширительные баки
---EVAN HIT
--Емкости для воды
--Емкости для топлива

--Гидроаккумуляторы
-Баки и емкости

Вывод терминов из Node

Гидроаккумуляторы
Баки и емкости

После сохранения
-Баки и емкости
--Гидроаккумуляторы
---EVAN WATV
--Комплектующие
--Мембраны
--Расширительные баки
---EVAN HIT
--Емкости для воды
--Емкости для топлива

--Гидроаккумуляторы
-Баки и емкости

Вывод терминов из Node

Баки и емкости
Гидроаккумуляторы

Аватар пользователя sas@drupal.org sas@drupal.org 15 мая в 10:34
1

В коробке сохранение ноды не меняет сортировку терминов, но если надо то Вы конечно можете поставить им другие weight и сохранить через taxonomy_term_save

Аватар пользователя voviko voviko 15 мая в 11:20
<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

В коробке сохранение ноды не меняет сортировку терминов, но если надо то Вы конечно можете поставить им другие weight и сохранить через taxonomy_term_save

У меня что-то меняет. пример выше.
возможно taxonomy_set_linege.
А вот реверсивная иерархия, (А у меня скорее всего так и есть) , скорее залетает через feeds
Поставил костыль:

<?php
    $parents 
taxonomy_get_parents(end($node->field_categorys['und']));
    if(empty(
$parents)) {
        
$node->field_categorys['und'] = array_reverse($node->field_categorys['und']);
    }
?>