detall post - pagina /posts al projecte laravel12.test (blog cassic)

Creado en: 2025-03-21 13:27:58

Actualizado en: 2025-03-21 13:27:58

pagines

laravel12.test blog

pagina /posts al projecte laravel12.test (blog cassic)

route: 

Route::get('/posts', [PostController::class, 'index'])->name('posts.index');

funcio a controlller: C:\projectes\LARAVEL\laravel12\app\Http\Controllers\PostController.php

public function index(Request $request)
    {
        $query = Post::with(['category', 'etiquetas']);

        if ($request->has('search')) {
            $query->where('title', 'like', '%' . $request->search . '%');
        }

        // Ordenar los resultados por el campo 'updated_at' en orden descendente
        $query->orderBy('updated_at', 'desc');
        $posts = $query->get();

        // Obtener todas las categorías para la lista horizontal
        $categories = Category::all();

        return view('posts.index', compact('posts', 'categories'));
    }

view:C:\projectes\LARAVEL\laravel12\resources\views\posts\index.blade.php

@extends('layouts.prova')
@section('ruta', '/')
@section('title', 'posts')
@section('descripcio', 'entrades blog una columna vertical de tailblocks i amb un filtre per categories')
@section('content')

    <section class="text-gray-600 body-font overflow-hidden">
        <div class="container px-5 mx-auto">

            <!-- ponerle tailwind background image a este div -->
            <div class="container w-full mx-auto text-center bg-cover bg-center mb-8">
                <h1
                    class="mb-2 text-4xl font-extrabold leading-none tracking-normal text-gray-900 md:text-6xl md:tracking-tight text-center">@yield ('ruta')<span class="block w-full py-2 text-transparent bg-clip-text leading-12 bg-gradient-to-r from-green-400 to-purple-500 lg:inline">@yield          ('title')</span>
                </h1>
                <p class="font-mono font-light italic text-center "><a href="https://tailblocks.cc/">@yield ('descripcio')
                    </a></p>
            </div>
            <!-- Lista horizontal de categorías -->
            <div class="flex flex-wrap justify-center py-4 mb-8">
                @foreach ($categories as $category)
                    <a href="{{ route('posts.category', $category->id) }}"
                        class="uppercase text-gray-900 font-extrabold hover:text-teal-700 mx-2">
                        {{ $category->name }}
                    </a>
                @endforeach
            </div>
            <!-- Formulario de búsqueda -->
            <form method="GET" action="{{ route('posts.index') }}" class="mb-8">
                <div class="flex items-center border-b border-orange-500 py-2">
                    <input type="text" name="search" placeholder="Fes una cerca per el nom de l'entrada"
                        class="appearance-none border-none w-full text-teal-500 mr-3 py-1 px-2 leading-tight focus:outline-none">
                    <button type="submit"
                        class="flex-shrink-0 bg-teal-500 hover:bg-teal-700 border-teal-500 hover:border-teal-700 text-sm border-4 text-white py-1 px-2 rounded">
                        Buscar
                    </button>
                </div>
            </form>
            <div class="-my-8 divide-y-2 divide-gray-100">
                @foreach ($posts as $post)
                    <div class="py-8 flex flex-wrap md:flex-nowrap">
                        <div class="md:w-64 md:mb-0 mb-6 flex-shrink-0 flex flex-col">
                            <a href="{{ route('posts.category', $post->category->id) }}"
                                class="font-semibold title-font text-gray-700">{{ $post->category->name }}</a>
                            <span class="mt-1 text-gray-500 text-sm">{{ $post->updated_at }}</span>
                            <img data-fancybox src="/storage/{{ $post->img }}" align="left" width="250"
                                height="" />
                        </div>
                        <div class="md:flex-grow">
                            <div class="max-w-4xl mx-auto bg-white p-6 rounded-lg shadow-lg">
                                <a href="/posts/detalle/{{ $post->id }}">
                                    <h1 class="text-2xl font-bold mb-4 break-words">{{ $post->title }}</h1>
                                    <div class="flex space-x-4 mt-4">
                                        @if ($post->url)
                                            <a href="{{ $post->url }}" target="_blank" class="text-blue-500">
                                                <i class="fas fa-link"></i>
                                            </a>
                                        @endif
                                        @if ($post->ins)
                                            <a href="{{ $post->ins }}" target="_blank" class="text-pink-500">
                                                <i class="fab fa-instagram"></i>
                                            </a>
                                        @endif
                                        @if ($post->face)
                                            <a href="{{ $post->face }}" target="_blank" class="text-blue-700">
                                                <i class="fab fa-facebook"></i>
                                            </a>
                                        @endif
                                        @if ($post->youtube)
                                            <a data-fancybox="gallery" href="{{ $post->youtube }}" target="_blank"
                                                class="text-red-500">
                                                <i class="fab fa-youtube"></i>
                                            </a>
                                        @endif
                                    </div>
                                    <div class="mb-4">
                                        @foreach ($post->etiquetas as $etiqueta)
                                            <a href="{{ route('posts.etiqueta', $etiqueta->id) }}"
                                                class="text-blue-500 hover:underline">{{ $etiqueta->name }}</a>
                                        @endforeach
                                    </div>
                                    <p class="mb-4">{!! $post->excerpt !!}</p>
                                    @php
                                        $directory = public_path('img/people/' . $post->title);
                                    @endphp
                                    @if (file_exists($directory) && is_dir($directory))
                                        <a href="{{ route('gallery.detalle', ['title' => $post->title]) }}"
                                            class="text-blue-500 hover:underline">
                                            <i class="fas fa-folder-open text-yellow-500 mr-2"></i>
                                            View Gallery
                                        </a>
                                    @else
                                        <p class="text-red-500">No images available</p>
                                    @endif
                            </div>
                        </div>
                    </div>
                @endforeach
            </div>
        </div>
    </section>

@stop

pagina /posts al projecte laravel12.test (blog cassic)