View Single Post
  #1  
Old 11-19-2011, 06:43 AM
  DrQuietus's Avatar 
DrQuietus DrQuietus is offline
 

Advanced Member
  
Join Date: Dec 2005
Posts: 81
 

Default Extra Fields as Pop Ups

I was working on this for a while and thought someone else might want to use it or improve it.

Instead of calling all the extra fields in the product details the customer wanted links to each extra field which, when clicked, opened in a popup box like the "ask a question about this product" link.

here is what I did:

1. made a new file in the root called popup_ef.php
Code:
<?php require './auth.php'; /** * Get productid */ $productid = intval($productid); if ( empty($productid) ) { func_close_window(); } x_load('product'); $product = func_select_product($productid, $user_account['membershipid']); if ( empty($product) ) { func_close_window(); } if ($productid) { $extra_fields = func_query("SELECT $sql_tbl[extra_fields].*, $sql_tbl[extra_field_values].value as field_value, IF($sql_tbl[extra_field_values].fieldid > '0', 'Y', '') as is_value, IF($sql_tbl[extra_fields_lng].field != '', $sql_tbl[extra_fields_lng].field, $sql_tbl[extra_fields].field) as field FROM $sql_tbl[extra_fields] LEFT JOIN $sql_tbl[extra_field_values] ON $sql_tbl[extra_fields].fieldid = $sql_tbl[extra_field_values].fieldid AND $sql_tbl[extra_field_values].productid = '$productid' LEFT JOIN $sql_tbl[extra_fields_lng] ON $sql_tbl[extra_fields].fieldid = $sql_tbl[extra_fields_lng].fieldid AND $sql_tbl[extra_fields_lng].code = '$shop_language' WHERE 1 $provider_condition ORDER BY $sql_tbl[extra_fields].orderby"); } else { $extra_fields = func_query("SELECT $sql_tbl[extra_fields].*, IF($sql_tbl[extra_fields_lng].field != '', $sql_tbl[extra_fields_lng].field, $sql_tbl[extra_fields].field) as field FROM $sql_tbl[extra_fields] LEFT JOIN $sql_tbl[extra_fields_lng] ON $sql_tbl[extra_fields].fieldid = $sql_tbl[extra_fields_lng].fieldid AND $sql_tbl[extra_fields_lng].code = '$shop_language' WHERE 1 $provider_condition ORDER BY $sql_tbl[extra_fields].orderby"); } if (!empty($extra_fields)) { if (in_array(AREA_TYPE, array('C', 'B')) && $config["Extra_Fields"]["display_default_extra_fields"] == 'Y') { foreach ($extra_fields as $ef_k=>$ef_v) { if (empty($ef_v['field_value']) && $ef_v['is_value'] != 'Y' && !empty($ef_v['value'])) $extra_fields[$ef_k]['field_value'] = $ef_v['value']; } } if (in_array(AREA_TYPE, array('C', 'B')) && !$product_info["allow_active_content"]) { foreach ($extra_fields as $k => $v) { $extra_fields[$k]['field_value'] = func_xss_free($v['field_value']); } } $smarty->assign('extra_fields', $extra_fields); } $smarty->assign('foo', $foo); $smarty->assign('productid', $productid); $smarty->assign('template_name', 'modules/Extra_Fields/extra_fields_popup.tpl'); func_display('customer/help/popup_info.tpl', $smarty); ?>

2. in skin/common_files/modules/Extra_Fields made a new file called
extra_fields_popup.tpl
Code:
<table class="ef"> {foreach from=$extra_fields item=v} {if $v.active eq "Y" and $v.field_value and $v.fieldid eq $foo} <div class="property-name">{$v.field}</div> <div class="property-value">{$v.field_value}</div> {/if} {/foreach} </table>

3. changed modules/Extra_Fields/product.tpl

from

Code:
{foreach from=$extra_fields item=v} {if $v.active eq "Y" and $v.field_value} <tr> <td class="property-name">{$v.field}</td> <td class="property-value" colspan="2">{$v.field_value}</td> </tr> {/if} {/foreach}

to


Code:
{foreach from=$extra_fields item=v} {if $v.active eq "Y" and $v.field_value} {include file="customer/buttons/button.tpl" button_title=$v.field style="button" href="javascript: return !popupOpen(xcart_web_dir + '/popup_ef.php?productid=`$product.productid`&foo=`$v.fieldid`')"} {/if} {/foreach}

Any thoughts or ideas for improvement would be greatly appreciated. I am not sure I did this the best way, but it is working.

I would also like the product title and extra field name at the top of the popup window, but haven't been able to figure it out.
__________________
Dave Jones
dave@industrialwebworks.net
Mostly 4.7.2 - 4.7.5
Reply With Quote