サンプルオーディオファイルを再生するためのMagentoストアの製品ビューページにオーディオプレーヤーを追加したいので、magento_root/app/design/path/to/theme/template/downloadable/catalog/product/samples.phtml
を編集しました。MVCのようなURLからファイルの種類を判断する方法
<?php if ($this->hasSamples()): ?>
<dl class="item-options">
<dt><?php echo $this->getSamplesTitle() ?></dt>
<?php $_samples = $this->getSamples() ?>
<?php foreach ($_samples as $_sample): ?>
<dd>
<!--HTML5 Audio player-->
<audio controls>
<source src="<?php echo $this->getSampleUrl($_sample) ?>" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
<br/>
<a href="<?php echo $this->getSampleUrl($_sample) ?>" <?php echo $this->getIsOpenInNewWindow() ? 'onclick="this.target=\'_blank\'"' : ''; ?>><?php echo $this->escapeHtml($_sample->getTitle()); ?></a>
</dd>
<?php endforeach; ?>
</dl>
<?php endif; ?>
これはうまくいきますが、プレーヤーにはオーディオファイルのみを表示します。私の問題は、$this->getSampleUrl($_sample)
によって返されたURLの形式が http://example.com/index.php/downloadable/download/sample/sample_id/1/で、URLのファイルタイプに関する情報がないことです。
ファイルの種類を判断するためにURLの内容を取得することを検討しましたが、ファイルの種類を判断するためにファイルを完全に読み取るのは愚かであると思います。 試しましたpathinfo()
ただし、ファイルの種類について何も返しません。
私はあなたがカールしてHEADリクエストを送信してみてくださいすることができ、この
$sample_file = $this->getSampleUrl($_sample);
$type = getFileType($sample_file);
if(preg_match('audio-file-type-pattern',$type){ ?>
<!--HTML5 Audio player-->
<audio controls>
<source src="<?php echo $sample_file ?>" type="<?php echo $type?>">
Your browser does not support the audio element.
</audio>
}