Туториал по созданию и выводу дополнительных полей контента В Typecho есть следующие типы дополнительных полей: text, textarea, radiobutton, select, checkboxes.
Создать их можно, как напрямую при написании статьи, так и задав их появление автоматически, через файл functions.php.
Для того чтобы создать дополнительные поля контента откройте файл functions.php в папке вашего шаблона. По умолчанию путь до него будет /usr/themes/default/functions.php
• добавьте в самый конец файла
• вместо /CUSTOM FIELDS/ вставьте код дополнительного поля
fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
Текстовое поле
fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
Поле radio - переключатель
fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа- значение для ключа
Поле select - список
fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа- значение для ключа
Поле checkbox - список с возможностью мультивыбора
fields_name - имя поля, должно содержать в себе только английские буквы и цифры
Название поля - название поля
Текст подсказки - подсказка, отображается под полем
key_ - ключ для поля, должен содержать в себе только английские буквы и цифры
Значение для ключа- значение для ключа
Вывод поля типа radio или selectс проверкой на значение по ключам
Где fields_name- имя поля, а key_1& key_2- это ключи для значений поля
Вывод поля checkboxes
Где fields_name - имя поля
Создать их можно, как напрямую при написании статьи, так и задав их появление автоматически, через файл 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 - имя поля
0 Comments