Extra Form
PHP PHP 8.1
CMS Rhymix 2.1

다른건 검색을 해도 다 나오는데...

 

이 에러는 나오질 않네요..ㅠㅠ

 

{@

$widget_info = $widget_info ?? new stdClass();

$cols = $widget_info->cols_list_count;

if($widget_info->cols_list_count < 3)

$cols=6;

elseif($widget_info->cols_list_count == 3)

$cols=4;

elseif($widget_info->cols_list_count == 4)

$cols=3;

elseif($widget_info->cols_list_count > 4)

$cols=2;

else

$cols=$widget_info->cols_list_count;

end

}

 

이 문장에서 end에서 에러를 뿜어요..

 

Error #0 "Undefined constant "end"" in widgets/rhythm_content/skins/rhythm_basic/webzine.html on line 17

 

 

 

혹시 아시는 분 계실까요...

  • profile

    endif;

     

    if로 시작했으면 endif; 로 끝나고, for로 시작했으면 endfor; 로 끝납니다. 모든 루프문 공통입니다.

    그냥 end만 쓰는 것은 XE 템플릿 문법에서만 통합니다. <!--@if(조건)--><!--@end-->

  • profile ?
    해결했습니다... endif; 를 삭제하니 돌아가네요?;;; ㅠㅠㅠㅠ
  • ?
    감사합니다.. endif; 로 바꾸었더니...

    ParseError #0 "syntax error, unexpected token "endif", expecting end of file"

    이렇게 에러가 나네요... 하하하 ㅠㅠ
  • ? profile
    저 if문은 전부 한줄짜리 if문이라 별도로 endif가 필요치 않습니다. endif가 필요한건 아래 if 문법입니다.

    if(조건):
    내용
    endif;

    php 버전이 낮을땐 정의되지 않은 상수 취급이지만 경고정도로 넘어갔던것이 8부터 오류가 되며 문제가 된 것으로 애초에 저 end는 존재할 이유가 없었습니다.
  • profile ?
    아.. 두 분 다 좋은 답변 누르려고 하니.. 정회원 등업하라고 하네요. ㅠㅠ

    php 초창기에 잠시 건드려보고.. 진짜 거진 20년 지나서 보려고 하니 그냥 깜깜이네요.. ㅠㅠ

    감사합니다~
  • profile

    간단한 수정정도는 ChtGPT에 물어보면 큰 도움이 됩니다.
    소스코드, 에러내용, 요구사항을 던져주고 수정해달라고 하면 잘 수정해줍니다.
    ---------------------------------------------------------

    아래 코드를 php 8.2에 맞게 수정해줘.

    {@
    $widget_info = $widget_info ?? new stdClass();
    $cols = $widget_info->cols_list_count;
    if($widget_info->cols_list_count < 3)
    $cols=6;
    elseif($widget_info->cols_list_count == 3)
    $cols=4;
    elseif($widget_info->cols_list_count == 4)
    $cols=3;
    elseif($widget_info->cols_list_count > 4)
    $cols=2;
    else
    $cols=$widget_info->cols_list_count;
    end
    }
    ------------------------------------------
    아래와 같은 답변을 줬는데 코드를 넣어보고
    또다른 에러가 나면 또 수정해달라고 하면 됩니다.
    (이게 맞는 답변인지는 적용해보지 않아서 몰라요)

    <?php
    $widget_info = $widget_info ?? new stdClass();
    $cols = $widget_info->cols_list_count ?? 0;
    if ($cols < 3) {
    $cols = 6;
    } elseif ($cols == 3) {
    $cols = 4;
    } elseif ($cols == 4) {
    $cols = 3;
    } elseif ($cols > 4) {
    $cols = 2;
    }
    ?>

  • profile profile
    ChatGPT는 XE 템플릿 문법을 모르므로 그냥은 사용 불가능한 코드가 나옵니다. 당장 위 코드도 틀린 코드입니다.(동작은 가능하나 위 코드 안 변수는 템플릿 문법의 변수와 달리 Context를 참조하지 않게 되며 이후 {$widget_info}처럼 사용시 없는 변수를 사용할수 있음)
  • profile ?
    오오.. 멋지네요. 감사합니다 일단 end를 확실히 제거해 주었네요
  • profile

    저 개인의 경험이 옳은 것은 아니겠으나,
    기존 xe용 파일들을 에러 안나게 고쳐 쓰기보다는

    rhymix 전용 레이아웃,
    rhymix 전용 게시판

    rhymix 전용 위젯으로 갈아타시는게 정신건강에 좋을 수 있습니다.

  • profile ?
    라이믹스 전용을 찾아보려고 그러는데.. 이거 너무 파편화가 돼 있는지.. 급하게 수정해야 하는데.. 찾아다닐 수가 없어서요..ㅠㅠ
  • ? profile

    라이믹스 전용이라기보다는, 과거 자료들 대부분이 PHP 5~7 전용입니다. 질문자분은 8 버전대를 덜컥 선택하셨으니, 거기에 맞춰 수정하거나 다른 자료로 대체해야 하는 거죠. 만약 7.4를 선택하셨다면 에러나지 않았을 겁니다.

    XE는 단 한 번도 PHP 8 버전대를 지원한 적이 없으니, 8 버전대에서 에러 없이 작동하는 자료라면 라이믹스용일 가능성이 높은 것 뿐입니다. 반대로, 에러나는 자료를 8 버전대에 맞게 수정하시면 그게 곧 라이믹스용이 되지요. 특별할 것이 없습니다.^^

  • profile ?
    넵! 감사합니다!
    xe타운의 답글 표시 방식이 넘 이뻐서.. 이건 뭘까 하고 뒤적거려보는데.. 못찾겠네요. ㅎㅎㅎㅎ
    게시판도 이제 스케치북에서 갈아탈 때가 된 거 같은데.. 또다시 공부중입니다. ㅠㅠ