이온디
호스팅센터
웹디벨로퍼
프리랜서카페
스레드

더보기

2025년 02월 08일

[코드]

@if(!$document->isAccessible())
                                        <div class="secret-box">
                                            <i class="lock"></i> 잠긴 스레드입니다.
                                        </div>
                                    @else
                                    @php
                                        $maxLength = 300;
                                        $content = $document->variables['content'];
                                        
                                        // 설문조사 이미지 추출
                                        $survey = '';
                                        if (preg_match_all('/<img[^>]*\beditor_component="poll_maker"[^>]*>/i', $content, $matches)) {
                                            $survey = implode('', $matches[0]);
                                        }
                                        
                                        // 설문조사 이미지 제거한 본문
                                        $contentWithoutSurvey = preg_replace('/<img[^>]*\beditor_component="poll_maker"[^>]*>/i', '', $content);
                                        $plainText = strip_tags($contentWithoutSurvey);
                                        
                                        // 본문 길이에 따른 처리
                                        if (mb_strlen($plainText) > $maxLength) {
                                            $shortContent = mb_substr($plainText, 0, $maxLength) . "...";
                                        } else {
                                            $shortContent = $plainText; // 300자 이하면 그대로 표시
                                        }
                                        
                                        // 첨부파일 확인
                                        $uploadfiles = $document->getUploadedFiles();
                                        $imageCount = 0;
                                        if ($uploadfiles && is_array($uploadfiles)) {
                                            foreach ($uploadfiles as $file) {
                                                if (strpos($file->mime_type, 'image/') === 0) {
                                                    $imageCount++;
                                                }
                                            }
                                        }
                                        
                                        // 설문조사만 있는 경우
                                        $hasSurveyOnly = !empty($survey) && empty(trim($plainText));
                                    @endphp
                                    @if($hasSurveyOnly)
                                        <div class="xe_content">{!! $shortContent !!}</div>
                                        <div class="survey-images" onclick="event.stopPropagation();">{!! $survey !!}</div>
                                    @elseif(!empty($survey))
                                        <div class="xe_content">{!! $shortContent !!}</div>
                                        <div class="survey-images" onclick="event.stopPropagation();">{!! $survey !!}</div>
                                    @else
                                        <div class="content-text">{!! $shortContent !!}</div>
                                        @if($imageCount > 0 && empty($survey))
                                            @if($imageCount == 1)
                                                <div class="img-box">
                                                    <img src="{!! $document->getThumbnail(230, 230, 'fill') !!}" alt="thumbnail">
                                                </div>
                                            @else
                                                <div class="img-box">
                                                    @foreach($uploadfiles as $file)
                                                        @if(strpos($file->mime_type, 'image/') === 0)
                                                            <img src="{!! $file->uploaded_filename !!}" alt="image">
                                                        @endif
                                                    @endforeach
                                                </div>
                                            @endif
                                        @endif
                                    @endif
                                    @endif

1. 접근권한이 없으면 잠긴스레드라고 표시하기
2. 접근권한이 있을 경우
2.1. 글 본문이 300자 이하인 경우 -> 띄어쓰기 적용하고 다 보여준다.
2.2. 글 본문이 300자 이상인 경우 -> 300자까지 보여주고 ...더보기 라고 표시해준다.
2.3. 첨부파일 중 이미지가 있는 경우 본문 아래 표시한다.
2.4. 첨부파일 중 이미지가 1개면 썸네일을 출력한다.
2.5. 첨부파일 중 이미지가 2개 이상이면 이미지 리스트를 출력한다.

 


내용을 입력하세요
0
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기
  • Profile
    2025 년 02 월 08 일 (03:54)

    [초기코드]

    @php
                             $maxLength = 350;
                             if(mb_strlen(strip_tags($document->getContent(false))) > $maxLength){
                                // $content = preg_replace('/<img[^>]*>/', '', $document->variables['content']);
                                // $shortContent = mb_substr($content, 0, $maxLength) . '...';
                                $fullUrl = getUrl('document_srl', $document->document_srl); // 문서의 URL 생성
                                $content = $document->getSummary($maxLength);
                                $content .= " <a href='" . $fullUrl . "' class='read-more'>더보기</a>";
                                echo $content;
                             }else{
    //                          echo '이하';
                                $content = preg_replace('/<img[^>]*>/', '', $document->variables['content']);
    //                           echo $document->getContent(false);
                                echo $content;
                             }
                             @endphp
    
    
                             @if($document->getUploadedFiles())
                             <div class="img-box">
                                @foreach($document->getUploadedFiles() as $key => $file)
                                   <img src="{$file->uploaded_filename}">
                                   @php
                                      $path = pathinfo($file->source_filename);
                                      $ext = strtolower($path['extension']);
                                   @endphp
                                @endforeach
                             </div>
                             @endif
    답변 달기