Всем доброго времени суток!
Подскажите пожалуйста как сделать такую штуку:
Создать CCK поле со списком выбора примерно из надцати пунктов, а затем при просмотре/создании ноды с этим ССК полем показать возможным для выбора только 2-4 варианта для выбора в зависимости от того какой признак стоит у пользователя в профиле.
Пояснение: есть 3 спортсмена, один обладает признаком 'байдарка', другой признаком 'каноэ', третий признаком 'академичка'.
Есть ССК поле с вариантами: 'ничего' 'С1' 'С2' 'С4' 'К1' 'К2' 'К4' 'А1' 'А2' 'А4' 'А8' 'А2р' 'А4р' 'А8р'.
Как сделать так чтобы когда пользователь с признаком 'байдарка' видел при создании материала содержащим такое поле ССК только варианты: 'ничего' 'К1' 'К2' 'К4'? Чтобы остальные варианты не мешались ему так как он никогда не тренируется в четверке распашной на академической лодке.
Если задача сформирована не ясно я постараюсь пояснить то что не понятно. Отмечу, что все пользователи с этим признаком относятся к одной роли "Спортсмен"
Надеюсь на вашу помощь, с уважением.
Комментарии
в качестве значения поля можно использовать php код
Точно! Спасибо за подсказку. Только я к сожалению очень слаб в программировании на php.
Я так понимаю значение на поле в случае php должно быть такого плана:
Если переменная из массива пользовательских данных равна значению 'Байдарка' показать '' 'К1' 'К2' 'К4'
Если переменная из массива пользовательских данных равна значению 'Каноэ' показать '' 'С1' 'С2' 'С4'
Если переменная из массива пользовательских данных равна значению 'Академичка' показать '' 'A1' 'A2' 'A4' 'A8' 'A2r' 'A4r' 'A8r'
Если пользователь не обладает признаком вида спорта или он отличен от вышеперечисленных показать весь список вариантов включая пустое значение.
Только вот все это я не могу сделать, подскажите как. Очень прошу помочь.
Заранее спасибо.
Подскажите пожалуйста. Мои мысли двигаются в сторону чего то такого:
<?phpif $profile_osnovnoy_vid_sporta = 'Гребля на каноэ' {array('0' => 'C1' '1' => 'C2' '2' => 'C4')}
if $profile_osnovnoy_vid_sporta = 'Гребля на байдарке' {array('0' => 'K1' '1' => 'K2' '2' => 'K4')}
$profile_osnovnoy_vid_sporta = 'Гребля на академичке' {array('0' => 'A1' '1' => 'A2' '2' => 'A4')}
else {array ('0' => 'C1' '1' => 'C2' '2' => 'C4' ..... '10' => 'другое')} ;?>
Но я очень сильно сомневаюсь что этот код будет работать и даже что он правилен с точки зрения его синтаксиса...
Очень нужно понять и реализовать это так как что то подобное надо будет делать и для других мест на сайте в будущем.
<?php
if ($some_var == 'Гребля на каноэ') return array('C1', 'C2', 'C4');
...
?>
xxandeadxx, спасибо за подсказки. Думаю дальше.
лучше для начала маны по php прочитать
Попробовал так:
<?phpif ($profile_osnovnoy_vid_sporta = 'Гребля на каноэ') return array('C1', 'C2', 'C4');?>
Вот что получилось при сохранении поля CCK:
* Ошибка при проверке значения, пожалуйста повторите. Если ошибка повторится, сообщите администратору сайта.
* The default value PHP code returned an incorrect value.
Expected format:
return array(
0 => array('value' => значение для value),
// В большинстве случаев вам нужно остановиться здесь. Введите дополнительные значения,
// если хотите, чтобы 'значение по умолчанию' было многозначным:
1 => array('value' => значение для value),
2 => ...
);
Returned value: Array ( [0] => C1 [1] => C2 [2] => C4 )
Модулем devel посмотрел для меня в профиле есть такое значение. Посмотретьь можно на скриншоте вывода модуля devel. Гляньте пожалуйста.
$profile_osnovnoy_vid_sporta == 'Гребля на каноэ'
Спасибо за помощь! Вот такой вариант уже работает для каноэ варианта:
<?phpif ($profile_osnovnoy_vid_sporta = 'Гребля на каноэ')
return array('C1', 'C2', 'C4');?>
Думаю дальше справлюсь. Если будутт вопросы по теме задам.
а вот и не справляюсь. Делаю дальше конструкцию чтобы в зависимости от вида спорта высвечивались нужные значения а в итоге высвечиваются все допустимые значения из списка допустимых, т.е. как будто код мой php просто игнорируется системой.
Посмотрите пожалуйста, что я не так делаю?
else if
($profile_osnovnoy_vid_sporta == 'Гребля на байдарке'): return array('K1', 'K2', 'K4');
else if
($profile_osnovnoy_vid_sporta == 'Гребля академическая'): return array('A1', 'A2', 'A3', 'A4', 'A2r', 'A4r', 'A8r');
никогда раньше не работал с php в друпале. Похоже что мой вариант что чуть выше не воспринимается друпалом, похоже он ожидает в поле php увидеть только массив данных и все.
А поскольку у меня данные должны выводится в зависимости от параметра, то похоже пахнет многомерным массивом с условиями... но вот как? или я все усложняю?