namespace App\Templates;
-use App\Models\ProductType;
use App\Models\News;
class Home extends Base
Debugbar::stopMeasure('nav_news');
}
+ // Set extra data for News blade view
+ public function setData(&$data)
+ {
+ $data['news'] = $this->_getNews();
+ $data['events'] = $this->_getEvents();
+ }
+
+ protected function _getNews()
+ {
+
+ $newsItems = [];
+
+ $news = NewsModel::where([
+ ['type', '=', 'news'],
+ ['status', '=', 1],
+ ])
+ ->orderBy('date', 'desc')
+ ->get();
+
+ foreach ($news as $newsItem) {
+ $newsItems[$newsItem->id] = $newsItem;
+ }
+
+ return $newsItems;
+
+ }
+
+ protected function _getEvents()
+ {
+
+ $eventItems = [];
+
+ $events = NewsModel::where([
+ ['type', '=', 'event'],
+ ['status', '=', 1],
+ ])
+ ->orderBy('date', 'desc')
+ ->take(2)
+ ->get();
+
+ foreach ($events as $eventItem) {
+ $eventItems[$eventItem->id] = $eventItem;
+ }
+
+ return $eventItems;
+
+ }
+
}
display: grid
constrain(grid-gap, 2.5vw)
grid-template: "image body sidebar" auto / 1fr 2fr 1fr
+ grid-template-rows: max-content
+ grid-template-columns: auto
+below(1200px)
- grid-template: "image sidebar" "body sidebar"
+ grid-template-areas: "image sidebar" "body sidebar"
grid-column-gap: 5vw
+below(700px)
- grid-template: "image" "body" "sidebar"
+ grid-template-areas: "image" "body" "sidebar"
grid-row-gap: 5vw
&-image
$newsURL = $nav->getHrefByID("news/{$newsItem->id}");
@endphp
- <div>
+ <article>
<a href="{{ $newsURL }}">
{{--Todo: handle missing images + get correct image size--}}
<img class="mb-4" src="{{ $newsItem->getFirstMediaUrl($newsItem->image, 'thumb') }}" alt="{{ $newsItem->title }}">
<h4 class="font-display">{{ $newsItem->title }}</h4>
<p>{{ $newsItem['chapo'] }}</p>
- <p><a href="{{ $newsURL }}">Lire la suite</a></p>
- </div>
+ <p><a href="{{ $newsURL }}">{{ __('Lire la suite') }}</a></p>
+ </article>
@endforeach
</grid>
</content>
--- /dev/null
+@extends('layouts.app')
+
+@section('content')
+
+ <full-width padding="pb-3v">
+ <content>
+
+ {{-- Todo: use grid for main (generic?) sidebar layout and utilise minmax for content? --}}
+ <div class="news-index-layout flex">
+
+ <div class="news-items">
+ @foreach ($news as $newsItem)
+ @php
+ $newsURL = $nav->getHrefByID("news/{$newsItem->id}");
+ @endphp
+
+ {{-- Todo: use smaller grid for each article: 1fr image, 2fr content with a minmax on image to auto wrap --}}
+ <article class="flex">
+
+ <a href="{{ $newsURL }}" class="news-item-image">
+ {{--Todo: handle missing images + get correct image size--}}
+ <img class="mb-1v mr-1v" src="{{ $newsItem->getFirstMediaUrl($newsItem->image, 'thumb') }}" alt="{{ $newsItem->title }}">
+ </a>
+
+ <div class="news-item-text">
+ <h4 class="font-display">{{ $newsItem->title }}</h4>
+ <p>{{ $newsItem['chapo'] }}</p>
+
+ <p><a href="{{ $newsURL }}">{{ __('En savoir plus') }}</a></p>
+ </div>
+
+ </article>
+ @endforeach
+ </div>
+
+ <div class="news-sidebar">
+ <div class="bg-grey-100 p-1v mb-1v">
+ Events
+ </div>
+
+ <div class="bg-grey-100 p-1v">
+ Newsletter subscribe
+ </div>
+ </div>
+
+ </div>
+
+ </content>
+ </full-width>
+@endsection
// the sm: prefix in Tailwind. Maybe there's a better name for this breakpoint but for now it's 'sm'.
// Sizes should be listed largest to smallest so they are generated in this order, allowing smaller
// breakpoints to take precedence over larger ones (eg. xs:p-1 should override sm:p-2)
- 'xl': {'max': '1450px'}, // => @media (max-width: 1450px) { ... }
- 'lg': {'max': '1280px'}, // => @media (max-width: 1280px) { ... }
+ //'xl': {'max': '1450px'}, // => @media (max-width: 1450px) { ... }
+ //'lg': {'max': '1280px'}, // => @media (max-width: 1280px) { ... }
'md': {'max': '1023px'}, // => @media (max-width: 1023px) { ... }
'sm': {'max': '767px'}, // => @media (max-width: 767px) { ... }
'xs': {'max': '499px'}, // => @media (max-width: 499px) { ... }