bloodthirstyb
May 20th, 2017, 17:21
درود به اعضای عزیز وب هاستینگ تاک
من توی یک اسکریپت به یک مشکل برخوردم و امیدوارم با توضیحاتی که میدم بتونید به من کمک کنید.
من یک اسکریپت تخفیف گروهی دارم که توی صفحه اول سایت سه بلوک برای نمایش تخفیف های روز ( $products3 ) ، پر فروش ترین تخفیف ها ($productsMostSolds) و محبوب ترین تخفیف ها ($productsMostLikes) داره که برای نمایش اون ها از کد های زیر استفاده شده :
<div id="MostSolds"> <div class="index-titlebar"> <h4 class="ddd title"> پرفروش ترین تخفیف ها </h4> </div> <div class="row rtl home-mahsool"> <?php echo $__env->renderEach('ajax.ajaxProduct', $productsMostSolds, 'product'); ?> </div> </div> <div id="MostLikes"> <div class="index-titlebar"> <h4 class="ddd title"> محبوب ترین تخفیف ها </h4> </div> <div class="row rtl home-mahsool"> <?php echo $__env->renderEach('ajax.ajaxProduct', $productsMostLikes, 'product'); ?> </div> </div>
از طرفی کنترلری که مربوط به نمایش این قسمت ها هست هم توی یک فایل به اسم HomeController.php نوشته شده که محتویاتش اینه :
<?php namespace App\Http\Controllers; use App\Http\Requests; use Session; use Cookie; use App\Model\City; use App\Model\Product; use App\Model\Basket; use App\Model\Order; use App\Model\Menu; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; use Request; use Telegram; class HomeController extends Controller { public function __construct() { } public function search($q){ $q=trim($q); if(!trim($q)) return; $resultCount = 10; $products = Product::where('name', 'LIKE', '%'.$q. '%')->orWhere('title','LIKE', '%'.$q. '%')->paginate($resultCount); if($products) return $this->ReturnResponse($products); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function PostSearch(){ $q=trim(Input::get('search')); $resultCount = 1; $products = Product::where('name', 'LIKE', '%'.$q. '%')->orWhere('title','LIKE', '%'.$q. '%')->paginate($resultCount); return view('search',compact('products')); } public function ajaxLoadBasket(){ $baskets=Basket::ActiveBaskets(); $total=Basket::ActiveBaskets()->sum(function($t){ return $t->count * $t->price; }); return view('ajax.ajaxBasket',compact('baskets','total'))->render(); } public function SetDefaultCity($city){ Cookie::queue('city', $city, 2628000); Session::put( 'city', $city ); return redirect("/$city"); } public function ShowProduct($id){ if(!$id) return redirect('/'); $product=Product::withCount('likes')->FindorFail($id); $products4=Product::ActivePlacements(4,$product->menu_id)->withCount('likes')->whereNotIn('id',[$id])->take(6)->get(); $products=Product::NotActivePlacements($product->menu_id)->withCount('likes')->whereNotIn('id',[$id])->take(13)->get(); $cnt= $products4->count() >= 6 ? : 6 ; $need3 = (int)(ceil( $cnt / 3) * 3); $cnt=abs($need3 - $cnt); $SimilarProducts = $products4->merge($products->take($cnt)); $menu = new Menu; $breadcrumb = $menu->buildBreadcrumbParents("active",$product->menu_id); return view('product',compact('product','breadcrumb','Sim ilarProducts')); } public function index($city=null){ if(!$city) $city = Cookie::get('city','tehran'); $city=City::WHERE('slug',$city)->first(); $products=Product::NotActivePlacements()->Where('city_id',$city->id)->take(13)->get(); $productFirstPage=Product::Find(Config('constants. HOME.slider')); $products3=Product::ActivePlacements(3)->withCount('likes')->Where('city_id',$city->id)->get(); $productsMostSolds=Product::whereNull('disable')->where('approved',1)->where('soldcount','>',0)->Where('city_id',$city->id) ->withCount('likes')->orderby('soldcount','desc')->take(9)->get(); $productsMostLikes=Product::has('likes')->whereNull('disable')->where('approved',1)->Where('city_id',$city->id) ->withCount('likes')->orderBy('likes_count', 'desc')->take(9)->get(); /*$productsCategory1=Product::has('likes')->whereNull('disable')->where('approved',1)->Where('city_id',$city->id)->Where('maintenance',$category) ->withCount('likes')->orderBy('likes_count', 'desc')->take(9)->get();*/ $chunk = $products->splice(4); $cnt= $products3->count() >= 9 ? $products3->count() : 9 ; $need3 = (int)(ceil( $cnt / 3) * 3); $cnt=abs($need3 - $products3->count()); $products3 = $products3->merge($chunk->take($cnt)); return view('home',compact('productFirstPage','products3' ,'productsMostSolds','productsMostLikes')); } public function ShowProducts($city=null,$category=null){ if(!$city) $city = Cookie::get('city','tehran'); $city=City::WHERE('slug',$city)->first(); $menu=Menu::Where('slug',$category)->first(); if(!$menu) $menu=Menu::findorfail(1); $products=$menu->Products()->Where('city_id',$city->id); $breadcmenu = new Menu; $breadcrumb = $breadcmenu->buildBreadcrumbParents("active",$menu->id); $menuTitle=$menu->title; return view('products',compact('products','breadcrumb','m enuTitle')); } public function police() { $user = Auth::user(); if(!($this->ValidateData(['product_id' => 'required','police_reason'=>'required']))){ return $this->ReturnResponse(null," خطا در ورودی "); } $result = \App\Model\Police::create([ 'user_id' => $user->id, 'product_id'=>Input::get('product_id'), 'title'=>Input::get('police_reason'), 'info'=>Input::get('police_other_reason'), ]); if($result) return $this->ReturnResponse(" با تشکر از شما ، گزارش ثبت شد "); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function ShowContactForm(){ return view('contactus'); } public function contactStore() { if(!($this->ValidateData(['name' => 'required','email'=>'required','info'=>'required']))){ return $this->ReturnResponse(null,$this->errors); } $result = \App\Model\Message::create([ 'name'=>Input::get('name'), 'email'=>Input::get('email'), 'cell'=>Input::get('cell'), 'info'=>Input::get('info'), ]); $title =" پیام جدیدی از طرف : "; $title .=" \r\n "; $title .=$result->name; $title .= " با ایمیل : "; $title .=" \r\n "; $title .= $result->email; $title .=" \r\n "; $title .=" به سایت ارسال شده است "; if( !env('IsLocal') ) { if( Config("constants.TELEGRAM.active") ) $TelegrmResponse = Telegram::sendMessage([ 'chat_id' =>Config("constants.TELEGRAM.ADMIN_CHAT_ID"), 'text' => $title ]); } if($result) return $this->ReturnResponse(" با تشکر از شما ، پیام شما ثبت گردید و بزودی بررسی خواهد شد "); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function ShareSocial($product_id,$socialName){ if(!$product_id || !$socialName) dd("Error id"); $product=Product::FindOrFail($product_id); if($socialName=="facebook") $url="https://www.facebook.com/sharer/sharer.php?u=$product->url"; elseif($socialName=="google") $url="https://plus.google.com/share?url=$product->url"; elseif($socialName=="twitter") $url="https://twitter.com/intent/tweet?text=$product->title_dash&url=$product->url"; elseif($socialName=="telegram") $url="https://telegram.me/share/url?url=$product->url&text=$product->title_dash"; if(Auth::guest()) return redirect("$url"); $user=Auth::User(); if($user->IsSharedProduct($product_id,$socialName) ){ $msgtype="danger"; $txt=" محصول مورد نظر قبلا توسط شما به اشتراک گذاشته شده و امتیاز آن برای حساب کاربری تان ثبت گردیده است "; $txt .=" در صورت تمایل می توانید مجددا آن را به اشتراک بگذارید "; $txt .=" <a class='btn btn-success' href='$url'>ادامه اشتراک گذاری</a> "; return view('result',compact('txt','msgtype')); } else { $share=\App\Model\Share::FirstOrCreate(['user_id'=>$user->id, 'product_id'=>$product_id, 'social_name'=>$socialName, ]); $reason=" اشتراک بن $product_id $product->name در $socialName "; $t=Config('constants.TSHARE.google') ? : 0; $point=\App\Model\Point::create(['user_id'=>$user->id,'reason'=>$reason,'t'=>$t]); return redirect("$url"); } } }
حالا درخواست من چیه؟ :
من میخوام یه متغیر مثل هرکدوم از متغیر هایی که برای نمایش تخفیف روز یا پرفروش ترین تخفیف ها یا محبوب ترین تخفیف ها ایجاد بشه ولی فرقش اینه که این متغیر آگهی های یک دسته خاص به اسم " خدماتی و تفریحی " که slug اون توی دیتابیس این هست maintenance نمایش بده.
امیدوارم متوجه منظورم شده باشید.
فایل کنترلر پیوست شد
من توی یک اسکریپت به یک مشکل برخوردم و امیدوارم با توضیحاتی که میدم بتونید به من کمک کنید.
من یک اسکریپت تخفیف گروهی دارم که توی صفحه اول سایت سه بلوک برای نمایش تخفیف های روز ( $products3 ) ، پر فروش ترین تخفیف ها ($productsMostSolds) و محبوب ترین تخفیف ها ($productsMostLikes) داره که برای نمایش اون ها از کد های زیر استفاده شده :
<div id="MostSolds"> <div class="index-titlebar"> <h4 class="ddd title"> پرفروش ترین تخفیف ها </h4> </div> <div class="row rtl home-mahsool"> <?php echo $__env->renderEach('ajax.ajaxProduct', $productsMostSolds, 'product'); ?> </div> </div> <div id="MostLikes"> <div class="index-titlebar"> <h4 class="ddd title"> محبوب ترین تخفیف ها </h4> </div> <div class="row rtl home-mahsool"> <?php echo $__env->renderEach('ajax.ajaxProduct', $productsMostLikes, 'product'); ?> </div> </div>
از طرفی کنترلری که مربوط به نمایش این قسمت ها هست هم توی یک فایل به اسم HomeController.php نوشته شده که محتویاتش اینه :
<?php namespace App\Http\Controllers; use App\Http\Requests; use Session; use Cookie; use App\Model\City; use App\Model\Product; use App\Model\Basket; use App\Model\Order; use App\Model\Menu; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; use Request; use Telegram; class HomeController extends Controller { public function __construct() { } public function search($q){ $q=trim($q); if(!trim($q)) return; $resultCount = 10; $products = Product::where('name', 'LIKE', '%'.$q. '%')->orWhere('title','LIKE', '%'.$q. '%')->paginate($resultCount); if($products) return $this->ReturnResponse($products); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function PostSearch(){ $q=trim(Input::get('search')); $resultCount = 1; $products = Product::where('name', 'LIKE', '%'.$q. '%')->orWhere('title','LIKE', '%'.$q. '%')->paginate($resultCount); return view('search',compact('products')); } public function ajaxLoadBasket(){ $baskets=Basket::ActiveBaskets(); $total=Basket::ActiveBaskets()->sum(function($t){ return $t->count * $t->price; }); return view('ajax.ajaxBasket',compact('baskets','total'))->render(); } public function SetDefaultCity($city){ Cookie::queue('city', $city, 2628000); Session::put( 'city', $city ); return redirect("/$city"); } public function ShowProduct($id){ if(!$id) return redirect('/'); $product=Product::withCount('likes')->FindorFail($id); $products4=Product::ActivePlacements(4,$product->menu_id)->withCount('likes')->whereNotIn('id',[$id])->take(6)->get(); $products=Product::NotActivePlacements($product->menu_id)->withCount('likes')->whereNotIn('id',[$id])->take(13)->get(); $cnt= $products4->count() >= 6 ? : 6 ; $need3 = (int)(ceil( $cnt / 3) * 3); $cnt=abs($need3 - $cnt); $SimilarProducts = $products4->merge($products->take($cnt)); $menu = new Menu; $breadcrumb = $menu->buildBreadcrumbParents("active",$product->menu_id); return view('product',compact('product','breadcrumb','Sim ilarProducts')); } public function index($city=null){ if(!$city) $city = Cookie::get('city','tehran'); $city=City::WHERE('slug',$city)->first(); $products=Product::NotActivePlacements()->Where('city_id',$city->id)->take(13)->get(); $productFirstPage=Product::Find(Config('constants. HOME.slider')); $products3=Product::ActivePlacements(3)->withCount('likes')->Where('city_id',$city->id)->get(); $productsMostSolds=Product::whereNull('disable')->where('approved',1)->where('soldcount','>',0)->Where('city_id',$city->id) ->withCount('likes')->orderby('soldcount','desc')->take(9)->get(); $productsMostLikes=Product::has('likes')->whereNull('disable')->where('approved',1)->Where('city_id',$city->id) ->withCount('likes')->orderBy('likes_count', 'desc')->take(9)->get(); /*$productsCategory1=Product::has('likes')->whereNull('disable')->where('approved',1)->Where('city_id',$city->id)->Where('maintenance',$category) ->withCount('likes')->orderBy('likes_count', 'desc')->take(9)->get();*/ $chunk = $products->splice(4); $cnt= $products3->count() >= 9 ? $products3->count() : 9 ; $need3 = (int)(ceil( $cnt / 3) * 3); $cnt=abs($need3 - $products3->count()); $products3 = $products3->merge($chunk->take($cnt)); return view('home',compact('productFirstPage','products3' ,'productsMostSolds','productsMostLikes')); } public function ShowProducts($city=null,$category=null){ if(!$city) $city = Cookie::get('city','tehran'); $city=City::WHERE('slug',$city)->first(); $menu=Menu::Where('slug',$category)->first(); if(!$menu) $menu=Menu::findorfail(1); $products=$menu->Products()->Where('city_id',$city->id); $breadcmenu = new Menu; $breadcrumb = $breadcmenu->buildBreadcrumbParents("active",$menu->id); $menuTitle=$menu->title; return view('products',compact('products','breadcrumb','m enuTitle')); } public function police() { $user = Auth::user(); if(!($this->ValidateData(['product_id' => 'required','police_reason'=>'required']))){ return $this->ReturnResponse(null," خطا در ورودی "); } $result = \App\Model\Police::create([ 'user_id' => $user->id, 'product_id'=>Input::get('product_id'), 'title'=>Input::get('police_reason'), 'info'=>Input::get('police_other_reason'), ]); if($result) return $this->ReturnResponse(" با تشکر از شما ، گزارش ثبت شد "); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function ShowContactForm(){ return view('contactus'); } public function contactStore() { if(!($this->ValidateData(['name' => 'required','email'=>'required','info'=>'required']))){ return $this->ReturnResponse(null,$this->errors); } $result = \App\Model\Message::create([ 'name'=>Input::get('name'), 'email'=>Input::get('email'), 'cell'=>Input::get('cell'), 'info'=>Input::get('info'), ]); $title =" پیام جدیدی از طرف : "; $title .=" \r\n "; $title .=$result->name; $title .= " با ایمیل : "; $title .=" \r\n "; $title .= $result->email; $title .=" \r\n "; $title .=" به سایت ارسال شده است "; if( !env('IsLocal') ) { if( Config("constants.TELEGRAM.active") ) $TelegrmResponse = Telegram::sendMessage([ 'chat_id' =>Config("constants.TELEGRAM.ADMIN_CHAT_ID"), 'text' => $title ]); } if($result) return $this->ReturnResponse(" با تشکر از شما ، پیام شما ثبت گردید و بزودی بررسی خواهد شد "); else return $this->ReturnResponse(null," خطا در ثبت اطلاعات "); } public function ShareSocial($product_id,$socialName){ if(!$product_id || !$socialName) dd("Error id"); $product=Product::FindOrFail($product_id); if($socialName=="facebook") $url="https://www.facebook.com/sharer/sharer.php?u=$product->url"; elseif($socialName=="google") $url="https://plus.google.com/share?url=$product->url"; elseif($socialName=="twitter") $url="https://twitter.com/intent/tweet?text=$product->title_dash&url=$product->url"; elseif($socialName=="telegram") $url="https://telegram.me/share/url?url=$product->url&text=$product->title_dash"; if(Auth::guest()) return redirect("$url"); $user=Auth::User(); if($user->IsSharedProduct($product_id,$socialName) ){ $msgtype="danger"; $txt=" محصول مورد نظر قبلا توسط شما به اشتراک گذاشته شده و امتیاز آن برای حساب کاربری تان ثبت گردیده است "; $txt .=" در صورت تمایل می توانید مجددا آن را به اشتراک بگذارید "; $txt .=" <a class='btn btn-success' href='$url'>ادامه اشتراک گذاری</a> "; return view('result',compact('txt','msgtype')); } else { $share=\App\Model\Share::FirstOrCreate(['user_id'=>$user->id, 'product_id'=>$product_id, 'social_name'=>$socialName, ]); $reason=" اشتراک بن $product_id $product->name در $socialName "; $t=Config('constants.TSHARE.google') ? : 0; $point=\App\Model\Point::create(['user_id'=>$user->id,'reason'=>$reason,'t'=>$t]); return redirect("$url"); } } }
حالا درخواست من چیه؟ :
من میخوام یه متغیر مثل هرکدوم از متغیر هایی که برای نمایش تخفیف روز یا پرفروش ترین تخفیف ها یا محبوب ترین تخفیف ها ایجاد بشه ولی فرقش اینه که این متغیر آگهی های یک دسته خاص به اسم " خدماتی و تفریحی " که slug اون توی دیتابیس این هست maintenance نمایش بده.
امیدوارم متوجه منظورم شده باشید.
فایل کنترلر پیوست شد