Как сделать скрытое поле в контенте?

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
Всю голову сломал, может кто подскажет?

Ножно скрыть поле в контенте и показать его пользователю, только если он введет пин-код (или кодовое слово).
Куда думать?
Как сделать скрытое поле в контенте?
Редактировалось: 1 раз (Последний: 4 февраля 2015 в 14:43)
Мой блог с плюшками
Посетитель
small user social cms
Сообщений: 88
kreator, есть платный компонент "билинг". он может решить эту проблему.

Ну или разрешить просмотр только для зарегистрированных пользователей
Редактировалось: 1 раз (Последний: 4 февраля 2015 в 16:59)
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
Александр:
есть платный компонент "Билинг". он может решить эту проблему
Он у меня уже есть, и я рассматриваю и другие варианты.
Из-за того что все системные файлы закрыты я пока не понимаю что с ним можно сделать, кроме как поменять шаблон.
Например главный вопрос: мне нужно перевести пользователя из группы "Зарегистрированные" в группу "Покупатели". Пока я там вижу что можно либо купить что-нибудь со страницы ли получить подписку для перехода в другую группу. Нужно чтоб купил "Поле" и в нагрузку получил "Подписку".
Мой блог с плюшками
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
Порывшись покопавшись, нашел метод который перед публикацией позволяет менять код публикуемого контента и может управляться из любого компонента, именно этот метод и используется в компоненте билинг для замены поля на кнопку купить.

(столько всего интересного оказывается в Instantcms2!!!!!)

достаточно в компоненте создать hook для финишной обработки контента.

Создаем файл content_before_item.php в папке hooks со следующим содержанием:
Код PHP:
  1. <?php
  2.  
  3. class onComponentContentBeforeItem extends cmsAction {
  4.  
  5. public function run($data){
  6. $fields = $data[2];
  7. $item = $data[1];
  8. $ctype = $data[0];
  9. }
  10.  
  11. }
  12.  
Входящие в него переменная $data имеет массив $fields - который содержит массив полей компонента, $item - Видимо массив который передает 'viewable', и $ctype - тип контента.

Так вот можно получив этот массив поменять в нем нужные данные. Может кто подскажет как перебрать этот массив и на выходе отправить свои данные.

Что тут не так:
Код PHP:
  1. <?php
  2.  
  3. class onComponentContentBeforeItem extends cmsAction {
  4.  
  5. public function run($data){
  6. $fields = $data[2];
  7. $item = $data[1];
  8. $ctype = $data[0];
  9.  
  10. $fields['content'] = 'Свой контент';
  11.  
  12. return array($ctype,$item,$fields);
  13.  
  14. }
  15.  
  16. }
  17.  
Поле контент на выходе содержит "ничего". Пусто. Что неправильно я поменял в массиве?
Мой блог с плюшками
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3549
Поле $fields = $data[2]; содержит только дополнительные поля. Править контент вам надо в переменной $item = $data[1]; тоесть
Код PHP:
  1. $data[1]['content'] = 'Свой контент';
и возвращать надо
Код PHP:
  1. return $data;
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
Loadырь, верно.
Мой блог с плюшками
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1343
kreator:
Что неправильно я поменял в массиве?
Массив $fields содержит не значения, а описания полей. Т.е. заголовки, пояснения, правила заполнения и т.п.
Значения в массиве $item, как уже Loadырь заметил.

Используйте функцию dump() чтобы посмотреть что внутри переменной, например
Код PHP:
  1. dump($item);
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
Посмотрел действительно $data[1]['title'] - содержит заголовок, $data[1]['content'] - содержит контент
Но что-то водимо надо искать дальше, т.к. если написать $data[1]['title'] = 'Поменяли'; - заголовок меняется, а $data[1]['content'] = 'Поменяли'; - контент не меняется.

Но как мне помог ваш совет с функцией dump. Поменялось если так: $data[2]['content']['html'] = 'Поменяли!';
Мой блог с плюшками
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1827
В продолжении этой темы, прошу раскрыть секретную информацию о системе. А именно:
Если в случае публикуемых данных мы использователи промежуточный хук content_before_item.php (о чем писали выше), то какой хук используется для фильтрации данных до внесения в БД (во время публикации)?

content_edit.php? - не угадал? scratch
Мой блог с плюшками
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 3549
kreator:
content_edit.php? - не угадал?
Не угадал. item_add.php и item_edit.php в папке \system\controllers\content\actions\ там есть, что-то похожее на
Код PHP:
  1. cmsEventsManager::hook("content_add", $ctype);
и
Код PHP:
  1. $item = cmsEventsManager::hook("content_before_update", $item);
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.