Создание дополнительного поля в админке, h1 [OPENCART]

31 Мая 2018
php

В OpenCart Version 3.0.2.0 нет отдельного поля H1 для категорий.

Так как сеошники хотят отдельные заголовки для:

  • h1
  • title
  • meta title

, приходится добавлять дополнительные, кастомные поля в стандартный OpenCart.

Часть 1 - создание поля в админке

  1. Создаем дополнительное поле в таблице oc_category_description

    ALTER TABLE `oc_category_description` ADD `seo_h1` TEXT NOT NULL AFTER `meta_keyword`;
    
  2. Добавляем input в админку opencart. Добавляем не много HTML в файл: \admin\view\template\catalog\category_form.twig

    # в любое место, мы поместили в 80 строку
    <div class="form-group">
      <label class="col-sm-2 control-label" for="input-meta-keyword-{{language.language_id }}">{{ entry_seo_h1 }}</label>
      <div class="col-sm-10">
    	<textarea name="category_description[{{ language.language_id }}][seo_h1]" rows="5" placeholder="{{ entry_seo_h1 }}" id="input-meta-keyword-{{language.language_id }}" class="form-control">{{ category_description[language.language_id] ? category_description[language.language_id].seo_h1 }}</textarea>
      </div>
    </div>
    
  3. Добавляем в ленгвич файл заголовок для инпута \admin\language\ru-ru\catalog\category.php

    # в любое место, мы поместили в 72 строку
    $_['entry_seo_h1']     		 = 'SEO H1';
    
  4. Добавляем в модель нашу новую переменную, так чтобы она могла выводиться и сохраняться: \admin\model\catalog\category.php

    #13 строка
    , seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'
    
    #271 строка
    'seo_h1'     	   => $result['seo_h1'],
    
    #71 строка
    , seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'
    

Часть 2 - вывод поля на сайте

  1. Сначала добавим нашу новую переменную в контроллер, для того чтобы он ее передавал на фронт, в файл category.twig, для этого поправим файл: \catalog\controller\product\category.php

    # 98 строка
    $data['seo_h1'] 		= $category_info['seo_h1'];
    
  2. Теперь укажем где будет выводиться наше новое поле, файл: \catalog\view\theme\default\template\product\category.twig

    # в любое место
    <h1>{{ seo_h1 }}</h1>