{"id":28013,"date":"2021-05-19T13:16:00","date_gmt":"2021-05-19T10:16:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28013"},"modified":"2021-10-17T16:57:49","modified_gmt":"2021-10-17T13:57:49","slug":"como-crear-un-blog-con-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-crear-un-blog-con-laravel\/","title":{"rendered":"C\u00f3mo crear un blog con Laravel"},"content":{"rendered":"<p>Laravel es el framework PHP m\u00e1s popular. Todos sabemos que la gente prefiere este marco para crear sus aplicaciones web. Y mientras crea un sitio web con Laravel, probablemente desee crear un blog en su sitio web. En general, Laravel no es una plataforma de blogs como WordPress donde tienes todo el material de backend listo para administrar los art\u00edculos de tu blog. Y construir el sistema de blogs desde cero es un trabajo que requiere bastante tiempo. Gracias a <a href=\"https:\/\/cnvs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Canvas,<\/a> que facilita la vida de los desarrolladores de Laravel al crear una plataforma de publicaci\u00f3n genial para Laravel.<\/p>\n<p>Usando el paquete Canvas, podemos construir f\u00e1cilmente nuestro blog en Laravel en solo unos minutos. Canvas ya hizo un trabajo duro para administrar el backend del blog. Todo lo que necesita hacer es obtener los datos y mostrarlos en la interfaz que coincida con su dise\u00f1o.<\/p>\n<p>Habiendo dicho eso, echemos un vistazo a c\u00f3mo crear un blog con Laravel usando el paquete Canvas.<\/p>\n<h3>Empezando<\/h3>\n<p>Para comenzar con Canvas, primero debe satisfacer el requisito b\u00e1sico de Canvas, que es la autenticaci\u00f3n de usuario. Laravel hace que la implementaci\u00f3n de la autenticaci\u00f3n sea realmente simple. Si ya ha instalado la autenticaci\u00f3n de Laravel, omita este paso. De lo contrario, en su terminal, ejecute los siguientes comandos uno por uno para configurar la autenticaci\u00f3n de Laravel.<\/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>Crea un blog con Laravel usando Canvas Package<\/h3>\n<p>Una vez que la autenticaci\u00f3n est\u00e1 en el lugar, puede instalar Canvas ejecutando el siguiente comando:<\/p>\n<pre><code>composer require cnvs\/canvas<\/code><\/pre>\n<p>Tras la instalaci\u00f3n del paquete, debe publicar los activos y el archivo de configuraci\u00f3n principal. Publ\u00edcalo usando el comando:<\/p>\n<pre><code>php artisan canvas:install<\/code><\/pre>\n<p>Este comando ubicar\u00eda el archivo de configuraci\u00f3n principal en <code>config\/canvas.php<\/code>. Puede controlar varios aspectos utilizando este archivo de configuraci\u00f3n. Pero rara vez es necesario tocar este archivo, ya que todas las cosas ya est\u00e1n definidas en los lugares.<\/p>\n<p>Tambi\u00e9n crea algunas tablas en su base de datos. Este paquete agrega un prefijo &#8216;lienzo_&#8217; a todas estas tablas reci\u00e9n creadas.<\/p>\n<p>Cuando se trata de blogs, siempre es necesario utilizar im\u00e1genes en el contenido. Por lo tanto, cree un enlace simb\u00f3lico para garantizar que las cargas de archivos sean de acceso p\u00fablico desde la web.<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Significa que ver\u00e1 sus im\u00e1genes cargadas dentro del <code>public\/storage<\/code>directorio.<\/p>\n<p>Ahora, si ejecuta la URL <a href=\"http:\/\/localhost:8000\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http: \/\/ localhost: 8000 \/ canvas<\/a>, lo redireccionar\u00e1 a la p\u00e1gina de estad\u00edsticas. Puede redirigir a la p\u00e1gina de inicio de sesi\u00f3n si no ha iniciado sesi\u00f3n. Aqu\u00ed uso el localhost, puede ajustar esta URL.<\/p>\n<p>En la p\u00e1gina de estad\u00edsticas, obtendr\u00e1s an\u00e1lisis b\u00e1sicos de tu blog como el n\u00famero de visitas, visitantes, la tendencia de cada art\u00edculo, etc.<\/p>\n<p>Desde la secci\u00f3n de encabezado, puede obtener los men\u00fas para crear publicaciones, etiquetas, temas, Configuraci\u00f3n, etc. Tiene que jugar con todos estos men\u00fas. Es simple y f\u00e1cil de entender.<\/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=\"C\u00f3mo crear un blog con Laravel\" ><\/a><\/p>\n<p>Al hacer clic en el bot\u00f3n &#8216;Nueva publicaci\u00f3n&#8217;, lo redireccionar\u00e1 a una p\u00e1gina donde puede agregar su art\u00edculo. Tambi\u00e9n puede agregar im\u00e1genes destacadas, configuraciones de SEO, etiquetas, temas al art\u00edculo. Observe los tres puntos junto al bot\u00f3n Publicar. Al hacer clic en estos puntos, obtienes todas estas opciones.<\/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=\"C\u00f3mo crear un blog con Laravel\" ><\/a><\/p>\n<p>La captura de pantalla anterior muestra el color de fondo cuando configuro el modo oscuro en encendido. En su caso, es posible que vea el fondo blanco. As\u00ed que no se confunda con \u00e9l. El usuario puede encontrar esta funci\u00f3n de modo oscuro en la p\u00e1gina de Configuraci\u00f3n.<\/p>\n<p>Canvas tiene una funci\u00f3n de guardado autom\u00e1tico para que no pierda su trabajo.<\/p>\n<p>La interfaz de este paquete es sencilla. Puede familiarizarse f\u00e1cilmente con \u00e9l en poco tiempo. Lo siguiente que debemos ver es mostrar sus art\u00edculos en la interfaz.<\/p>\n<h4>Publicaci\u00f3n de art\u00edculos en el sitio web<\/h4>\n<p>Una vez que haya terminado con el backend, debe mostrar sus art\u00edculos en el front-end. Requiere definir algunas rutas y m\u00e9todos en el archivo del controlador. La biblioteca Canvas hizo este arduo trabajo por usted. En la p\u00e1gina de GitHub de esta biblioteca, obtendr\u00e1 el c\u00f3digo correspondiente. Agregue las siguientes rutas en su <code>routes\/web.php<\/code>archivo.<\/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>Cree un controlador BlogController usando el comando:<\/p>\n<pre><code>php artisan make:controller BlogController<\/code><\/pre>\n<p>Su <code>BlogController.php<\/code>tendr\u00e1n el c\u00f3digo de abajo.<\/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>Crear archivos Blade<\/h4>\n<p>Como se define en el controlador, creemos un archivo blade <code>blog\/index.blade.php<\/code>y <code>blog\/show.blade.php<\/code>. En este tutorial, no voy a dise\u00f1ar una lista de blogs ni una p\u00e1gina de detalles. Como cada uno de ustedes tiene un dise\u00f1o diferente. Solo voy a imprimir art\u00edculos en el archivo Blade. Puede aplicar un dise\u00f1o que coincida con su sitio web.<\/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>Sugerir\u00eda imprimir la <code>$data<\/code>variable y verificar toda la informaci\u00f3n que contiene esta variable. Probablemente desee utilizar otros detalles tambi\u00e9n de esta variable.<\/p>\n<p>Espero que entiendas c\u00f3mo crear un blog con Laravel usando un paquete Canvas. Puede obtener m\u00e1s informaci\u00f3n sobre este paquete en <a href=\"https:\/\/github.com\/cnvs\/canvas\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cnvs \/ canvas<\/a>.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-crear-honeypot-para-combatir-el-spam-de-formularios-en-laravel\/\" title=\"C\u00f3mo crear Honeypot para combatir el spam de formularios en Laravel\">C\u00f3mo crear Honeypot para combatir el spam de formularios en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/copia-de-seguridad-de-la-aplicacion-laravel-en-dropbox\/\" title=\"Copia de seguridad de la aplicaci\u00f3n Laravel en Dropbox\">Copia de seguridad de la aplicaci\u00f3n Laravel en Dropbox<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En su aplicaci\u00f3n, es posible que desee integrar una p\u00e1gina de blog. En este art\u00edculo, te muestro c\u00f3mo one cab crea un blog con Laravel. El usuario puede usar el lienzo.<\/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":[495],"tags":[849],"class_list":["post-28013","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28013"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28013\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/20563"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}