[Tips] 해당 메뉴에 속한 모든 하위 메뉴 구하기
2021.07.25 04:38
65
0
https://eond.com/440080

모바일 레이아웃을 제작 중에, 하단에 사이트바를 넣었습니다.

1차 메뉴 아래 2차, 3차메뉴 어디를 접속하든, 

해당 메뉴에 불이 켜지게 하고 싶었습니다.


1. 해당 하위 메뉴 구하기

<?php
$reg = "/\/|\#|\:|\?|\=|\.|\&/";
foreach($__Context->main_menu as $key=>$val1){
   foreach($val1 as $key2=>$val2){
      echo "'".preg_replace($reg,"",$val2['href'])."',";
      foreach($val2 as $key3=>$val3){
         foreach($val3 as $key4=>$val4){
            echo "'".preg_replace($reg,"",$val4['href'])."',";
               foreach($val4 as $key5=>$val5){
                  foreach($val5 as $key6=>$val6){
                     echo "'".preg_replace($reg,"",$val6['href'])."',";
                  }
               }
         }
      }
      echo "<br>";
   }
}
?>

$reg는 문자열 변환 정규식입니다.

/,#,:,?,.,=,& 같은 문자는 모두 공백으로 만들어줍니다.

아래에 여러번 쓰이기 때문에 $변수화시켜줬습니다.


$__Context->main_menu는 XE의 문법을 PHP 코드에 활용하기 위해서 앞에 $__Context->를 붙여줬습니다.

원래 XE에서는 $main_menu로 쓰고 있습니다.


foreach문을 여러번 써줬는데 메뉴가 저런 식으로 구성되어있더군요. 중첩에 중첩에.. 왜 저런지는 모르겠습니다만 

일단 저렇게 해줘야 출력되어서 저렇게 써줬습니다-_-;


preg_replace("찾는문자","바꿀문자","대상문자") 이렇습니다.


2. 배열로 만들기

1번 과정에서 해당 메뉴에 있는 하위 메뉴를 모두 구해왔다면 이제 배열로 다 담아줍니다.

{@

$store = array('shop','shop','shop','store_wordpress','gnu_market','store_cafe24','store_excel','design_market','pointcharge','pointcharge','httpseondcomindexphpactdispPointhistoryListamp;midpointcharge','market_point','xe_refund','plusad','manual','manual_layout','manual_widget','manual_widgetskin','manual_widgetstyle','manual_module','manual_addon','version','xe_download','xe_download','xe_data','xe_idea','xe_market','shop_guide');
$experts = array('process','process','project_consulting','request','order','portfolio','portfolio_cms','preview','portfolio_xe','client_interview','myprojects','licensekey','cart','xe_myshop','paylog','price','httpseondcompricea','httpseondcompriceb','httpseondcompricec');
$hosting = array('hosting','hosting_forum','hosting_faq');
$webdeveloper = array('web','web','about_webdeveloper','tip','link','cms','xe','rhymix','xe_devtip','wordpress','gnuboard','cafe24','godomall','zeroboard4','ciboard','xe3','cms_qna','cms_experts','xe_link','webplanning','uiplan','webservice','project_review','companyreview','webdesign','design','uidesign','Adobe','collection','frontend','coding','css','javascript','developer','interview','itworks','php','hancoding','android','openapi','arduino','python','flutter','bot','qa_about','qa_about','qa_consulting','qos','qa_test','webaccessibility','qa_faq','download','memobook','software','cgi','jwfreenote','ietoy_download','phpstorm','webstorm','editplus','sublime','intellij','vscode');
$community = array('todak','todak','timeline','talks','qna','localgram','fun','topiktalks','music','liberalarts','mac','openkakao','noodle','food','coffee','wine','diy','onlinecommunity','humanrights','life','ppomppu','chair','sofas','interior','salze','mvno','hair','tip_life','wedding','parenting','share','sale','buy','coworking','freemarket','policy','law','live','lawguide','livewith','carwash','fintech','apt','stock','business','campaign','incruit','project','welfare','itcoop','hello','attendance','hello','memolog','pr');

}


3. 메뉴에 조건문 걸기

<li class="on"|cond="in_array($mid, $community)">
    <a href="/todak">
        <img src="assets/img/ico-community.svg" alt="커뮤니티">
        <span>커뮤니티</span>
    </a>
</li>

cond="in_array($mid, $community)"는 mid가 $community라는 배열문 안에 있는 문자의 경우 조건문이 발동하게 됩니다.


ps. 늘 오픈카톡방에서 이런 질문을 같이 찾아주시는 분들 감사합니다. -_-)/; 참여 원하시는 분들은 같이 이야기 나눠요~

https://open.kakao.com/o/giaKKnl



참조

https://www.hooni.net/xe/study/5645

https://blog.naver.com/PostView.nhn?blogId=reviewer__&logNo=221424138188

https://extbrain.tistory.com/24

https://xe1.xpressengine.com/qna/22012930

https://xe1.xpressengine.com/qna/21246875

https://xetown.com/tips/1132274

https://xe1.xpressengine.com/qna/23182018

https://hamait.tistory.com/342

https://webisfree.com/2014-08-29/[php]-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%97%90%EC%84%9C-%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8B%A4%EB%A5%B8-%EB%AC%B8%EC%9E%90%EB%A1%9C-%EC%B9%98%ED%99%98-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D-%EC%82%AC%EC%9A%A9



라이믹스는 이온디와 함께

닫기

마이페이지

로그인을 해주세요

네이버로 로그인