samoht Posted July 31, 2008 Share Posted July 31, 2008 hello all, I am trying to create a module for the backend user that will enable them to specify titles and contents to be displayed in an accordion. I want to give them the option of having the titles above each content pane (like a traditional accordion) or besides the content panes. I have created my module for the most part - and have the traditional set up working fine, but I would like to clean it up a little. First, I would like to loop through all the items to see which is active. <?php //Collect Parameters $layout=$params->get('layout'); $headercol=$params->get('headercol'); $headercolbg=$params->get('headercolbg'); $item1=$params->get('item1'); $item2=$params->get('item2'); $item3=$params->get('item3'); $item4=$params->get('item4'); $item5=$params->get('item5'); $item6=$params->get('item6'); $item7=$params->get('item7'); $item8=$params->get('item8'); $item9=$params->get('item9'); $item10=$params->get('item10'); $title1=$params->get('title1'); $title2=$params->get('title2'); $title3=$params->get('title3'); $title4=$params->get('title4'); $title5=$params->get('title5'); $title6=$params->get('title6'); $title7=$params->get('title7'); $title8=$params->get('title8'); $title9=$params->get('title9'); $title10=$params->get('title10'); $code1=$params->get('code1'); $code2=$params->get('code2'); $code3=$params->get('code3'); $code4=$params->get('code4'); $code5=$params->get('code5'); $code6=$params->get('code6'); $code7=$params->get('code7'); $code8=$params->get('code8'); $code9=$params->get('code9'); $code10=$params->get('code10'); this retrieves the info from the module. $item will be a booleen 0 or 1 to determine if they want to use that content in the accordion. echo '<script type="text/javascript"> window.addEvent("domready", function(){ var accordion = new Accordion("h5.atStart", "div.atStart", { opacity: false, onActive: function(toggler, element){ toggler.setStyle("color", "'.$headercol.'"); }, onBackground: function(toggler, element){ toggler.setStyle("color", "'.$headercolbg.'"); } }, $("accordion")); }); </script>'; This is the js code that will be inserted. (I'm not sure this will work for the accordion with the titles on the side?) then a little condition to see if we are "on top" or "besides" if($layout==1){ Currently this is how I have the code for the accordion with titles on top: if($item1==1){ echo ' <h5 class="toggler atStart">'.$title1.'</h5> <div class="element atStart"> '.$code1.' </div>'; } if($item2==1){ echo '... rather than go through with a condition on each item I would like to setup an array that contains all my items with their booleen value then loop through the arrray to find the items I want to echo. Then once I get that set up correctly - I can begin coding the output for the accordion with titles on the side. Any ideas?? thanks Link to comment https://forums.phpfreaks.com/topic/117593-php-accordion-content-help/ Share on other sites More sharing options...
samoht Posted August 1, 2008 Author Share Posted August 1, 2008 I suppose to simplify my first question I could ask this way: how do get the information from my other variables if I make an array for the $items like: $myItems = array($item1,$item2,$item3,$item4,$item5,$item6,$item7,$item8,$item9,$item10); foreach( $myItems as $myItem) { if($myItem==1){ //this is where I need to echo my title and code but I don't know how to match it with the item? } } Dose this make sense? Link to comment https://forums.phpfreaks.com/topic/117593-php-accordion-content-help/#findComment-605538 Share on other sites More sharing options...
samoht Posted August 4, 2008 Author Share Posted August 4, 2008 ok I solved the loop issue like this: <?php $row1 = array($params->get('item1'),$params->get('title1'),$params->get('code1')); $row2 = array($params->get('item2'),$params->get('title2'),$params->get('code2')); $row3 = array($params->get('item3'),$params->get('title3'),$params->get('code3')); $row4 = array($params->get('item4'),$params->get('title4'),$params->get('code4')); $row5 = array($params->get('item5'),$params->get('title5'),$params->get('code5')); $row6 = array($params->get('item6'),$params->get('title6'),$params->get('code6')); $row7 = array($params->get('item7'),$params->get('title7'),$params->get('code7')); $row8 = array($params->get('item8'),$params->get('title8'),$params->get('code8')); $row9 = array($params->get('item9'),$params->get('title9'),$params->get('code9')); $row10 = array($params->get('item10'),$params->get('title10'),$params->get('code10')); if($layout==1){ //Place user snippets in accordion structure $myitems = array($row1,$row2,$row3,$row4,$row5,$row6,$row7,$row8,$row9,$row10); echo '<div id="accordion" style="margin-top:'.$margintop.'px;margin-bottom:'.$marginbottom.'px">'; foreach ($myitems as $myitem){ if($myitem[0]==1) { echo ' <h5 class="toggler atStart">'.$myitem[1].'</h5> <div class="element atStart"> '.$myitem[2].' </div>'; } } } else { $myitems = array($row1,$row2,$row3,$row4,$row5,$row6,$row7,$row8,$row9,$row10); echo '<div id="submenu">'; echo '<h3 class="sub">Treatments</h3>'; foreach ($myitems as $mytitle){ if($mytitle[0]==1) { echo '<h5 class="toggler atStart">'.$mytitle[1].'</h5>'; } } echo '</div>'; echo '<div class="page_text">'; foreach ($myitems as $mypanel){ if($mypanel[0]==1) { echo '<div class="element atStart">'.$mypanel[2].'</div>'; } } echo '</div>'; } which loads everything properly - but the js for the accordion does not work if the title menu is beside the panels Any pointers on how to fix this? - I would really like to have the js code work for both positions. I realize that this is not really a php question now, sorry Link to comment https://forums.phpfreaks.com/topic/117593-php-accordion-content-help/#findComment-607828 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.