Туториал по созданию и выводу дополнительных полей контента

В Typecho есть следующие типы дополнительных полей: text, textarea, radiobutton, select, checkboxes.
Создать их можно, как напрямую при написании статьи, так и задав их появление автоматически, через файл functions.php.

Для того чтобы создать дополнительные поля контента откройте файл functions.php в папке вашего шаблона. По умолчанию путь до него будет /usr/themes/default/functions.php

  • добавьте в самый конец файла

function themeFields($layout){ 
/*CUSTOM FIELDS*/
};
  • вместо /CUSTOM FIELDS/ вставьте код дополнительного поля

Примеры

Строка текста

$fields_name= new Typecho_Widget_Helper_Form_Element_Text('fields_name', NULL, NULL, _t('Название поля'), _t('Текст подсказки'));
$layout->addItem($fields_name);

fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем


Текстовое поле

$fields_name= new Typecho_Widget_Helper_Form_Element_Textarea('fields_name', NULL, NULL, _t('Название поля'), _t('Текст подсказки'));
$layout->addItem($fields_name);

fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем


Поле radio - переключатель


$fields_name= new Typecho_Widget_Helper_Form_Element_Radio('fields_name',array('key_1' => _t('Значение для ключа 1'),'key_2' => _t('Значение для ключа 2'),'key_3' => _t('Значение для ключа 3'),'key_4' => _t('Значение для ключа 4'),'key_5' => _t('Значение для ключа 5'),'key_6' => _t('Значение для ключа 6')),'0',_t('Название поля'),_t("Текст подсказки"));
$layout->addItem($fields_name);

fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа - значение для ключа


Поле select - список


$fields_name= new Typecho_Widget_Helper_Form_Element_Select('fields_name',array('key_1' => _t('Значение для ключа 1'),'key_2' => _t('Значение для ключа 2'),'key_3' => _t('Значение для ключа 3'),'key_4' => _t('Значение для ключа 4'),'key_5' => _t('Значение для ключа 5'),'key_6' => _t('Значение для ключа 6')),'0',_t('Название поля'),_t("Текст подсказки"));
$layout->addItem($fields_name);

fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа - значение для ключа


Поле checkbox - список с возможностью мультивыбора


$fields_name= new Typecho_Widget_Helper_Form_Element_Checkbox('fields_name',array('key_1' => _t('Значение для ключа 1'),'key_2' => _t('Значение для ключа 2'),'key_3' => _t('Значение для ключа 3'),'key_4' => _t('Значение для ключа 4'),'key_5' => _t('Значение для ключа 5'),'key_6' => _t('Значение для ключа 6')),'0',_t('Название поля'),_t("Текст подсказки"));
$layout->addItem($fields_name);

fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа - значение для ключа



Вывод значения дополнительных полей контента в шаблонах
Код вывода зависит от типа дополнительного поля. Самый простой вывод значения поля, с проверкой на его заполнение выглядит так:

<?php
$custom_fields = $this->fields->fields_name;
    if(isset($custom_fields))
        echo 'Test_custom_fields: TRUE '.$custom_fields;
    else
        echo 'Test_custom_fields: FALSE';
?>

Где fields_name - имя поля


Вывод поля типа radio или select с проверкой на значение по ключам

<?php if($this->fields->fields_name== "key_1") { ?><!-- Выбрано значение поля key_1 -->
Lorem ipsum
<?php } elseif ($this->fields->fields_name== "key_2") { ?><!-- Выбрано значение поля key_2 -->
Dolor sit amet
<?php } else {?><!-- Не выбрано никакое значение -->
other
<?php }?>

Где fields_name - имя поля, а key_1 & key_2 - это ключи для значений поля

При помощи radio или select поля можно легко создать различные шаблоны для всевозможных типов контента. Например создать поле "Вид страницы" с ключами и названиями "Галерея", "Статья", "Видео", а затем сделать различный вывод контента в зависимости от выбранного значения

Вывод поля checkboxes

$custom_fields = $this->fields->fields_name;
foreach ($custom_fields as $row) {
echo $row . "\r\n";
}

Где fields_name - имя поля

 Теги: typecho туториал

0  0   136