Content-A. Tuning

Gesperrt
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Content-A. Tuning

Beitrag von OliverL »

Ich beschäftige mich gerade ein bisschen mehr mit CA und wühle mich ein bisschen durch die Classen. Dabei ist mir folgendes aufgefallen:

Ich benutze:
Contenido 4.8.8
CA.-Plugin 4.8.10
MySQL 5.0.51a

Übersicht
1. Master-Baum Sortierung
2. Tuning für große Bäume
3. menuless

Master-Baum Sortierung
Wenn ich einen neuen Haupt-Baum anlege bekommt dieser immer 'sortorder = 1' was zur folge hat das alle Bäume mit 'parentid = 0' nicht Sortiert werden können.
File: class.content_allocation_tree.php Zeile: 502-506
Original:

Code: Alles auswählen

if ($parentId === false) {
    $sql .= " WHERE parentid IS NULL";	
} else {
    $sql .= " WHERE parentid = " . Contenido_Security::toInteger($parentId);
}
Neu:

Code: Alles auswählen

$sql .= " WHERE parentid = " . Contenido_Security::toInteger($parentId);
So funktioniert es bei mir.


Tuning für große Bäume
File: class.content_allocation_tree.php Zeile: 166-176
Original:

Code: Alles auswählen

if (count($result_tmp) > 0) {
    $result = array(); // result array
    foreach ($result_tmp as $rs) { // run results
        $children = $this->fetchTree($rs['idpica_alloc'], $level + 1, $bUseTreeStatus);
        if ($children !== false && $rs['status'] == 'expanded') {
            $rs['children'] = $children;	
        }
        array_push($result, $rs);
    }
    return $result;
} else
Neu:

Code: Alles auswählen

if (count($result_tmp) > 0) {
    $result = array(); // result array
    foreach ($result_tmp as $rs) { // run results
        if ($rs['status'] == 'expanded') {      // -- NEW ----------------
            $children = $this->fetchTree($rs['idpica_alloc'], $level + 1, $bUseTreeStatus);
            if ($children !== false) {      // -- MODIFIED ----------------
                $rs['children'] = $children;	
            }
        }      // -- NEW ----------------
        array_push($result, $rs);
    }
    return $result;
} else
Bei dem neuen Code wird erst abgefragt ob der Punkt offen (expanded) ist und wenn ja dann werden die kinder (children) versucht zuholen.

Natürlich wird das erst wirksam wenn man sehr sehr große Bäume hat.

menuless
Bei der Area 'content_allocation' kann man 'menuless' auf 1 setzen. Somit werden die beiden linken Frames nicht geladen.

Code: Alles auswählen

UPDATE con_area SET menuless = '1' WHERE name = 'content_allocation' LIMIT 1;

mfg OliverL
Gesperrt