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