123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\DistAppearanceTemplate;
- use App\Models\DistProduct;
- use Illuminate\Http\Request;
- use App\Services\LiquidRenderer;
- use App\Models\SitePage;
- class PageController extends Controller
- {
- protected $liquidRenderer;
- public function __construct(LiquidRenderer $liquidRenderer)
- {
- $this->liquidRenderer = $liquidRenderer;
- }
-
- public function list()
- {
- abort('404');
- $cacheKey = "page_list_dist_" . getDistId() . "_page_" . request()->get('page', 1);
- $pages = SitePage::paginate(10)->where('dist_id', getDistId())->where('status', '1');
- return $this->liquidRenderer->render('pages_list', ['pages' => $pages],$cacheKey);
- }
-
- public function detail($slug)
- {
- $recent_pages=null;
- $page = SitePage::where('status', '1')->where('dist_id', getDistId())->where('slug', $slug)->orWhere('id', $slug)->first();
-
- if (!$page) {
- if (is_numeric($slug))
- {
- $page = SitePage::where('status', '1')->where('dist_id', getDistId())->where('id', $slug)->firstOrFail();
- }
- else{
- abort(403);
- }
- }
- if($page->page_type==0) {
- $previousPage = SitePage::where('dist_id', getDistId())
- ->where('status', '1')
- ->where('id', '<', $page->id)
- ->where('page_type',0)
- ->orderBy('id', 'desc')
- ->first();
- $nextPage = SitePage::where('dist_id', getDistId())
- ->where('status', '1')
- ->where('id', '>', $page->id)
- ->where('page_type',0)
- ->orderBy('id', 'asc')
- ->first();
-
- $paginator = [
- 'previous_page' => $previousPage ? true : false,
- 'previous_page_url' => $previousPage ? "/pages/" . ($previousPage->slug ?: $previousPage->id) : null,
- 'previous_page_title' => $previousPage ? $previousPage->title : null,
- 'next_page' => $nextPage ? true : false,
- 'next_page_url' => $nextPage ? "/pages/" . ($nextPage->slug ?: $nextPage->id) : null,
- 'next_page_title' => $nextPage ? $nextPage->title : null,
- ];
-
-
- $recent_pages_limit=10;
- $recent_pages = SitePage::where('dist_id', getDistId())
- ->where('status', '1')
- ->where('id', '!=', $page->id)
- ->where('page_type',0)
- ->orderBy('id', 'desc')
- ->limit($recent_pages_limit)
- ->get();
- }
- else{
- $paginator = [];
- }
-
- $breadcrumbs = [
- [
- 'url' => '/',
- 'name' => 'Home',
- ]
- ];
- if ($page->tags->isNotEmpty()) {
- $tag = $page->tags->first();
- $breadcrumbs[] = [
- 'url' => $tag->slug ? "/collections/{$tag->slug}" : "/collections/{$tag->id}",
- 'name' => $tag->name,
- ];
- }
- $breadcrumbs[] = [
- 'url' => '#',
- 'name' => $page->title,
- ];
-
-
- $seo_keywords = $page->seo_keywords;
- $seo_keywords_array = explode(',', $seo_keywords);
- if(!empty($seo_keywords_array))
- {
- $seo_keywords_array = array_map('trim', $seo_keywords_array);
- $seo_keywords_array = array_unique($seo_keywords_array);
-
- $query = DistProduct::where('dist_id', getDistId())
- ->where('enabled', 1)
- ->where('status', 2);
-
- $query->where(function($q) use ($seo_keywords_array) {
- foreach ($seo_keywords_array as $keyword) {
- $q->orWhere(function($subQ) use ($keyword) {
- $subQ->where('seo_keywords', 'LIKE', $keyword)
- ->orWhere('seo_keywords', 'LIKE', $keyword . ',%')
- ->orWhere('seo_keywords', 'LIKE', '%,' . $keyword)
- ->orWhere('seo_keywords', 'LIKE', '%,' . $keyword . ',%');
- });
- }
- });
-
- $relatedProducts = $query->with('images')
- ->orderBy('order', 'desc')
- ->orderBy('id', 'desc')
- ->limit(4)
- ->get();
- }
- $template_file ='pages_detail.liquid';
- if(!empty($page->template_file ))
- {
-
- $dist=app('dist');
- $appearanceId = $dist->appearance->id;
- if (DistAppearanceTemplate::hasFileName($page->template_file,getDistId(),$appearanceId) == true) {
- $template_file=$page->template_file;
- }
- }
- return $this->liquidRenderer->render($template_file,
- [
- 'page' => $page,
- 'recent_pages' => $recent_pages,
- 'breadcrumbs' => $breadcrumbs,
- 'paginator' => $paginator,
- 'csrf_token' => csrf_token(),
- 'relatedProducts' => $relatedProducts,
- ]);
- }
- }
|