Насколько вы опытны с JavaScript?Вы можете использовать расширение CSS CSS и JS Брэндона Келли.Затем используйте небольшой пользовательский JavaScript для создания этой функциональности.Не идеально, но, вероятно, быстрее, чем написание собственного расширения.Примерно, вы бы сделали это:
- Создайте группу полей канала и все каналы и назначьте эту группу своему каналу
- Чтобы сделать его немного более удобным, вы 'Вы хотите, чтобы селектор категорий находился на той же вкладке «Публикация», что и поля: создайте пользовательский макет публикации для этого канала, который перемещает поле «Категории» со вкладки «Категории» на вкладку «Публикация»
- Найдите идентификационные номера каналаполя, которые вы хотите скрыть, так как это будут HTML-идентификаторы на странице публикации, которые выглядят как «hold_field_ID #»
- Определите идентификатор категории для категории, которую нужно щелкнуть, чтобы открыть дополнительные поля.На странице публикации эта категория будет отображаться в поле «Категории» с атрибутом «value = ID».
- Время сценария!Перейдите в Дополнения> Расширения> Настройки CP CSS и JS и добавьте JS в поле Custom Javascript.
Примерно так:
$(document).ready(function() {
// Cache the divs with your channel fields
var $theSecretFields = $('#hold_field_5, #hold_field_6');
// Hide them
$theSecretFields.each(function() {
// But only if they're empty (no previous saved data)
// If you're using a textarea or something else, change the .find selector
if ( $(this).find('input').val() === '' ) { $(this).hide() };
});
// When you click the category ID (the input[value="id"] selector)...
$('#hold_field_category').find('input[value="12"]').click(function() {
// Toggle the visibility of the channel fields
// Again, only show/hide them if they're empty
$theSecretFields.each( function() {
// Again, change the .find selector for your field type if necessary
if ( $(this).find('input').val() === '' ) { $(this).toggle() };
});
});
};
Возможно, вам придется создатьв некоторой дополнительной логике в обработчике кликов, чтобы убедиться, что поля показываются только при установленном флажке (среди прочего), но это основная идея.