질문/조언질답게시판

게시판이 아닌 다른 서드파티에서 문서와 다르게 새글표시를 별도로 해주기 위해 새글표시모듈에서 처리되고 있는 새글,새댓글 상태인지 확인이 필요한데요.


        /**
         * @brief new 적용. 모듈 실행 여부만 확인한 후 _procNew() 함수를 실행한다.
         * @param[out] $menu_list 새글 표시를 적용할 메뉴 정보
         **/
        function procNew(&$menu_list) {
            if (Context::getResponseMethod() != 'HTML' || Context::get('module') == 'admin') return;

            $oMenuNewModel = getModel('zzz_menu_new');
            $config = $oMenuNewModel->getConfig();
            $site_info = Context::get('site_module_info');
            if ($config->use_menu_new != 'Y')   return;

            $this->_procNew($menu_list, $config, $site_info->site_srl);
        }

        /**
         * @brief new 적용 (재귀)
         * @param[out] $menu_list 새글 표시를 적용할 메뉴 정보
         * @param[in] $config 환경설정 정보
         * @param[in] $site_srl 현재 메뉴가 속한 가상 사이트 번호
         *
         * 메뉴 정보를 재귀적으로 돌면서 새글 표시를 적용한다.
         * 새 글/댓글 여부는 캐시 파일을 이용하여 확인하는데 메뉴 링크에서 mid를 추출하여
         * 해당하는 캐시 파일을 include하여 마지막 글/댓글의 시간을 알아낸다.
         **/
        function _procNew(&$menu_list, &$config, &$site_srl) {
            if (!count($menu_list)) return;

            $is_new = false;
            foreach($menu_list as $menu_srl => $menu_item)
            {
                $regdate = 0;
                $regdate_com = 0;
                $game = '0';

                // 하위 메뉴가 있으면 먼저 처리
                $is_sub_new = false;
                if(count($menu_item['list']))
                {
                    $is_sub_new = $this->_procNew($menu_list[$menu_srl]['list'], $config, $site_srl);
                }

                // mid, category_srl 구하기
                $oMenuNewModel = getModel('zzz_menu_new');
                $mid = $oMenuNewModel->getMid($menu_item['url']);
                $category_srl = $oMenuNewModel->getCategorySrl($menu_item['url']);

                // 해당 mid에 새글 표시 사용인지 확인
                $is_use = in_array($mid, $config->mid_list2);
                if ($config->select_module_mode == 'out')   $is_use = !$is_use;
                if (!count($config->mid_list2))    $is_use = true;

                if (!empty($mid) && $is_use) {
                    // 현재 메뉴의 마지막 글 시간
                    // 카테고리 메뉴이면 카테고리를 이용한다.
                    if ($category_srl) {
                        $cache = sprintf("%s/category_doc.%d.php", $this->menu_new_cache_path, $category_srl);
                        @include $cache;
                    }else{
                        $cache = sprintf("%s/%d.%s_doc.php", $this->menu_new_cache_path, $site_srl, $mid);
                        @include $cache;

                        // 현재 메뉴의 마지막 댓글 시간
                        if ($config->use_comment == 'Y') {
                            $cache = sprintf("%s/%d.%s_com.php", $this->menu_new_cache_path, $site_srl, $mid);
                            @include $cache;
                        }
                    }
                }
                // 설정된 시간 이내 새글이 있으면 new 이미지 추가
                if (($config->up_new == 'Y' && $is_sub_new == MENU_NEW_DOCUMENT) || intVal($config->time_check) < intVal($regdate) ) {
                    if (!empty($menu_item['link']))   $menu_list[$menu_srl]['link'] .= $config->new_image_tag;
                    if ($config->text_new == 'Y' && !empty($menu_item['text']))   $menu_list[$menu_srl]['text'] .= $config->new_image_tag;
                    $is_new = MENU_NEW_DOCUMENT;
                }
                // 설정된 시간 이내 새 댓글이 있으면 new 이미지 추가
                else if (($config->up_new == 'Y' && $is_sub_new == MENU_NEW_COMMENT) || intVal($config->time_check) < intVal($regdate_com)) {
                    if (!empty($menu_item['link']))   $menu_list[$menu_srl]['link'] .= $config->new_comment_image_tag;
                    if ($config->text_new == 'Y' && !empty($menu_item['text']))   $menu_list[$menu_srl]['text'] .= $config->new_comment_image_tag;

                    // 메뉴 중 하나라도 새글이 없을 때만 새댓글 표시한다.
                    if ($is_new != MENU_NEW_DOCUMENT){
                        $is_new = MENU_NEW_COMMENT;
                    }
                }

            }

            return $is_new;
        }

 

아마 위 부분이 가장 관련 높은 부분 같습니다.

 

 

제가 원하는 특정메뉴가 저 값을 가지고 있는지 여부를 확인하고 싶습니다.

 

$is_new 가 없다면 혹은 있다면 으로 확인하면 될까요??

 

 

레이아웃에서 활용하려면 

{@ $oZzz_menu_newController = getController('zzz_menu_newController');}

 

이렇게 불러와야 하나요??

 

메뉴를 반복문으로 출력하는 부분에 조건을 걸려고 합니다. 

<[email protected](!$is_new)-->별도의 새글 표시 코드<[email protected]>

 

메뉴 출력하는 곳 array 값을 확인해보니 

$val['node_srl']   이 값이 메뉴의 번호일 것 같습니다. 이 특정한 메뉴가 새글,새댓글 값을 가지고 있는지 확인하면 될 것 같기도 한데요.

 

  • profile
    일단 따로 처리하려는 메뉴 자체는 별다른 조건이 필요 없어서 처리를 했는데 본문에 제가 필요한 내용을 적용할 수 가 없어 상위메뉴에 올림으로 새글 표시가 되는 부분은 다른 메뉴에서 올림으로 새글이 표시되면 중복으로 새글표시가 2번 처리가 되는 상황이네요.

    본문에 제가 필요한 조건을 걸 수 있으면 좋겠습니다.
  • profile
    아주 간단하게 그냥 메뉴명에 img가 붙어있지 않으면 이라는 조건으로 해결했습니다.

    !strpos($val['text'], 'img')