{"id":24449,"date":"2021-05-19T12:53:00","date_gmt":"2021-05-19T09:53:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24449"},"modified":"2021-10-18T02:40:51","modified_gmt":"2021-10-17T23:40:51","slug":"so-erstellen-sie-einen-blog-mit-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-erstellen-sie-einen-blog-mit-laravel\/","title":{"rendered":"So erstellen Sie einen Blog mit Laravel"},"content":{"rendered":"<p>Laravel ist das beliebteste PHP-Framework. Wir alle wissen, dass die Leute dieses Framework bevorzugen, um ihre Webanwendungen zu erstellen. Und w\u00e4hrend Sie mit Laravel eine Website erstellen, m\u00f6chten Sie wahrscheinlich einen Blog auf Ihrer Website erstellen. Im Allgemeinen ist Laravel keine Blogging-Plattform wie WordPress, auf der Sie alle Backend-Zeugs bereithalten, um Ihre Blogartikel zu verwalten. Und das Blog-System von Grund auf neu aufzubauen, ist ziemlich zeitaufwendig. Dank <a href=\"https:\/\/cnvs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Canvas<\/a>, das Laravel-Entwicklern das Leben erleichtert, indem es eine coole Publishing-Plattform f\u00fcr Laravel erstellt.<\/p>\n<p>Mit dem Canvas-Paket k\u00f6nnen wir unseren Blog in Laravel in nur wenigen Minuten erstellen. Canvas hat bereits harte Arbeit geleistet, um die Backend-Sachen des Blogs zu verwalten. Sie m\u00fcssen nur die Daten abrufen und im Frontend passend zu Ihrem Design anzeigen.<\/p>\n<p>Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie mit Laravel mit dem Canvas-Paket einen Blog erstellen.<\/p>\n<h3>Einstieg<\/h3>\n<p>Um mit Canvas zu beginnen, m\u00fcssen Sie zun\u00e4chst die grundlegende Anforderung von Canvas erf\u00fcllen, n\u00e4mlich die Benutzerauthentifizierung. Laravel macht die Implementierung der Authentifizierung wirklich einfach. Wenn Sie die Laravel-Authentifizierung bereits installiert haben, \u00fcberspringen Sie diesen Schritt. Ansonsten f\u00fchren Sie in Ihrem Terminal die folgenden Befehle nacheinander aus, um die Laravel-Authentifizierung einzurichten.<\/p>\n<pre><code>composer require laravel\/ui --dev\nphp artisan ui vue --auth\nnpm install &amp;&amp; npm run dev\n<\/code><\/pre>\n<h3>Erstellen Sie einen Blog mit Laravel mit Canvas Package<\/h3>\n<p>Sobald die Authentifizierung erfolgt ist, k\u00f6nnen Sie den Canvas installieren, indem Sie den folgenden Befehl ausf\u00fchren:<\/p>\n<pre><code>composer require cnvs\/canvas<\/code><\/pre>\n<p>Nach der Paketinstallation m\u00fcssen Sie Assets und die prim\u00e4re Konfigurationsdatei ver\u00f6ffentlichen. Ver\u00f6ffentlichen Sie es mit dem Befehl:<\/p>\n<pre><code>php artisan canvas:install<\/code><\/pre>\n<p>Dieser Befehl w\u00fcrde die prim\u00e4re Konfigurationsdatei unter suchen <code>config\/canvas.php<\/code>. Mit dieser Konfigurationsdatei k\u00f6nnen Sie verschiedene Aspekte steuern. Aber Sie m\u00fcssen diese Datei selten anfassen, da alles an den Stellen bereits definiert ist.<\/p>\n<p>Es erstellt auch einige Tabellen in Ihrer Datenbank. Dieses Paket f\u00fcgt all diesen neu erstellten Tabellen ein &#8218;canvas_&#8216;-Pr\u00e4fix hinzu.<\/p>\n<p>Wenn es um Blogs geht, m\u00fcssen Sie immer Bilder im Inhalt verwenden. Erstellen Sie daher einen symbolischen Link, um sicherzustellen, dass Datei-Uploads \u00f6ffentlich \u00fcber das Web zug\u00e4nglich sind.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Das bedeutet, dass Sie Ihre hochgeladenen Bilder im <code>public\/storage<\/code>Verzeichnis sehen werden.<\/p>\n<p>Wenn Sie nun die URL <a href=\"http:\/\/localhost:8000\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost:8000\/canvas<\/a> ausf\u00fchren, werden Sie auf die Statistikseite umgeleitet. Sie k\u00f6nnen auf die Login-Seite umleiten, wenn Sie nicht eingeloggt sind. Hier verwende ich den localhost, Sie k\u00f6nnen diese URL anpassen.<\/p>\n<p>Auf der Statistikseite erhalten Sie grundlegende Analysen Ihres Blogs wie die Anzahl der Aufrufe, Besucher, der Trend jedes Artikels usw.<\/p>\n<p>Aus dem Header-Bereich k\u00f6nnen Sie die Men\u00fcs zum Erstellen von Beitr\u00e4gen, Tags, Themen, Einstellungen usw. abrufen. Sie m\u00fcssen mit all diesen Men\u00fcs spielen. Es ist einfach und leicht zu verstehen.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-6082053455c32.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-6082053455c32.png\" alt=\"So erstellen Sie einen Blog mit Laravel\" ><\/a><\/p>\n<p>Wenn Sie auf die Schaltfl\u00e4che \u201eNeuer Beitrag&#8220; klicken, werden Sie auf eine Seite weitergeleitet, auf der Sie Ihren Artikel hinzuf\u00fcgen k\u00f6nnen. Sie k\u00f6nnen dem Artikel auch vorgestellte Bilder, SEO-Einstellungen, Tags und Themen hinzuf\u00fcgen. Beachten Sie die drei Punkte neben der Schaltfl\u00e4che Ver\u00f6ffentlichen. Wenn Sie auf diese Punkte klicken, erhalten Sie alle diese Optionen.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-608205351f558.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20562-608205351f558.png\" alt=\"So erstellen Sie einen Blog mit Laravel\" ><\/a><\/p>\n<p>Der obige Screenshot zeigt die Hintergrundfarbe, wenn ich den Dunkelmodus aktiviert habe. In Ihrem Fall sehen Sie m\u00f6glicherweise den wei\u00dfen Hintergrund. Also nicht damit verwechseln. Der Benutzer kann diese Dunkelmodusfunktion auf der Seite Einstellungen finden.<\/p>\n<p>Canvas verf\u00fcgt \u00fcber eine automatische Speicherfunktion, damit Sie Ihre Arbeit nicht verlieren.<\/p>\n<p>Die Schnittstelle dieses Pakets ist unkompliziert. Sie k\u00f6nnen sich in k\u00fcrzester Zeit leicht damit vertraut machen. Als n\u00e4chstes m\u00fcssen wir Ihre Artikel im Frontend anzeigen.<\/p>\n<h4>Ver\u00f6ffentlichung von Artikeln auf der Website<\/h4>\n<p>Sobald Sie mit dem Backend fertig sind, m\u00fcssen Sie Ihre Artikel im Frontend anzeigen. Dazu m\u00fcssen einige Routen und Methoden in der Controller-Datei definiert werden. Die Canvas-Bibliothek hat diese harte Arbeit f\u00fcr Sie erledigt. Auf der GitHub-Seite dieser Bibliothek erhalten Sie den Code daf\u00fcr. F\u00fcgen Sie die folgenden Routen in Ihre <code>routes\/web.php<\/code>Datei ein.<\/p>\n<pre><code>\/\/ Get all published posts\nRoute::get('blog', 'BlogController@getPosts');\n\u00a0\n\/\/ Get posts for a given tag\nRoute::get('tag\/{slug}', 'BlogController@getPostsByTag');\n\u00a0\n\/\/ Get posts for a given topic\nRoute::get('topic\/{slug}', 'BlogController@getPostsByTopic');\n\u00a0\n\/\/ Find a single post\nRoute::middleware('CanvasHttpMiddlewareSession')-&gt;get('{slug}', 'BlogController@findPostBySlug');<\/code><\/pre>\n<p>Erstellen Sie einen Controller BlogController mit dem Befehl:<\/p>\n<pre><code>php artisan make:controller BlogController<\/code><\/pre>\n<p>Sie <code>BlogController.php<\/code>erhalten den unten stehenden Code.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass BlogController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function getPosts()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function getPostsByTag(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (CanvasTag::where('slug', $slug)-&gt;first()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::whereHas('tags', function ($query) use ($slug) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$query-&gt;where('slug', $slug);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})-&gt;published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function getPostsByTopic(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (CanvasTopic::where('slug', $slug)-&gt;first()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts' =&gt; CanvasPost::whereHas('topic', function ($query) use ($slug) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$query-&gt;where('slug', $slug);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})-&gt;published()-&gt;orderByDesc('published_at')-&gt;simplePaginate(10),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.index', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function findPostBySlug(string $slug)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$posts = CanvasPost::with('tags', 'topic')-&gt;published()-&gt;get();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$post = $posts-&gt;firstWhere('slug', $slug);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (optional($post)-&gt;published) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'author' =&gt; $post-&gt;user,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post'\u00a0\u00a0 =&gt; $post,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'meta'\u00a0\u00a0 =&gt; $post-&gt;meta,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ IMPORTANT: This event must be called for tracking visitor\/view traffic\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0event(new CanvasEventsPostViewed($post));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('blog.show', compact('data'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0abort(404);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<h4>Blade-Dateien erstellen<\/h4>\n<p>Wie im Controller definiert, erstellen wir eine Blade-Datei <code>blog\/index.blade.php<\/code>und <code>blog\/show.blade.php<\/code>. In diesem Tutorial werde ich keine Blog-Liste und Detailseite entwerfen. Da jeder von euch ein eigenes Design hat. Ich werde nur Artikel \u00fcber die Blade-Datei drucken. Sie k\u00f6nnen Design-Matching mit Ihrer Website anwenden.<\/p>\n<p><strong>blog\/index.blade.php<\/strong><\/p>\n<pre><code>&lt;ul&gt;\n\u00a0\u00a0\u00a0\u00a0@foreach($data['posts'] as $d)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;&lt;a href=\"{{url($d['slug'])}}\"&gt;{{ $d['title'] }}&lt;\/a&gt;&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;{!! $d['body'] !!}&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0@endforeach\n&lt;\/ul&gt;<\/code><\/pre>\n<p><strong>blog\/show.blade.php<\/strong><\/p>\n<pre><code>@if($data['post']['featured_image'])\n\u00a0\u00a0\u00a0\u00a0&lt;img src=\"{{ url($data['post']['featured_image']) }}\" alt=\"{{ $data['post']['featured_image_caption'] }}\" \/&gt;\n@endif\n&lt;h2&gt;{{ $data['post']['title'] }}&lt;\/h2&gt;\n{!! $data['post']['body'] !!}<\/code><\/pre>\n<p>Ich w\u00fcrde vorschlagen, die <code>$data<\/code>Variable zu drucken und die gesamten Informationen zu \u00fcberpr\u00fcfen, die diese Variable enth\u00e4lt. Sie m\u00f6chten wahrscheinlich auch andere Details aus dieser Variablen verwenden.<\/p>\n<p>Ich hoffe, Sie verstehen, wie Sie mit Laravel mithilfe eines Canvas-Pakets einen Blog erstellen. Weitere <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Informationen zu<\/a> diesem Paket finden Sie unter <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cnvs\/canvas<\/a>.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-erstellen-sie-einen-honeypot-fuer-den-kampf-gegen-formular-spam-in-laravel\/\" title=\"So erstellen Sie einen Honeypot f\u00fcr den Kampf gegen Formular-Spam in Laravel\">So erstellen Sie einen Honeypot f\u00fcr den Kampf gegen Formular-Spam in Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/backup-der-laravel-anwendung-auf-dropbox\/\" title=\"Backup der Laravel-Anwendung auf Dropbox\">Backup der Laravel-Anwendung auf Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Ihre Anwendung m\u00f6chten Sie vielleicht eine Blog-Seite integrieren. In diesem Artikel zeige ich dir, wie man mit Laravel einen Blog erstellt. Der Benutzer kann die Leinwand verwenden<\/p>\n","protected":false},"author":1,"featured_media":20563,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[496],"tags":[845],"class_list":["post-24449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=24449"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24449\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20563"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=24449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=24449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=24449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}