Система тегов - Поиск по тегу при нажатии Laravel - PullRequest
1 голос
/ 04 ноября 2019

Я хочу сделать функцию поиска по тэгам. При щелчке по тегу, чтобы показать мне все содержимое со значением из тега (например, модель, тег1, тег2 и т. Д.). Для этого я делаю страницу и проверяю, может ли это отображать то, что мне нужно. С ->where('tag', '=', 'model') я получил все сообщения с `tag = model '. Но теперь мне нужно отобразить в зависимости от того, какой тег нажал. Итак, вот что у меня есть в одиночных новостях: enter image description here

Эти теги генерируются этим кодом:

<div class="container">
            <label>Tags

              <a href="{{ url('') }}">
                  <input class="input-tags" type="text" data-role="tagsinput" value="{{ $news->tag }}" disabled>
              </a>


              </label>
            </div>

        </div>

Вот мой контроллер на данный момент:

public function newsTag()
        {

                $data = $this->data;



                $data['news_details'] = News::with('category_name')->where('locale','=',Session::get('locale'))->where('tag','=','model')->orderBy('created_at', 'desc')->get();


                $data['categories'] = Category::with(['news' => function ($q){
                        $q->orderBy('title', 'asc');}])->where('category','=','news')->where('locale','=',Session::get('locale'))->get();

                // $data['categories'] = Category::with('news')->where('category','=','news')->where('locale','=',Session::get('locale'))->get();

                $data['instanews_details'] = InstagramNews::where('locale','=',Session::get('locale'))->where('category','=','news')->get();

                // $displayitem = DisplayItem::where('slug','=',url('project'))->first();

                // $data['page'] = $displayitem;
                // date_default_timezone_set('Asia/Kolkata');
                // // return $date = date('Y-m-d H:i:s');
                // return $date = strtotime('-1 hour');
                // echo 'John visited last ' . $date;

                $data['title'] = trans('fab.news');;

                $data['breadcrumb'] = 'news';

                // $data['menu'] = $tag->title;

                $data['metadescription'] = "news";

                $data['metatitle'] = 'news';

                // $data['blogs'] = $tag->blog;

                return view('news.news_tag',$data);

        }

Вот мой маршрут:

Route::get('news_tag', 'ModelController@newsTag');

Вот моя страницадля результатов - news_tag.blade.php:

@extends('layout.front.template')
@section('content')

<!-- Profile talent section -->
   <section class="vc_row wpb_row vc_row-fluid modificartion" style="overflow: hidden;">
   <div class="container news-container">
      <div id="news-rows" class="row">
          <div class="wpb_column vc_column_container vc_col-sm-12">
              <div class="vc_column-inner ">
                  <div class="wpb_wrapper">
                     <section class="gallery-element isotop padding-item none-padding hidden-s hidden-sm hidden-xs">
                        <div class="container">
                           <div class="header-element">
                               <h3 id="newstxt" class="title-element font-disolve">@lang('fab.news')</h3>
                           </div>
                           <div class="content-tab">
                               <div id="options" class="clearfix">
                                  <a href="javascript:void(0)">
                                   <ul id="filters" class="option-set clearfix inline-mainb" data-option-key="filter" data-toggle="modal" data-target="#myModal">
                                      @lang('fab.newsletter')
                                   </ul>
                                 </a>
                               </div>

                               <div class="row" style="margin-right:0px;bottom: 40px; position: relative">

                                 <div class="col-md-3 contentWrap" id="column1" style="padding-right: 0px;">
                                   <ul class="scroller3 content">
                                     @foreach($news_details as $key => $news)
                                         <!-- <ul class="scroller1"> -->


                                             <a href="{{ url('news') }}/{{ $news->slug }}">
                                               <div class="element transition {{ $news->category_name->slug }} editorial news video-exhibition" style="width: 100%">
                                                 <div class="item-gallery {{ $news->news_class }}">
                                                   <div class="content-item">
                                                       <img src="{{ url('images/news') }}/{{ $news->image }}"/>
                                                      <div class="text">
                                                          <div class="name">{{ $news->category_name->title }}</div>
                                                          <div class="content-gallery-grid">
                                                             <h3 class="title">
                                                               <!-- <a href="{{ url('news') }}/{{ $news->slug }}"> -->
                                                                 {{ $news->title }}
                                                               <!-- </a> -->
                                                             </h3>
                                                          </div>
                                                      </div>
                                                   </div>
                                                 </div>
                                              </div>
                                             </a>


                                     @endforeach
                                   </ul>
                                 </div><!-- 1st col -->
                               </div>

@stop

Итак, в заключение, мне нужно сделать эту функцию поиска основанной на тегах из отдельных новостей каждой новости. Итак, если новости с идентификатором 1 имеют tags - test, tag, me, phone, и я нажимаю tag, я хочу перенаправить их на страницу news_tag и получать только сообщения с tag в столбце tag из таблицы News. enter image description here

1 Ответ

0 голосов
/ 04 ноября 2019

Спасибо, что разместили свой вопрос!

Можно ли изменить структуру вашего кода, чтобы он поддерживал отношение «многие ко многим» в «Новостях и тегах»?

Из того, что я вижу в вашем приложении, у News может быть много тегов, а у тега может быть много элементов новостей.

Ниже приведен пакет, который я часто использую для тегирования от разработчиков из Spatie. :

https://github.com/spatie/laravel-tags

В примерах по этой ссылке показано, как можно добавлять теги к элементам новостей (или для любой другой таблицы в приложении).

что поможет с тем, что вы пытаетесь достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...