Sajnálatos módon nem vagyok programozó, de lelkesen dolgozok a probélma megolsásán. És rendszerint, bár egy szakmabelihez képset lassabban, de eljutok a megoldáshoz. Így volt ez ebben az esetben is.
Nem rég találkoztam egy olyan problémával, ami miatt a Joomla - VirtueMart (custom field) kiválasztó rádiógombt kellett átdizájnolni... tekintve, hogy a kód elég kötött megpróbáltam leginkább CSS-ből megoldani a problémát.
Egy munka során merült fel igény termékekhez tájékoztató dokumentum feltöltés, amit azután a vásárló korlátozás nélkül le tud tölteni. A neten található mindenféle megoldás, amik általában többet tudnak mint ami minimálisan szükséges, viszont cseréve jellemzően 19-49$ áron érhető el, néhány esetben még tesztelni sem lehet.
Az alábbi megoldás J 3.x és VM 3.x pároson működik. Továbbfejleszthető...
Egyedi mező felvitele
A Custom fileds (egyedi mezők) menüben vegyünk fel egy új egyedi mezőt:
- Típus: String
- Title (cím): File / Letöltés / stb. (ez lesz a mező csoport elnevezése)
- Layout position: file
Egyedi mező létrehozás, felülírás sablonból
Ha ez meg van, készítsünk sablon felülírást erről a fileról (ha még nincs):
components > com_virtuemart > views > productdetails > default.php
ide:
templates > [saját sablon neve] > html > com_virtuemart > productdetails > default.php
Egyes sablonoknál előfordul, hogy a VM fájlok felül vannak írva, ezek esetében meg kell keresnünk a legjobb helyet a letölthető fájl(ok)nak.
Egyedi mező beillesztés
<?php// custom file
$product = $this->product;
$position = 'file';$class = 'product-fields';
if (!empty($product->customfieldsSorted[$position])) {
$custom_title = null;
foreach ($product->customfieldsSorted[$position] as $field) {
if ( $field->is_hidden ) continue; ?>
<div class="product-field product-field-type-<?php echo $field->field_type ?>">
<?php if (!$customTitle and $field->custom_title != $custom_title and $field->show_title) { ?>
<span class="product-fields-title-wrapper"><span class="product-fields-title"><strong><?php echo vmText::_ ($field->custom_title) ?></strong></span>
<?php if ($field->custom_tip) {
echo JHtml::tooltip ($field->custom_tip, vmText::_ ($field->custom_title), 'tooltip.png');
} ?></span>
<?php }
if (!empty($field->display)){
$filestring = $field->display;
if (!strpos($filestring,'|')) {
?>
<div class="product-field-display"><a href="/images/stories/virtuemart/pdf/<?php echo $field->display; ?>">file download</a></div>
<?php
} else {
$file = array();
$file = explode("|",$filestring);?>
<div class="product-field-display">
<a href="/images/stories/virtuemart/pdf/<?php echo $file[1] ?>"><?php echo $file[0]; ?></a>
</div><?php
> }}
if (!empty($field->custom_desc)) {
?>
<div class="product-field-desc"><?php echo vmText::_($field->custom_desc) ?></div>
<?php } ?>
</div>
<?php }} // custom file end ?>
A kódot értelem szerint oda tegyük, ahol a tartalmat meg szeretnénk jeleníteni. A kód alapvető formázáshoz szükséges osztályokkal is rendelkezik, amik kiolvashatók.
Működés
A letölthető állományokat a "images/stories/virtuemart/pdf/" könyvtárba kell helyezni.
Termék oldalon hozzá adjuk a létrehozott egyedi mezőt.
A mező értéke egyszerű esetben a fájlnév. Ebben az esetben a "Download file" felirat jelenik meg. (Nyelvi változóval helyettesíthető)
Ha szeretnénk egyedi címet adni, azt ilyen formában tehetjük:
állomány cím|filenev.file
Azaz a név és a fájlnév közé tegyünk egy | (pipe) jelet.