where('type', StaticPageType::newsPlural)->firstOrFail(); if ($request->wantsJson()) { $currentLocale = app()->currentLocale(); $newsList = News::query() ->where('status', true) ->whereJsonContains('locales', $currentLocale) ->orderBy('order') ->paginate(); return \response()->json(\collect($newsList->items()) ->map(fn ($newsModel) => str($this->renderNews($newsModel))->toBase64())); } return view('fo.pages.news.index', compact('staticPageModel')); } /** * Product show * * @param \App\Models\News $publishedNews * @return \Illuminate\Contracts\View\View */ public function show(News $publishedNews): \Illuminate\Contracts\View\View { $staticPageModel = StaticPage::query()->where('type', StaticPageType::newsPlural)->firstOrFail(); $currentLocale = app()->currentLocale(); $relatedNewsList = News::query() ->where('id', '!=', $publishedNews->id) ->where('status', true) ->whereJsonContains('locales', $currentLocale) ->orderBy('order', 'DESC') ->limit(2)->get(); return view('fo.pages.news.show', [ 'staticPageModel' => $staticPageModel, 'newsModel' => $publishedNews, 'relatedNewsList' => $relatedNewsList ]); } /** * Render a news for JS usage (ajax) * * @param \App\Models\News $newsModel * @return string Base64 rendered view. */ private function renderNews(News $newsModel): string { $locale = \app()->currentLocale(); $pictures = $newsModel->picture_list; return Cache::remember( "NewsRendered_{$locale}_{$newsModel->id}_{$newsModel->updated_at}", 60, fn () => \view( 'fo.pages.news.bloc', [ 'newsModel' => $newsModel, 'pictures' => $pictures ] )->render() ); } }