{"id":24766,"date":"2021-05-19T13:01:00","date_gmt":"2021-05-19T10:01:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24766"},"modified":"2021-10-17T19:03:50","modified_gmt":"2021-10-17T16:03:50","slug":"kuidas-luua-laraveli-abil-blogi","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/kuidas-luua-laraveli-abil-blogi\/","title":{"rendered":"Kuidas luua Laraveli abil blogi"},"content":{"rendered":"<p>Laravel on k\u00f5ige populaarsem PHP raamistik. Me k\u00f5ik teame, et inimesed eelistavad seda raamistikku veebirakenduste loomiseks. Ja Laraveli abil veebisaidi loomisel soovite t\u00f5en\u00e4oliselt oma veebisaidile ajaveebi ehitada. \u00dcldiselt pole Laravel blogimisplatvorm nagu WordPress, kus saate kogu taustaprogrammi oma blogiartiklite haldamiseks valmis. Ja ajaveebis\u00fcsteemi nullist \u00fclesehitamine on \u00fcsna aegan\u00f5udev t\u00f6\u00f6. T\u00e4nu <a href=\"https:\/\/cnvs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Canvas<\/a> mis muudab Laravel arendajad elu lihtne ehitades jahedas avaldades platvormi Laravel.<\/p>\n<p>Paketi Canvas abil saame oma ajaveebi Laravelisse h\u00f5lpsalt ehitada vaid m\u00f5ne minutiga. Canvas tegi blogi taustaprogrammi haldamise nimel juba rasket t\u00f6\u00f6d. K\u00f5ik, mida peate tegema, on lihtsalt hankida andmed ja kuvada need teie kujundusele vastaval esipaneelil.<\/p>\n<p>Seda \u00f6eldes vaatame, kuidas Laraveliga paketti Canvas kasutades blogi luua.<\/p>\n<h3>Alustamine<\/h3>\n<p>Canvasiga alustamiseks peate k\u00f5igepealt vastama Canvas&#8217;i p\u00f5hin\u00f5udele, milleks on kasutaja autentimine. Laravel muudab autentimise juurutamise t\u00f5eliselt lihtsaks. Kui olete Laraveli autentimise juba installinud, j\u00e4tke see samm vahele. Teises terminalis k\u00e4ivitage Laraveli autentimise seadistamiseks \u00fckshaaval j\u00e4rgmised k\u00e4sud.<\/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>Looge Laraveliga ajaveeb, kasutades Canvas Package&#8217;i<\/h3>\n<p>Kui autentimine on kohas, saate l\u00f5uendi installida, k\u00e4ivitades j\u00e4rgmise k\u00e4su:<\/p>\n<pre><code>composer require cnvs\/canvas<\/code><\/pre>\n<p>Paketi installimisel peate avaldama varad ja esmase konfiguratsioonifaili. Avaldage see k\u00e4suga:<\/p>\n<pre><code>php artisan canvas:install<\/code><\/pre>\n<p>Selle k\u00e4su abil leitakse esmane konfiguratsioonifail aadressil <code>config\/canvas.php<\/code>. Selle konfiguratsioonifaili abil saate juhtida erinevaid aspekte. Kuid seda faili peate harva puudutama, kuna k\u00f5ik asjad on kohtades juba m\u00e4\u00e4ratletud.<\/p>\n<p>Samuti loob see teie andmebaasi m\u00f5ned tabelid. See pakett lisab k\u00f5igile neile \u00e4sjaloodud tabelitele eesliite &#8216;canvas_&#8217;.<\/p>\n<p>Mis puudutab blogisid, siis peate alati sisus kasutama pilte. Niisiis, looge s\u00fcmboolne link, et failide \u00fcleslaadimine oleks veebis avalikult k\u00e4ttesaadav.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>See t\u00e4hendab, et n\u00e4ete oma \u00fcleslaaditud pilte <code>public\/storage<\/code>kataloogis.<\/p>\n<p>N\u00fc\u00fcd, kui k\u00e4ivitate URL-i <a href=\"http:\/\/localhost:8000\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ canvas<\/a>, suunate statistika lehele. Kui te pole sisse loginud, v\u00f5ite \u00fcmber logida sisselogimislehele. Siin kasutan localhostit, saate seda URL-i reguleerida.<\/p>\n<p>Statistika lehelt leiate oma ajaveebi p\u00f5hianal\u00fc\u00fctika, n\u00e4iteks vaatamiste arvu, k\u00fclastajate arvu, iga artikli trendi jne.<\/p>\n<p>P\u00e4iseosast saate men\u00fc\u00fcd postituste, siltide, teemade, seadete jms loomiseks. K\u00f5igi nende men\u00fc\u00fcdega peate m\u00e4ngima. See on lihtne ja arusaadav.<\/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=\"Kuidas luua Laraveli abil blogi\" ><\/a><\/p>\n<p>Nupul &quot;Uus postitus&quot; kl\u00f5psates suunatakse teid lehele, kuhu saate oma artikli lisada. Artiklisse saate lisada ka esilet\u00f5stetud pilte, SEO-seadeid, silte, teemasid. Pange t\u00e4hele nupu Avalda k\u00f5rval asuvat kolme punkti. Nendele punktidele kl\u00f5psates saate k\u00f5ik need valikud.<\/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=\"Kuidas luua Laraveli abil blogi\" ><\/a><\/p>\n<p>Pimendatud re\u017eiimi sissel\u00fclitamisel kuvatakse ekraanipildi kohal taustav\u00e4rv Teie puhul v\u00f5ite n\u00e4ha valget tausta. Nii et \u00e4rge laske end segi ajada. Selle tumeda re\u017eiimi funktsiooni leiab kasutaja lehelt Seaded.<\/p>\n<p>L\u00f5uendil on automaatse salvestamise funktsioon, nii et te ei kaota oma t\u00f6\u00f6d.<\/p>\n<p>Selle paketi liides on sirgjooneline. Saate sellega kiiresti tutvuda. J\u00e4rgmine asi, mida me peame n\u00e4gema, on teie artiklite kuvamine esiosas.<\/p>\n<h4>Artiklite avaldamine veebisaidil<\/h4>\n<p>Kui olete taustaprogrammiga valmis saanud, peate oma artiklid kuvama esiosas. See n\u00f5uab kontrolleri failis m\u00f5ne marsruudi ja meetodi m\u00e4\u00e4ratlemist. L\u00f5uendi raamatukogu tegi selle raske t\u00f6\u00f6 teie eest \u00e4ra. Selle teegi GitHubi lehelt saate selle koodi. Lisage oma <code>routes\/web.php<\/code>faili j\u00e4rgmised marsruudid .<\/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>Looge kontroller BlogController k\u00e4suga:<\/p>\n<pre><code>php artisan make:controller BlogController<\/code><\/pre>\n<p>Teie <code>BlogController.php<\/code>k\u00e4sutuses on allolev kood.<\/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>Looge labafailid<\/h4>\n<p>Nagu kontrolleris m\u00e4\u00e4ratletud, loome labafaili <code>blog\/index.blade.php<\/code>ja <code>blog\/show.blade.php<\/code>. Selles \u00f5petuses ei kavatse ma koostada ajaveebi loendi ja \u00fcksikasjade lehte. Kuna iga\u00fchel teist on eraldi kujundus. Tr\u00fckin lihtsalt artikleid labafailile. Kujunduse sobitamist saate rakendada oma veebisaidile.<\/p>\n<p><strong>ajaveeb \/ 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>ajaveeb \/ 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>Ma soovitaksin printida <code>$data<\/code>muutuja ja kontrollida kogu teavet, mida see muutuja omab. T\u00f5en\u00e4oliselt soovite kasutada ka selle muutuja \u00fcksikasju.<\/p>\n<p>Loodan, et saate aru, kuidas Laraveliga paketti Canvas kasutades blogi luua. Selle paketi kohta saate lisateavet <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cnv-de \/ l\u00f5uendi kohta<\/a>.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kuidas-luua-honeypot-vormi-rampspost-voitlemiseks-laravelis\/\" title=\"Kuidas luua Honeypot vormis R\u00e4mpspost v\u00f5itlemiseks Laravelis\">Kuidas luua Honeypot vormis R\u00e4mpspost v\u00f5itlemiseks Laravelis<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/laraveli-varundusrakendus-dropboxis\/\" title=\"Laraveli varundusrakendus Dropboxis\">Laraveli varundusrakendus Dropboxis<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>V\u00f5imalik, et soovite oma rakenduses integreerida ajaveebilehe. Selles artiklis n\u00e4itan teile, kuidas \u00fcks kabiin Laraveliga blogi loob. Kasutaja saab l\u00f5uendit kasutada<\/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":[498],"tags":[842],"class_list":["post-24766","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/24766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=24766"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/24766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20563"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=24766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=24766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=24766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}