前提・実現したいこと
Qiitaの様なナレッジベースサイトを作っています。すでに、新規のコンテンツ投稿時にマークダウン形式で入力ができる機能を実装できています。
現在、投稿の「一覧」を表示するページを製作中にて、マークダウンを外したテキストを表示させたいのですが、どう実装すれば良いのかわからず、困っています。
以下の、マークダウンをつける方は、無事に実装済みです。
- マークダウンへの変換にはmarked.jsを導入
- 入力時のリアルタイムプレビューも実装
- マークダウンの付いたオリジナルテキストをデータベースへ保存
- 投稿記事の詳細ページでは、データベースから呼び出した後にhtml化して画面に表示させる
発生している問題・エラーメッセージ
現状は、以下の画像の通りで、マークダウンの特殊記号が付いたテキストをそのまま返しています。
マークダウンを外すモジュールには、remove-markdown.jsを使用しており、jsファイルに直打ちでマークダウンの付いたテキストを入れると、マークダウンが外れた状態で表示されるので、モジュール自体は問題なく動作しています。
必要なのは、投稿の一覧を表示するviewファイルから、モジュールのコードのあるjsファイルまでテキストを投げてあげて、マークダウンを外したテキストを、再び一覧のviewファイルに戻してあげるということだと思うのですが、実装の方法がよくわかりません。
該当のソースコード
一覧を表示させるページです。 @foreach ($posts as $post)で、投稿毎にボディテキスト、タイトル、投稿日時などを表示させています。
この投稿一件ごとの処理の間( @foreach の中)で、ボディテキストを取得して、マークダウンを外す処理を入れてあげる様なイメージをしているのですが、この途中でスクリプトを書き込む(インナースクリプト?)ことは問題ないのでしょうか?
全く別のやり方、例えば文章全体をロードした後に、全部からマークダウンを外す処理を全部にかける?とかがあるでしょうか。教えていただけると嬉しいです。
php
1@extends('layouts.app') 2 3@section('content') 4 <div class="container mt-4"> 5 6 <div class="mb-4"> 7 <a href="{{ route('posts.create') }}" class="btn btn-primary"> 8 投稿を新規作成する 9 </a> 10 </div> 11 12 @foreach ($posts as $post) 13 <div class="card mb-4"> 14 <div class="card-header"> 15 タイトル: {{ $post->title }} 16 投稿者: 17 <a href="{{ route('users.show', ['username' => $post->user->name]) }}"> 18 {{ $post->user->name }} 19 </a> 20 </div> 21 22 <div class="card-body"> 23 <p class="card-text"> 24 {{-- 投稿のボディテキストの一部を表示させている --}} 25 <li> {{ \Illuminate\Support\Str::limit($post->body, 140) }} 26 </p> 27 28 {{-- <script> 29 ここら辺で、remove-markdown.jsを呼び出しているjsファイルへテキストを投げて、結果を受け取る処理を入れるイメージでしょうか? 30 </script> --}} 31 32 33 <a class="card-link" href="{{ route('posts.show', ['post' => $post]) }}"> 34 続きを読む 35 </a> 36 <p class="card-text"> 37 @foreach ($post->tags as $tag) 38 <a href="{{ route('tags.show', ['id' => $tag]) }}"> 39 #{{ $tag->name }} 40 </a> 41 @endforeach 42 </p> 43 </div> 44 45 <div class="card-footer"> 46 <span class="mr-2"> 47 投稿日時 {{ $post->created_at->format('Y.m.d') }} 48 </span> 49 @if ($post->comments->count()) 50 <span class="badge badge-primary"> 51 コメント {{ $post->comments->count() }}件 52 </span> 53 @endif 54 </div> 55 56 </div> 57 @endforeach 58 59 {{-- ページネーション --}} 60 <div class="d-flex justify-content-center mb-5"> 61 {{ $posts->links() }} 62 </div> 63 64 </div> 65@endsection 66 67 68@section('javascript-footer') 69 {{-- この場所に画面毎(フッタ位置)のjsを記述する --}} 70@endsection 71
補足情報(FW/ツールのバージョンなど)
Laravel6のフレームワークを使用しています、表側はjQuery(javascript)で実装しています。マークダウンとリマークダウンでは以下のモジュールを使用しています。
どうぞよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/31 14:30