es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrando las palabras clave de las metaetiquetas como datos JSON de la base de datos no parece estar funcionando.

Estoy trabajando con Laravel 5.8 y quiero actualizar las palabras clave de mi página como datos JSON.

Entonces creé una nueva columna llamada prd_meta_keywords y le asigné la estructura JSON.

Ahora puedo insertar datos JSON correctamente en esta columna, como en este ejemplo:

[
    "video product",
    "new product"
]

Y para recuperar estos datos en Blade, hice lo siguiente:

@section('meta')
   <meta name="keywords" content="@if(!empty($product->prd_meta_keywords)) @if(is_array($product->prd_meta_keywords) || is_object($product->prd_meta_keywords)) @foreach(json_decode($product->prd_meta_keywords) as $keyword) {{$keyword}}{{$loop->remaining ? ',' : ''}} @endforeach @endif @endif">
@endsection

Pero como puedes ver, no funciona y no muestra las palabras clave en el código fuente de la página:

<meta name="keywords" content="">

Sin embargo, puedo obtener correctamente el resultado de @dd(json_decode($product->prd_meta_keywords)).

Entonces, ¿qué está saliendo mal aquí? ¿Cómo puedo recuperar estos datos JSON como etiquetas de palabras clave correctamente en Blade?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Obtención de datos JSON como etiquetas de palabras clave en Laravel 5.8

    Si has configurado una nueva columna llamada prd_meta_keywords con el tipo de datos JSON para actualizar las palabras clave meta de tu página, es posible que te encuentres con un problema al intentar obtener estos datos en tu plantilla Blade. A continuación se describe la solución a este problema.

    El problema

    Cuando intentas obtener datos JSON como etiquetas de palabras clave en Blade utilizando el siguiente código:

    @section('meta')
        <meta name="keywords" content="@if(!empty($product->prd_meta_keywords)) @if(is_array($product->prd_meta_keywords) || is_object($product->prd_meta_keywords)) @foreach(json_decode($product->prd_meta_keywords) as $keyword) {{$keyword}}{{$loop->remaining ? ',' : ''}} @endforeach @endif @endif">
    @endsection
    

    Es posible que notes que las etiquetas no aparecen en el código fuente de la página y que el resultado sea el siguiente:

    <meta name="keywords" content="">
    

    La solución

    Para obtener correctamente los datos JSON como etiquetas de palabras clave en Blade, debes utilizar la función join para concatenar los elementos del array y separarlos por una coma. Puedes modificar el código de la siguiente manera:

    @section('meta')
        <meta name="keywords" content="@if(!empty($product->prd_meta_keywords)){{join(',',$product->prd_meta_keywords)}}@endif">
    @endsection
    

    En este código actualizado, comprobamos si el campo prd_meta_keywords no está vacío. Si no está vacío, utilizamos la función join para concatenar los elementos del array con una coma y generar las etiquetas de palabras clave.

    Con esta modificación, deberías poder obtener datos JSON como etiquetas de palabras clave en Laravel 5.8 Blade.

Comments are closed.