Help us understand the problem. What is going on with this article?

OctoberCMSによるComponent作成

コンポーネントによる振り分け処理(未完成)

処理自体は主にphpで行う。
コンポーネントの外側の作成方法はこちら

コンポーネントの登録

Plugin.php
    public function registerComponents()
    {
        return [
            '<プラグイン名>\<プロジェクト名>\Components\NewsList' => 'NewsList',
        ];
    }

振り分け処理

NewsList.php
<?php namespace Kobayashi\Corporate\Components;

use Cms\Classes\ComponentBase;
use <プラグイン名>\<プロジェクト名>\Models\News;

class NewsList extends ComponentBase
{
    public function componentDetails()
    {
        return [
            'name'        => 'ニュース一覧',
            'description' => 'ニュース一覧の表示'
        ];
    }

    public function defineProperties()
    {
        return [];
    }

    // ニュースごとに掲載先を変える処理
    public function bySite()
    {
        // データの個数を取得
        $count = News::select('id')->count();

        // IDと内容、作成日時、振り分け先を取得
        $json = News::select('id', 'content', 'created_at', 'site')->get();

        // jsonファイルから配列に変換
        $decode = json_decode($json, true);

        // 格納する配列を定義
        $homepageArr = [];
        $arrId = [];

        for ($i = 0; $i < $count; $i++)
        {
            // ホームページ用ニュースのIDを取得
            $homepageId = $i+1;

            // siteカラムのn番目のデータを取得
            $arr = $decode[$i]["site"];

            // siteの中身が空もしくは0、nullなら
            if (!empty($arr))
            {
                // siteの中にhomepageという値が存在したら
                if (in_array('homepage', $arr))
                {
                    // homepageArr配列にホームページ用ニュースのIDを格納
                    array_push($homepageArr, $homepageId);
                }

            }
        }

        // 最新ニュースが先頭に来るよう降順に変更
        $reverse = array_reverse($homepageArr);
        return $reverse;
    }

    // database上のIDとbySite上で出したIDを比較し一致したものだけ返す
    public function getNews($id)
    {
        return Report::where('id', '=', $id)->get();
    }

    // 日付のフォーマット変更
    public function getDate($date)
    {
        return date("Y/m/d", strtotime($date));
    }

}

View

newslist>default.htm
// ID、内容、作成日時、振り分け先のデータ
{% for bysite in NewsList.bySite %}

    // 上記で所得下データを変数にgetNewsに返す
    {% for getnews in NewsList.getNews(bysite) %}

            // IDの一致するものからフォーマットが変換された日付を表示
            <h2>{{ Newslist.getDate(getnews.created_at) }}</h2>

            // 内容の表示(<p>タグを抜いて)
            <p>{{ getNews.content|raw }}</p>

    {% endfor %}
{% endfor %}



orito
初心者
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away