질문/조언질답게시판

 

module_extra_vars 테이블에 저장된 각 값들을 이용하려고 하는데요. 

 

ex)  ->meta_description  이 값을 가져와서 사용하려고 합니다.

 

사용하려는 곳은 애드온이구요.

 

$called_position == "before_display_content" 여기서 사용하려고 합니다.

  • profile
    modules_srl 을 사용하시는건가요?
  • profile

    일반적으로
    $args = new stdClass;
    $args->module_srl = $module_srl;
    executeQuery('module.getModuleExtraVars', $args);

    이렇게 하면 해당 모듈의 extra_vsars를 복수로 가져옵니다.

    그렇지만 이렇게 보통하는 경우는 없죠. $module_srl 을 가져올 수 잇는 상황만 확실하다면
    getModel('module')->getModuleInfoByModuleSrl($module_srl);
    으로만으로 해당 모듈의 확장변수까지 함께 포함해서 나옵니다.

     

    $module_srl 을 가져올 수 잇는 방법으로는

     

    $mid 만 알경우 getModel('module')->getModuleInfoByMid($mid) 이렇게 사용하시면 똑같은 효과를 가져옵니다.

     

  • profile profile
    getModel('module')->getModuleInfoByMid($mid)

    를 쓴다면

    이후 meta_description 값만 담는다면 어떻게 담나요?
  • profile profile

    meta_description 을 담는다는게 해당 모듈의 확장변수로 담는건가요?

    moduleinfo 가져온다음 해당 모듈인포를 가지고

    $module_info->meta_description = 'data';
    getController('module')->updateModule($module_info);

    근데 이건 서드파티에서 따로 넣는거니까, 일반 게시판 모듈같이 해당 옵션이 없는 모듈에서 설정저장시 에러가 날 수 있습니다.

    충돌이 나서 동작이 애매해질 수 있어요. (해당동작은 한번만 실행될 수 있어야 합니다.)

     

    그런다음 다시 getModuleInfo~~~ 으로 가져와서 $module_info->meta_description 하시면 나와요.

  • profile profile
    그냥 변수에 담을 생각입니다.

    getModel('module')->getModuleInfoByMid($mid);
    변수 = $module_info->meta_description = 'data';

    이렇게 하면 되는거가요?
  • profile profile
    넵 그렇게 하시면 되요.

    $module_info 가져온 곳에서 따로 지정해주시면 되요
  • profile profile

    getModel('module')->getModuleInfoByMid($mid);
    변수 = $module_info->meta_description

    요렇게 해서 성공한줄 알았는데 아니네요. 빈 값이 나오네요....  

    $mid는 제대로 값 인식되게 했습니다.

  • profile profile
    $oModuleModel = getModel('module');
    $module_info = $oModuleModel->getModuleInfoByMid(Context::get('mid'));
    $meta_des = $module_info->meta_description;


    요렇게 해서 최종 성공했습니다.

    사용하려는 애드온은 트위터카드 메타태그 만들어주는 애드온에 상요했습니다.

    else
    {
    $oModuleModel = getModel('module');
    $module_info = $oModuleModel->getModuleInfoByMid(Context::get('mid'));
    $meta_des = $module_info->meta_description;

    $title = $module_info->browser_title;
    $filePath = $addon_info->logo;
    if($meta_des){
    $content = $meta_des;
    }else{
    $content = $addon_info->content;
    }

    요렇게 수정해서 모듈의 SEO 정보와 모듈의 브라우저타이틀을 먼저 참조하게 하고 그 후에 입력된게 없다면 애드온에 입력된 것을 사용하게 고쳤습니다.