[코드]
@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개 이상이면 이미지 리스트를 출력한다.
[초기코드]