In our opinion there is optimisation need in page generation time, visualisation of the content parts in the backend and the menu replacement tags. We made some work-arounds, will post our results here from time to time. Please excuse if similar solutions are posted somewhere else on this forum -> we are one-week-newbies and have no complete overview
![Wink ;-)](/web/20090302171453im_/http://forum.phpwcms.org/images/smilies/icon_wink.gif)
Custom menu: We needed a special menu showing ONLY the second level menu items of the actual selected group. For example:
- Code: Select all
[0] Home
[1] About Us
[2] Contact
[3] News
[4] Product
[] Product 1-1
[] Product 1-2
[] Product 1-2-1
[] Product 1-2-2
[] Product 1-2-3
[] Product 1-3
[] Product 1-4
[5] Company
[] Company 1-1
[] Company 1-2
[] Company 1-3
[] Company 1-3-1
[] Company 1-3-2
[] Company 1-3-3
[] Company 1-4
[] Company 1-5
[] Company 1-5-1
[6] Contact
If the actual page is Company 1-3-1 (third level) we only want to show Company 1-1...Company 1-5 in the menu. If the actual page is the Product main page we only want to show Product 1-1...Product 1-4. Same as we are in Product 1-1 or 1-2-3.
Problem: If you are in a sub-menu the $Globals dont delivers the specific id of the first level page. But we can read out the ["acat_struct"] to get this (for better understanding we dont nest it here in a for... loop and request only 7 levels up):
- Code: Select all
[PHP]
$actual_ebene = $GLOBALS[content][cat_id];
$request_ebene = $actual_ebene;
$ebene_ho1 = $GLOBALS[content][struct][$request_ebene]["acat_struct"];
if($ebene_ho1 > 0){$request_ebene = $ebene_ho1;}
$ebene_ho2 = $GLOBALS[content][struct][$ebene_ho1]["acat_struct"];
if($ebene_ho2 > 0){$request_ebene = $ebene_ho2;}
$ebene_ho3 = $GLOBALS[content][struct][$ebene_ho2]["acat_struct"];
if($ebene_ho3 > 0){$request_ebene = $ebene_ho3;}
$ebene_ho4 = $GLOBALS[content][struct][$ebene_ho3]["acat_struct"];
if($ebene_ho4 > 0){$request_ebene = $ebene_ho4;}
$ebene_ho5 = $GLOBALS[content][struct][$ebene_ho4]["acat_struct"];
if($ebene_ho5 > 0){$request_ebene = $ebene_ho5;}
$ebene_ho6 = $GLOBALS[content][struct][$ebene_ho5]["acat_struct"];
if($ebene_ho6 > 0){$request_ebene = $ebene_ho6;}
$ebene_ho7 = $GLOBALS[content][struct][$ebene_ho6]["acat_struct"];
if($ebene_ho7 > 0){$request_ebene = $ebene_ho7;}
$GLOBALS["spec_hauptmenuebene"] = $request_ebene;
[/PHP]
Now we have the ID of the first level in the new $GLOBALS["spec_hauptmenuebene"] and use it in the page like this:
- Code: Select all
[PHP]
$hauptmenuebene=$GLOBALS["spec_hauptmenuebene"];
$keys = array_keys($GLOBALS[content][struct]);
$coun = count($GLOBALS[content][struct]);
for ($a = 0; $a < $coun; $a++) {
if($GLOBALS[content][struct][$keys[$a]][acat_struct] == $hauptmenuebene && $GLOBALS[content][struct][$act_area][acat_hidden] ==0){
$subm_arr[] = $GLOBALS[content][struct][$keys[$a]][acat_name];
$subm_lnk[] = $GLOBALS[content][struct][$keys[$a]][acat_alias];
}
}
if(isset($subm_arr)){
$lk = 0;
foreach ($subm_arr as $value) {
echo "<li><a href=index.php?".$subm_lnk[$lk].">".$value."</a></li>";
$lk += 1;
}
}
unset($subm_arr);
unset($subm_lnk);
[/PHP]