Ножно скрыть поле в контенте и показать его пользователю, только если он введет пин-код (или кодовое слово).
Куда думать?
Ну или разрешить просмотр только для зарегистрированных пользователей
Он у меня уже есть, и я рассматриваю и другие варианты.есть платный компонент "Билинг". он может решить эту проблему
Из-за того что все системные файлы закрыты я пока не понимаю что с ним можно сделать, кроме как поменять шаблон.
Например главный вопрос: мне нужно перевести пользователя из группы "Зарегистрированные" в группу "Покупатели". Пока я там вижу что можно либо купить что-нибудь со страницы ли получить подписку для перехода в другую группу. Нужно чтоб купил "Поле" и в нагрузку получил "Подписку".
(столько всего интересного оказывается в Instantcms2!!!!!)
достаточно в компоненте создать hook для финишной обработки контента.
Создаем файл content_before_item.php в папке hooks со следующим содержанием:
<?php class onComponentContentBeforeItem extends cmsAction { public function run($data){ $fields = $data[2]; $item = $data[1]; $ctype = $data[0]; } }
Так вот можно получив этот массив поменять в нем нужные данные. Может кто подскажет как перебрать этот массив и на выходе отправить свои данные.
Что тут не так:
<?php class onComponentContentBeforeItem extends cmsAction { public function run($data){ $fields = $data[2]; $item = $data[1]; $ctype = $data[0]; $fields['content'] = 'Свой контент'; } }
$data[1]['content'] = 'Свой контент';
return $data;
Массив $fields содержит не значения, а описания полей. Т.е. заголовки, пояснения, правила заполнения и т.п.Что неправильно я поменял в массиве?
Значения в массиве $item, как уже Loadырь заметил.
Используйте функцию dump() чтобы посмотреть что внутри переменной, например
dump($item);
Но что-то водимо надо искать дальше, т.к. если написать $data[1]['title'] = 'Поменяли'; — заголовок меняется, а $data[1]['content'] = 'Поменяли'; — контент не меняется.
Но как мне помог ваш совет с функцией dump. Поменялось если так: $data[2]['content']['html'] = 'Поменяли!';
Если в случае публикуемых данных мы использователи промежуточный хук content_before_item.php (о чем писали выше), то какой хук используется для фильтрации данных до внесения в БД (во время публикации)?
content_edit.php? — не угадал?
Не угадал. item_add.php и item_edit.php в папке \system\controllers\content\actions\ там есть, что-то похожее наcontent_edit.php? — не угадал?
cmsEventsManager::hook("content_add", $ctype);
$item = cmsEventsManager::hook("content_before_update", $item);