In my Laravel application, I have implemented Tagging of articles and events. This is accomplished by having two tables: tags
and taggables
. In my tag controller, I have an index method that grabs all the tags, a count of the tags and the same logic to count used tags.
It looks like this:
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$tags = Tag::orderByDesc('name')->get();
$tagCount = count($tags);
$usedTags = Tag::has('articles')->orHas('events')->orderBy('name')->get();
$usedTagsCount = count($usedTags);
return view('pages.tags.index', compact('tags', 'usedTags', 'tagCount', 'usedTagsCount'));
}
I pass all this data to my view which looks like this:
@extends('layouts.app')
@section('title', 'Tags')
@section ('content')
<!-- Breadcrumbs -->
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="breadcrumb-bar">
<ul>
<li>
<a href="">Home</a>
</li>
<li>Tags</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<!-- Search results -->
<div class="col-md-8">
<div class="padded-content-box">
<div class="header">
<div class="row">
<div class="col-xs-12 col-md-12">
<h1 class="heading">
Tags
</h1>
<p>Tags help to categorise your content, below you'll see the tags we currently have on the Intranet. Adding a tag is easy: just add the tag when you next create an article or event.</p>
</div>
</div>
</div>
</div>
<div class="padded-content-box">
<div class="header">
<div class="row">
<div class="col-xs-12 col-md-12">
<h2 class="sub-heading">
All Tags ()
</h2>
</div>
</div>
</div>
<div class="content">
<div class="tag-row">
<div class="tag-words-list">
@foreach($tags as $tag)
<a class="tag-word" title="" href=""></a>
@endforeach
</div>
</div>
</div>
</div>
<div class="padded-content-box">
<div class="header">
<div class="row">
<div class="col-xs-12 col-md-12">
<h2 class="sub-heading">
Tags currently in use ()
</h2>
</div>
</div>
</div>
<div class="content">
@foreach($usedTags as $tag)
<p>
<a class="tag-word" title="" href=""></a>
x
</p>
@endforeach
</div>
</div>
</div>
<div class="col-md-4">
</div>
</div>
</div>
@endsection
As you can see, to show a count of tags used I just add the articles and events that have a given tag.
Is there a cleaner way to do this so that I could order the tags by most used?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire