Exemplo n.º 1
0
 public function category(Request $request)
 {
     $lastSegment = preg_split("/\\//", $request->url());
     $categorySlug = array_pop($lastSegment);
     // get the last segment on the current url
     $category = Tag::where('slug', $categorySlug)->first();
     // check if there is no category found.
     if (!$category) {
         return redirect()->route('front.error-404');
     }
     // condition where clause for parent categories or child.
     if ($category->parent_id == 0) {
         $field = 'tags.parent_id';
         $value = $category->id;
     } else {
         $field = 'tags.slug';
         $value = $category->slug;
     }
     // Get posts by PostTag slug or parent_id field
     $properties = Post::join('post_tags', 'posts.id', '=', 'post_tags.post_id')->join('tags', 'post_tags.tag_id', '=', 'tags.id')->where($field, $value)->select('posts.*', 'tags.name as tagName')->paginate(config('front.postPerPage'));
     $pageTitle = 'Category: ' . $category->name;
     if ($category->parent_id == 0) {
         $breadcrumbData = [['url' => url(), 'name' => 'Home'], ['url' => route('front.category') . '/' . $category->slug, 'name' => $category->name]];
     } else {
         $breadcrumbData = [['url' => url(), 'name' => 'Home'], ['url' => route('front.category', $category->parent()->slug), 'name' => $category->parent()->name], ['url' => route('front.category') . '/' . $category->parent()->slug . '/' . $category->slug, 'name' => $category->name]];
     }
     return view('properties', compact('properties', 'pageTitle', 'breadcrumbData'));
 }
Exemplo n.º 2
0
 public function searchAdvance(Request $request)
 {
     $country = $request->get('country');
     $location = $request->get('location');
     $type = $request->get('type');
     $minPrice = $request->get('min_price');
     $maxPrice = $request->get('max_price');
     $properties = Post::join('postmeta', function ($join) use($country, $location) {
         $join->on('posts.id', '=', 'postmeta.post_id')->where('postmeta.meta_value', '=', $country);
     })->select('posts.*', 'postmeta.meta_key', 'postmeta.meta_value')->paginate(config('front.postPerPage'));
     //TODO: some more work to do especially for type, minimum price and maximum price.
     $pageTitle = 'Advance Search Result';
     return view('properties', compact('properties', 'pageTitle'));
 }
Exemplo n.º 3
0
 public function handle()
 {
     $post = Post::where('slug', $this->slug)->first();
     if (!$post) {
         return redirect()->route('front.error-404');
     }
     $postTagIds = array();
     if (count($post->postTags) > 0) {
         foreach ($post->postTags as $postTag) {
             $postTagIds[] = $postTag->tag_id;
         }
     }
     // Retrieve related posts by specific tags
     $relatedPosts = Post::join('post_tags', 'posts.id', '=', 'post_tags.post_id')->join('tags', 'post_tags.tag_id', '=', 'tags.id')->whereIn('post_tags.tag_id', $postTagIds)->orderByRaw('RAND()')->take(10)->select('posts.*', 'tags.name as tagName')->take(3)->distinct()->get();
     return view('property', compact('post', 'relatedPosts'));
 }