【ECCUBE4】管理画面から各カテゴリの見出し文を設定できるようにする【SEO対策】

# 目的
SEO対策のため、各カテゴリページにカテゴリの説明分を記載できるように、管理画面を改修します。

---

# 今回すること
・カテゴリエンティティに説明を付与
・カテゴリページに登録した説明を表示

---


## カテゴリエンティティに説明を付与

---

カテゴリエンティティに説明を付与します。フォームで自動生成されるようにFormAppendも指定します。

---

```app/Customize/Entity/CategoryTrait.php
<?php

namespace Customize\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation as Eccube;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @Eccube\EntityExtension("Eccube\Entity\Category")
 */
trait CategoryTrait
{
    /**
     * @ORM\Column(name="description", type="text", nullable=true)
     * @Eccube\FormAppend(
     *     auto_render=true,
     *     options={
     *         "label": "説明"
     *     }
     * )
     */
    public $description;

    public function setDescription($description = null)
    {
        $this->description = $description;

        return $this;
    }

    public function getDescription()
    {
        return $this->description;
    }

}
```

---

管理画面のレイアウトを少し整えます。

```src/Eccube/Resource/template/admin/Product/category.twig
                                                    {% form_theme f f.vars.eccube_form_options.form_theme %}
                                                    {{ form_row(f) }}
                                                {% else %}
-                                                    <div class="form-row mb-3">
+                                                    <div class="form-row mb-3" style="display: block">
                                                        <div class="col-3">
                                                            <span>{{ f.vars.label|trans }}</span>
                                                        </div>
・・・
                                                        </div>
                                                    </div>
                                                </div>
+                                                <div class="mode-view">
+                                                    {{ Category.description }}
+                                                </div>
                                                <form class="form-row d-none mode-edit" method="POST" action="{{ (Parent and Parent.id) ? url('admin_product_category_show', {'parent_id': Parent.id}) : url('admin_product_category') }}">
                                                    {{ form_widget(forms[Category.id]._token) }}
                                                    <div class="col-auto align-items-center">
・・・
                                                    {# エンティティ拡張の自動出力 #}
                                                    {% for f in forms[Category.id] if f.vars.eccube_form_options.auto_render %}
                                                    <div class="col-auto align-items-center" style="width:90%; padding-top: 10px;">
-                                                        <div class="row">
+                                                        <div class="row" style="display: block">
                                                            <div class="col-3">
                                                                <span>{{ f.vars.label|trans }}</span>
                                                            </div>
・・・
```

---

### カテゴリページに登録した説明を表示

---

管理画面>コンテンツ管理>ページ管理から、商品一覧ページの任意の場所に追記します。

```
            {% if Category is not null %}
                <div>{{ Category.description }}</div>
            {% endif %}
```

以上！

---

# 宣伝
ハンドメイド猫グッズ専門ショップを運営しています。
ネコ好きの方、親しい間柄にネコ好きがいらっしゃる方、ぜひご覧ください。
■キャットギフト
https://cat-gift.net/