Как можно повесить свой скрипт на штатный чекбокс?

Главные вкладки

Аватар пользователя murrmarrik murrmarrik 2 октября 2014 в 17:37

К одному из типов материала добавлено штатное множественное поле с файлами на скачивание. В админке есть возможность поставить галочку, должен показываться файл пользователю или нет. Мне нужно, чтобы при отсутствии галочки файл не скрывался, а просто помечался нужным мне способом. Подскажите, пожалуйста, как это можно сделать?

Комментарии

Аватар пользователя Mentat Mentat 2 октября 2014 в 18:05

Переопредели шаблоны темы. Чтобы при checked/unchecked кнопки к какому-то тэгу добавлялся/удалялся класс.
А в цсс уже для этого класса пропиши нужный стиль

Аватар пользователя murrmarrik murrmarrik 2 октября 2014 в 18:44

Новый класс не спасет от скрытия файла системой, нужен перехват какой-то функции по id, чтобы отменить скрытие файла при нуле в базе данных..

Аватар пользователя murrmarrik murrmarrik 16 ноября 2014 в 17:22

Так-с, нужные мне файлы удаляются из переменной через unset в хуке file_field_prepare_view модуля File. Если мимо пробегающие гуру подскажут, как правильно отменить этот unset, не трогая ядра друпала, буду очень признательна!
А дальше да, все просто, темизация через параметр display каждого файла.

Аватар пользователя murrmarrik murrmarrik 19 ноября 2014 в 16:39

Mentat wrote:
напишите свой модуль, используйте найденный вами хук.

Думала, но ведь если я просто переопределю хук, то старый останется и сотрет нужные мне данные. Причем, все зависимости от того, выполнится ли хук моего модуля до или после расположенного в модуле Files.
Собственно вот код функции, в которой мне нужно запретить unset:

function file_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
// Remove files specified to not be displayed.
foreach ($entities as $id => $entity) {
foreach ($items[$id] as $delta => $item) {
if (!file_field_displayed($item, $field)) {
unset($items[$id][$delta]);
}
}
// Ensure consecutive deltas.
$items[$id] = array_values($items[$id]);
}
}

Аватар пользователя murrmarrik murrmarrik 20 ноября 2014 в 9:20

Спасибо, хорошая идея! Я начинала со своего модуля и создания нового столбца в базе, потом решила, что изменить существующий функционал проще.. Видимо, совмещение штатных функций с новой логической переменной, действительно, решит проблему, обязательно попробую.