Сегодня столкнулся с тем что, API функция getChildIds (выдает список id дочерних элементов на всю глубину вложенности) после обновления движка Modx Evolution с версии 1.0.2 до 1.0.5 перестала правильно выдавать количество строк. Перековыряв весь сниппет TvTagCloud, в котором проблема выявилась острее всего, оказалось, что все таки проблема в последней версии движка.

Сама функция находится в файле document.parser.class.inc.php. Недолго думая, скопировал всю функцию из движка 1.0.2 в версию 1.0.5 и вуаля, все стало на свои места.

 

function getChildIds($id, $depth= 10, $children= array ()) {
        $c= null;
        foreach ($this->documentMap as $mapEntry) {
            if (isset ($mapEntry[$id])) {
                $childId= $mapEntry[$id];
                $childKey= array_search($childId, $this->documentListing);
                if (!$childKey) {
                    $childKey= "$childId";
                }
                $c[$childKey]= $childId;
            }
        }
        $depth--;
        if (is_array($c)) {
            if (is_array($children)) {
                $children= $children + $c;
            } else {
                $children= $c;
            }
            if ($depth) {
                foreach ($c as $child) {
                    $children= $children + $this->getChildIds($child, $depth, $children);
                }
            }
        }
        return $children;
    }
comments powered by HyperComments
Понравился материал - нажмите, пожалуйста, на кнопку
=)