私は、製品の「サンプル」ブロックのカスタマイズに取り組んでいます。基本的に私が知る必要があるのは、サンプルからファイル名を取得する方法です。
したがって、ビューで次のコードを使用して、サンプルの配列を取得できます。
<?php $_samples = $this->getSamples() ?>
...そして、これらのサンプルを十分に反復処理できます。私が理解しようとしているのは、そのサンプルに関連付けられているファイルの名前を取得するにはどうすればよいですか?基本的には、サンプルファイルがMP3の場合、埋め込みプレーヤーを表示するビューのカスタマイズを行います。他のすべてのファイルタイプの場合、デフォルトの動作(リンクが表示され、クリックすると新しいウィンドウが開き、サンプルが表示されます)はまったく問題ありません。
したがって、$ samplePathと$ sampleFileを連結すると、ディスク上のサンプルファイルのフルパスが取得されます。すなわち:$samplePath . $sampleFile
はあなたを取得します/path/to/samples/folder/sub-folder/path/to/file.mp3
この例では、実際に$ samplePathを取得する必要はありません。これは、以下に示すように、$ sampleFileが ".mp3"で終わるかどうかをテストするだけでよいためです。
<?php
if ($this->hasSamples()):
$_samples = $this->getSamples();
foreach ($_samples as $_sample):
$samplePath = $_sample->getBasePath(); // returns "/path/to/samples/folder"
$sampleFile = $_sample->getSampleFile(); // returns "/sub-folder/path/to/file.mp3"
// Figure out if the filename ends with ".mp3"
$_is_mp3 = (bool)(".mp3" == substr($sampleFile, -4));
if ($_is_mp3):
//show the mp3 player
else:
//show a link to the file
endif;
endforeach;
endif;
?>