Представления drupal: как вызвать медиаплеер swftools для emfields? - PullRequest
0 голосов
/ 20 апреля 2011

Я использую swftools для отображения файловых полей (Drupal 6).
Теперь я хотел бы использовать swftools для отображения пользовательского URL emfields (встроенные поля мультимедиа). Например, если мое поле emaudio содержит URL http://example.com/myaudio.mp3., я бы хотел использовать аудиоплеер swftools для воспроизведения этого mp3-файла.

Я знаю, как вызвать проигрыватель swftools, если я отображаю узел , который содержит emfield. Я использую hook_preprocess_content_field () для замены $ items [0] ['view'] на swf ($ items [0] ['value']):

function mytheme_preprocess_content_field(&$vars) {
  foreach ($vars['items']as $index=>$arr){
    // Note: 
    // Emfield's custom_url video provider is called "zzz_custom_url".
    // Emfield's custom_url audio provider is called "custom_url"
    if ($arr['provider']=='zzz_custom_url' || $arr['provider']=='custom_url'){
      $vars['items'][$index]['view'] = swf($arr['value']);
    }
  }
}

Но я не знаю, как вызвать SWF-плеер, если я отображаю view , который содержит emfield. То есть я не смог понять, как осуществить подобный трюк, когда я отображаю view , а не node . Какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Другое решение:
Создайте пользовательский форматер "SWF Emaudio", как описано ниже. Затем выберите этот форматер, чтобы отобразить поле emaudio настраиваемого URL-адреса из интерфейса cck или views.

function mymodule_field_formatter_info() {
  $formatters = array();
  $formatters['swf_emaudio'] = array(
      'label' => t('SWF Emaudio'),
  'field types' => array('emaudio'),
    );
}
function mymodule_theme() {
  $themes['mymodule_formatter_swf_emaudio'] = array(
      'arguments' => array('element' => NULL, 'options' => array()),
      'function' => 'theme_o4_mediatools_formatter_swf_emaudio',
    );
  }
  return ($themes);
}
function theme_mymodule_formatter_swf_emaudio($element, $options = array()) {
  $embed_value = $element['#item']['value'] ;
  $output = swf($embed_value, $options);
  return ($output);
}
0 голосов
/ 22 апреля 2011

У меня есть решение. Я создал шаблон представлений для темы моего поля emaudio,

вид с видом на поле - поле-мой-emaudio-embed.tpl.php

Вот содержимое шаблона:

$data = $row->{$field->field_alias};
print swf($data);
...