Тем, кто постоянно используют произвольные поля, может пригодиться плагин MaxSite – Произвольные поля. Этот плагин является переработанной разработчиком MaxSite CMS версией плагина Custom Field GUI, облегчающего добавление данных в определенные произвольные поля. Суть такова: вы записываете в отдельный текстовый файл названия произвольных полей, которыми хотите пользоваться постоянно, определяете их вид, условия использования, для некоторых задаете значения по-умолчанию, и плагин по вашим требованиям отображает в редакторе постов форму ввода данных. Таким образом вам не нужно вспоминать названия произвольных полей, а при определенных условиях не нужно даже вводить данные, достаточно только выбрать один из введенных вами вариантов. Такой подход очень удобен, если вам нужно практически в каждом посте использовать определенный набор произвольных полей.
Настройка файла conf.ini
Для начала вам нужно настроить специальный файл conf.ini, в котором содержатся данные о произвольных полях, которые нужно отображать в редакторе постов. Этот файл находится в папке плагина. Если его там нет – создайте (обычный текстовый файл в кодировке UTF-8). Например, он может иметь такой вид:
[Верхние страницы] type = textfield size = 60 mymeta = top_pages [Избранный пост] type = checkbox default = checked mymeta = izbran_post [Выберите] type = radio value = 0-9 # 10-19 # 20+ default = 10-19 mymeta = vybor_radio [Уровень] type = select value = High # Medium # Low default = Low mymeta = uroven [Ваш текст] type = textarea rows = 5 cols = 60 mymeta = vash_text
Что в итоге увидит автор поста при его редактировании? Вот такую картину:
Таким образом видно, что файл conf.ini отвечает за то, для каких произвольных полей в редакторе нужно выводить формы ввода, как они должны выглядеть, и какие данные в них можно сразу подставлять.
Например, код
type = textfield size = 60 mymeta = top_pages
указывает плагину, что для произвольного поля top_pages форма ввода будет стандартным текстовым полем с размером 60 знаков по ширине и 1 знак по высоте.
Код
type = checkbox default = checked mymeta = izbran_post
указывает плагину создать произвольное поле izbran_post, которое может иметь значение checked или быть пустым. Вы можете только выбрать это значение, или же не использовать произвольное поле.
Код
[Выберите] type = radio value = 0-9 # 10-19 # 20+ default = 10-19 mymeta = vybor_radio
указывает плагину создать произвольное поле vybor_radio. По-умолчанию этому полю будет присвоено значение 10-19. Однако вы с помощью radio-переключателя можете выбрать одно из установленных значений: 0-9, 10-19 или 20+.
Код
type = select value = High # Medium # Low default = Low mymeta = uroven
указывает плагину создать произвольное поле uroven, у которого может быть несколько значений: High, Medium или Low. По-умолчанию будет использоваться значение Low, но вы с помощью выпадающего списка можете выбрать и другое значение для этого произвольного поля.
Код
type = textarea rows = 5 cols = 60 mymeta = vash_text
создает произвольное поле vash_text, в которое с помощью текстовой формы шириной 60 знаков и высотой 5 знаков можно ввести произвольный текст, например, код HTML.
Таким образом вы можете создать себе сколько угодно форм для ввода значений разных произвольных полей. Для одних вы можете заранее установить их значение, и выбирать с помощью радио-переключателей, чекбоксов или выпадающих списков, для других создать текстовые поля удобного размера, и вводить значение произвольного поля непосредственно в них, не прибегая к стандартному вводу произвольных полей в посте. Подход удобный, особенно если в блоге работают авторы, знакомые с тем, что такое произвольные поля, только понаслышке. Для них работа с нужными произвольными полями сводится к минимуму: достаточно выбрать нужные данные из предлагаемых. Вебмастерам тоже удобно пользоваться уже готовыми формами, в которых уже введены все нужные значения произвольных полей, и остается только выбрать нужное – это существенно увеличивает продуктивность работы.
Решение прикладной задачи
Например, нужно вывести в конце каждого поста или автора поста (если текст полностью авторский), или ссылку на источник материала (если текст скопирован), или автора используемого текста (если вы публикуете гостевой пост или частично используете чужой авторский текст).
Создадим несколько произвольных полей для ссылки на источник:
[Источник или Автор - анкор] type = textarea rows = 1 cols = 67 mymeta = source_anchor [Источник или Автор - урл] type = textarea rows = 1 cols = 67 mymeta = source_url
Этот код выведет два текстовых поля, нужных для ссылки, указывающей на источник. В одно из них нужно ввести ссылку, а во второе – желаемый анкор (текст этой ссылки).
Теперь создадим переключатель, с помощью которого можно будет выбрать, что вы хотите видеть в конце поста: автора поста, ссылку на источник, или же автора текста, используемого в посте.
[Выберите] type = radio value = sourceblog # sourcesite # sourceauthor default = sourceblog mymeta = vybor_radio
В итоге формы ввода значения нужных нам для этой задачи произвольных полей будут выглядеть так:
Теперь нам осталось только составить условие:
- если выбрать пункт sourcesite, то в конце поста выведется ссылка на источник (если текст был скопирован с другого сайта)
- если выбрать пункт sourceauthor, то в конце будет указан автор текста (не автор поста, а автор текста, который использовался в посте)
- если же выбрать пункт sourceblog, то в конце будет выведен автор текущего поста
В файл single.php нужно вставить код, выводящий при определенных условиях значение произвольных полей, описанных выше:
//получаем значение произвольного поля vybor_radio $val_val ) $position=$val_val; } ?> //если значение произвольного поля vybor_radio равно sourcesite, то выводим ссылку на сайт автора текста из произвольного поля source_anchor и урлом из произвольного поля source_url, а перед ней ставим слово Источник <div class="source-div"> Источник: <a title=" $val_val ) echo $val_val; } ?>" href=" $val_val ) echo $val_val; } ?>"> $val_val ) echo $val_val; } ?></a> </div> //если значение произвольного поля vybor_radio равно sourceauthor, то выводим ссылку на сайт автора текста из произвольного поля source_anchor и урлом из произвольного поля source_url, а перед ней ставим слово Автор <div class="source-div"> Автор: <a title=" $val_val ) echo $val_val; } ?>" href=" $val_val ) echo $val_val; } ?>"> $val_val ) echo $val_val; } ?></a> </div> //если значение произвольного поля vybor_radio равно sourceblog, то выводим ник автора данного поста, а перед ним ставим слово Автор <div class="source-div"> Автор: </div>
Этот простой пример показывает, насколько удобно становится работать с произвольными полями, используя плагин MaxSite – Произвольняе поля.
MaxSite - Произвольняе поля
Круто как! Можно из такого и лепить каталог.
Спасибо за пример!
Но вот сейчас проблема появилась. А как быть со старыми постами, где значения не выставлены? Не редактировать же каждый пост. :)
Можно как то добавить такое исключение, к примеру если значения не выставлены, то просто отображать
?
как-то так
Я лучше пост щас отдельный напишу, слишком много вопросов получается :)
На один вопрос вам ответили чуть выше – используйте условие:
– если есть поле sourceauthor, то выводится его значение
– иначе выводится автор
Сделал, как написали. Собственно получилось следующее. В functions.php вставил такой код:
В single.php вывожу автора или источник так:
Файл conf.ini выглядит так:
Думаю по коду видно почему я убрал часть кода из примера, ибо она больше не нужна.
Ну и, собственно, проблема. Если выбрать sourceauthor и вписать автора, то всё ок, выводится тот автор, которого прописал. Если ничего не выбрать, но выводится автор стандартным
Но вот если выбрать sourcesite, то выводится и источник, и вордпресовский the_author();. Вот примеры:
Использование sourceauthor:
Использование the_author():
Использование sourcesite:
Автор выводится после статьи.
Как быть?
добавить условие которое будет проверять заполнено ли какое либо из полей:
Вы чуть-чуть ошиблись в коде, методом тыка доделал его :) Но всё равно спасибо!
Большое спасибо за статью. У меня возник вопрос. Допустим, я вывожу произвольное текстовое поле. Например, такое
Мне необходимо, чтобы при определённом значении поля цена, например, “300”, у меня
под полем с ценой отображался определённый текст, например, “в стоимость
включена доставка”. То есть, если цена = “300”, то выводится текст “в стоимость
включена доставка”, если цена = “200”, то выводится текст “без учёта доставки”.
Как правильно это реализовать? Подскажите, пожалуйста. Заранее спасибо.
Ну примерно как-то так: