Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

ArtcoInc

Members
  • Posts

    2,108
  • Joined

  • Last visited

  • Days Won

    40

Reputation Activity

  1. Like
    ArtcoInc reacted to burt in Continue Shopping Button for 2.3.4bs   
    I actually don't recall making such a module...I've made too much stuff over the years lol
    Shall I make a new one and add it into 28d ?
  2. Like
    ArtcoInc got a reaction from Tsimi in State Selector for BS   
    @brian_cee
    What I think @raiwa was saying is ... if your customer starts to fill out the form, the State drop-down will list only the States for the default Country. If your customer is in another Country, they will not be able to select the correct State *UNTIL* they select their Country. *THEN*, the State field will refresh (and I *think* it will defaulting to the first State available for that country). Your customer will then have to go back and select the correct State.
    So, @raiwa suggested that you add a bit of text telling your customer that they will have to re-select their State if they change their Country.
    Make sense?
    Now, I recognize that you want the fields on a specific order. Have you ever been on a web site where the Country is the first field in the form? There are some benefits to this, as you can not only have the correct States available in that drop-down field, but you can also format the rest of the form according to the addressing requirements of the customer's Country.
    HTH
    Malcolm
  3. Like
    ArtcoInc got a reaction from raiwa in State Selector for BS   
    @brian_cee
    What I think @raiwa was saying is ... if your customer starts to fill out the form, the State drop-down will list only the States for the default Country. If your customer is in another Country, they will not be able to select the correct State *UNTIL* they select their Country. *THEN*, the State field will refresh (and I *think* it will defaulting to the first State available for that country). Your customer will then have to go back and select the correct State.
    So, @raiwa suggested that you add a bit of text telling your customer that they will have to re-select their State if they change their Country.
    Make sense?
    Now, I recognize that you want the fields on a specific order. Have you ever been on a web site where the Country is the first field in the form? There are some benefits to this, as you can not only have the correct States available in that drop-down field, but you can also format the rest of the form according to the addressing requirements of the customer's Country.
    HTH
    Malcolm
  4. Thanks
    ArtcoInc got a reaction from burt in Arbitrary products tags   
    @rudolfl
    Don't know if any of these would help, but @burt had one is his 28 days bundle (#11 below)
    He also had this one in his 28 days bundle:
    And this one:
    HTH
    Malcolm
  5. Like
    ArtcoInc reacted to GLWalker in [Contribution] Customer Support Portal   
    This is the support thread for the Customer Service Portal  https://apps.oscommerce.com/xihXD&customer-service-portal
    The primary goal of the Customer Support Portal is to allow osCommerce shop owners to allow their employees to work on order fulfillment and customer support inquiries without having to allow direct admin access. Additionally it serves as a full fledged order placement system that will work with a shops existing payment methods, as well as a couple of new payment modules that could be useful in case alternate means of payment processing are desired, or in person cash sales are needed.
    The Customer Support Portal also allows  a true guest checkout option. No customer is created if this option is used. All customer information is stored only in the actual order information. There is a quick link in the Customer Portal Header menu that allows guest orders to be viewed separately from the rest of the store orders. Please note that in the ht_customer_service module settings there is an email field to fill out, by default it uses the store owners set email address. This email is used for certain functions within the Customer Service Portal, such as a placeholder email in guest account creation. It will always be populated on the guest customers information field, just to skip the additional step of gathering an email address from a guest.
    Whenever done with guest accounts, or even logging into an existing customers account always go back to the dashboard. This resets the session for that particular customer. If you are in a customers account, then you have to take on a session allowing you to access their info, the dashboard kills any sessions that are not related directly to you the customer service agent.
    If you are using the cash payment option, you will need to adjust the sort order of you order total module sp that the order totals and cash back amounts are computed correctly.
     
    Helpful Videos:
    https://www.youtube.com/watch?v=cwaid91cp1A&feature=youtu.be
    https://www.youtube.com/watch?v=dLgiD1FoTj4&feature=youtu.be
     
    Known issues:
    This plugin has been used in working shops for a number of years and proven to be stable. There are howver 2 issues I am aware of.
    1) If a product in the cart has attributes, the update quantity field wont work properly. If a different quantity is desired, just delete it and add the correct quantity from the product listing itself.
    2) I have not noticed this until testing on PHP 7.0, when using the cash payment option, the update button needs to be clicked twice.
     
    Feel free to post with comments or suggestions.
  6. Like
    ArtcoInc got a reaction from helenium7 in State Selector for BS   
    @helenium7
    Yes, it's the double 'c' that is causing the problem. The current coding style is getting away from having the TABLE_ declaration, and actually using the table name. Here, it's supposed to be "configuration". So, just delete the extra 'c'.
    Malcolm
  7. Like
    ArtcoInc reacted to raiwa in Modules Control   
    New add-on Modules Control
    Extended and more complete version of Slim Checkout to control each individual content module for each store page.
    Download:
    https://github.com/raiwa/Module_Control/tree/master/New_Files/catalog/admin/includes/languages
    What it does:
    - add Module Control Page to Admin/Modules
    - allows to define controlled pages
    - allows to decide separate for each installed module and for each controlled page to be hidden.
    - control for each store root page (file)
    - control for each installed module of the following groups:
        - navbar
        - header
        - boxes
        - footer
        - footer_suffix
        
    Install:
    - copy all files from "New Files" folder
    - copy and replace "osc_template.php" from "Modified File" folder.
    Go to Admin/Modules/Modules Control
    This is Beta version. Please try and test.
    Any bug report and suggestion very welcome.
     
    rgds
    Rainer
  8. Like
    ArtcoInc got a reaction from oscMarket in Custom Product Builder of OSc BS   
    (just thinking out loud here ... )
    Will the Assembly Fee be a single fee, regardless of how much (or how little) assembly is done? Or, will it be on an item-by-item basis?
    For example, if the customer wants the CPU and Memory installed on the Motherboard before shipment, but they want to assemble the Case, Power Supply, and Motherboard themselves?
    And, if you don't want the Assembly Fee as a product, maybe treat it as a Hazmat fee, a special packing fee (item must be on a pallet), or shipping fee (forklift required).
    Malcolm
  9. Like
    ArtcoInc got a reaction from raiwa in Slim Checkout for BS   
    @raiwa
     
    I like Option B. It gives the shop owner greater control over how things display.
    In fact, you have check-boxes in the Admin to allow the shop owner to select which to use, and 'hide' the coma separated list ... making things even easier and cleaner.
     
    I'm working on a shop where I've written some 'blank column' boxes, which basically create empty side columns. With no other content in the side columns, this creates a clean space on each side of the main content. I would prefer to have the option to be able to keep this clean space, and not expand the main content to full width.
     
    Sounds good to me.
    Thank you for your contribution!
    Malcolm
  10. Like
    ArtcoInc reacted to Tsimi in Converting Points and Rewards system for osC BS   
    Addon is now available. Congratulations!


  11. Like
    ArtcoInc got a reaction from Bobber in Store Search Bar (BS)   
    *** Update ***
    Apparently, I failed to add one file to the ZIP package. Updated the package to include the missing file.
    Store Search (BS) - NavBar - Edge v1.01.zip
    Malcolm
  12. Like
    ArtcoInc got a reaction from Bobber in Store Search Bar (BS)   
    @milerwan
    In case anyone is interested ... here is my attempt to convert this from a Header module to a Navbar module. This has been written for the latest version of Edge. No core changes. Just copy the files, install, configure, and go.
    Note: If you are installing this Navbar module into a store where you already have the Header version, this will overwrite one file, breaking your Header version! Since I do not see an instance where that would happen, I don't see it as a problem. But, consider yourself warned.
    Please let me know if your have any questions or problems.
    Store Search (BS) - NavBar - Edge v1.0.zip
    Malcolm
  13. Like
    ArtcoInc reacted to burt in Store Search Bar (BS)   
    @ArtcoInc products_head_keywords_tag is in jack_mcs seo addon.  You can use products_seo_keywords instead.
     
    I'm surprised that anyone would put out an addon which has artifacts left over from a different (and incompatible) addon, incredibly short sighted and problematic.
  14. Like
    ArtcoInc reacted to mattjt83 in UK shipping module needed for 2.3.4 BS and works on PHP7   
    @burt I thought you had also partially merged into the Matrix? :)
  15. Like
    ArtcoInc reacted to burt in UK shipping module needed for 2.3.4 BS and works on PHP7   
    I've made wayyyy too much stuff in the past 17 years.  It all merges into one big code, like the Matrix.
  16. Like
    ArtcoInc reacted to burt in One-Page / Guest Checkout   
    My ethos is;
    Make it very simple for the customer to do things.   As far as a checkout goes, what can be more simple than;
    login > choose shipping > choose payment > review order > complete
    It has been proven many times that a bite-size of cake, followed by a bite-size of cake...is far better than ramming a whole cake down ones throat.

    What I would like to see [in CORE]...which is sort of related...
    On shopping_cart.php a summary (estimated) shipping price, (estimated) taxes and so on.  So they see their grand total prior to starting a checkout.
  17. Like
    ArtcoInc reacted to mattjt83 in One-Page / Guest Checkout   
    Here's a good article: https://www.smashingmagazine.com/2017/05/better-form-design-one-thing-per-page/
    I might actually rework my checkout with this in mind.
  18. Like
    ArtcoInc reacted to BrockleyJohn in Customer Orders Tab in Admin Orders (hook)   
    @@ArtcoInc sorry Malcolm, I had included an earlier version of that file without the language fix. I have uploaded a new version of the package (1.4) with the correct file which should give you no problems.
  19. Like
    ArtcoInc got a reaction from Fredi in Store Search Bar (BS)   
    @@Fredi
     
    As I read the description, the add-on that @@frankl suggested does what you want *IF* you use the Article Manager add-on. If you have your >100 articles any other way, they *may* not be searchable using that.
     
    On the other hand, have you read this?
     
    http://www.oscommerce.com/forums/topic/410166-search-add-on-reviews/
     
    We had a long discussion on how to search for articles, reports, papers, categories, etc.
     
    Malcolm
  20. Like
    ArtcoInc got a reaction from frankl in UPS Dimensional Weight Starting in 2015   
    Since the US Post Office has announced that they too will be implementing Dimensional Weight, I guess it's time to look into how to determine the box dimensions when shipping several different sized items together.
     
    I did a Google search, and found this:
     
    http://stackoverflow.com/questions/12338431/calculating-the-size-of-a-box-for-multiple-products-for-carrier-module-in-presta
     
    So, if ...
     
    1) we had dimensions for each item we sell
    2) we calculate the 'best' box size based on the algorithm above
    3) compare that result to a database table of box sizes we use, and find the closest, but not smaller than, match
    4) use that box size to determine the dimensional weight, keeping in mind that different carriers may apply a different 'weight' to the same box.
    5) use the greater of the dimensional weight vs actual weight to determine the shipping cost
     
    Does anyone think they can do this? This is all *way* above my skill level ...
     
    Malcolm
     
    PS: I did not find the actual code for the above link, but I did find this ...
     
    https://github.com/dvdoug/BoxPacker
  21. Like
    ArtcoInc reacted to Dan Cole in [Addon] iBar Dashboard Modules   
    This addon is designed to add small information modules to your 2.3+ administration dashboard.

    Four modules are included in the initial release.

    iBar New Customers Module - Compares the number of new customers for a specified period with the prior period.

    iBar New Orders Module - Compares the number of new orders for a specified period with the prior period.

    iBar Reviews Module - Alerts you to pending reviews.

    iBar Order Status Module - Allows you to monitor a particular order status.

    More modules and upgrades are planned for future releases.

    The development thread can be found here.

    A number of community members helped move the development along and in that regard I would like to express my appreciation and thanks to:

    Bill aka ecommunlimited
    Scott aka greasemonkey
    Omar aka Omar_one
    Juanma aka piernas
    Carine aka Bruyndoncx

    The iBar Dashboard Modules package will be posted in the addons area and the link to it will be posted here shortly.

    Dan
  22. Like
    ArtcoInc reacted to Dan Cole in Newsletters Subscribers Manager - Oscommerce 2.3 & 2.2   
    For anyone who is following along I have the double opt-in routine working now. :)
     
    What I did was to modify the subscription thank you page so it would generate a subscription key that is written to the newsletter subscription table along with the subscribers email address etc. The thank you page advises the subscriber that we use a double opt in process, explains that they will receive an email that needs their confirmation and finally sends the subscriber an email with a confirmation link that has the subscription key attached.  I followed Garys @@burt lead in generating the key.  I hate reinventing the wheel.
     
    Clicking on the link the subscriber receives opens another page, the subscription table is updated to indicate that the email is confirmed and the subscriber is informed that the process is complete.   
     
    It works pretty well if I do say so myself.
     
    Dan 
  23. Like
    ArtcoInc reacted to Dan Cole in Newsletters Subscribers Manager - Oscommerce 2.3 & 2.2   
    Thought I'd post a little update in case anyone is following along or just wants a chuckle.  :rolleyes:
     
    As I mentioned previously I modified the popup module that Gary developed to offer visitors the opportunity to subscribe to our mailing list.  I use an outside mailing list service so I needed to add their script to post the email address to the list they maintain for me.  That part of the process was fairly simple since they have a form that is used for that purpose so I simply needed to add that script to the popup module. 
     
    With that working I then set up the newsletter table that is used in this contribution...again it was a simple task and just involved running the sql script that was provided.
     
    I then turned my attention to adding the email address to the new table...this proved to be a little more difficult then I thought it would be.  Perhaps it was because of the way I approached it.  I didn't want to abandon my external mailing list, at least not at this point.  It offers a double opt-in routine which I didn't want to mess with until I could add the same function to my popup so I used a bit of javascript to attach the appropriate data to the FORM RETURN URL required by my external mailing list.  I then picked up the data from the RETURN URL and updated the new database table.   This was a bit of a learning exercise for me and while it will need to be reworked and simplified when I drop the external list, hopefully some of the learning will stay with me.
     
    The next thing I did was to take a copy of the total customers dashboard and modify it so that it would show me the number of subscribers on a daily basis.  I'm a big believer in what gets monitored tends to get done.  Again this was another simple thing to do and I ended up with a nice little newsletter subscribers dashboard.
     
    For now I'm going to let the popup go to work and we'll see what impact it has on building my email list.  When I can find the time I'll take a look at what is involved in adding a double opt-in routine. 
     
    Dan
  24. Like
    ArtcoInc reacted to milerwan in Specifications, reviews and support tabs (Bootstrap)   
    @@Howmessages

    Here is the script to add to the product_info file to have bootstrap nav tabs :
    <div class="contentContainer"> <div class="contentText" <!-- Nav tabs --> <ul class="nav nav-pills" role="tablist"> <li role="presentation" class="active"><a href="#descriptive" aria-controls="descriptive" role="tab" data-toggle="tab"><?php echo TEXT_DESCRIPTIVE; ?></a></li> <?php if (tep_not_null($product_info['products_nav_tabs_text_1'])) { ?> <li role="presentation"><a href="#nav_tabs_1" aria-controls="nav_tabs_1" role="tab" data-toggle="tab"> <?php echo $product_info['products_nav_tabs_title_1']; ?></a></li> <?php } if (tep_not_null($product_info['products_nav_tabs_text_2'])) { ?> <li role="presentation"><a href="#nav_tabs_2" aria-controls="nav_tabs_2" role="tab" data-toggle="tab"> <?php echo $product_info['products_nav_tabs_title_2']; ?></a></li> <?php } ?> <li role="presentation"><a href="#reviews" aria-controls="reviews" role="tab" data-toggle="tab"><?php echo TEXT_REVIEWS; ?></a></li> <?php // also_purchase tab start $orders_query = tep_db_query("select p.products_id, p.products_image, pd.products_name from " . TABLE_ORDERS_PRODUCTS . " opa, " . TABLE_ORDERS_PRODUCTS . " opb, " . TABLE_ORDERS . " o, " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd on p.products_id = pd.products_id where opa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and opa.orders_id = opb.orders_id and opb.products_id != '" . (int)$HTTP_GET_VARS['products_id'] . "' and opb.products_id = p.products_id and opb.orders_id = o.orders_id and p.products_status = '1' and pd.language_id = '" . (int)$languages_id . "' group by p.products_id order by o.date_purchased desc limit " . MAX_DISPLAY_ALSO_PURCHASED); $num_products_ordered = tep_db_num_rows($orders_query); if ($num_products_ordered >= MIN_DISPLAY_ALSO_PURCHASED) { ?> <li role="presentation"><a href="#also_purchased" aria-controls="also_purchased" role="tab" data-toggle="tab"><?php echo TEXT_ALSO_PURCHASED; ?></a></li> <?php } // also_purchase tab end ?> </ul> <br> <!-- Tab panes --> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="descriptive" itemprop="description"> <?php echo stripslashes($product_info['products_description']); ?> </div> <?php if (tep_not_null($product_info['products_nav_tabs_text_1'])) { ?> <div role="tabpanel" class="tab-pane main" id="nav_tabs_1" itemprop="description"><?php echo $product_info['products_nav_tabs_text_1']; ?></div> <?php } if (tep_not_null($product_info['products_nav_tabs_text_2'])) { ?> <div role="tabpanel" class="tab-pane main" id="nav_tabs_2" itemprop="description"><?php echo $product_info['products_nav_tabs_text_2']; ?></div> <?php } ?> <div role="tabpanel" class="tab-pane" id="reviews"> <!-- début --> <?php $reviews_query_raw = "select r.reviews_id, SUBSTRING_INDEX(rd.reviews_text, ' ', 20) as reviews_text, r.reviews_rating, date(r.date_added) as date_added, c.customers_firstname, c.customers_lastname from " . TABLE_REVIEWS . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd, " . TABLE_CUSTOMERS . " c where r.products_id = '" . (int)$product_info['products_id'] . "' and r.reviews_id = rd.reviews_id and r.customers_id = c.customers_id and rd.languages_id = '" . (int)$languages_id . "' and r.reviews_status = 1 order by r.date_added DESC"; $reviews_split = new splitPageResults($reviews_query_raw, '4'); if ($reviews_split->number_of_rows > 0) { ?> <h4><?php echo TEXT_LAST_REVIEWS; ?></h4> <hr> <div class="reviews"> <!-- ADD anonymous reviews --> <?php $reviews_query = tep_db_query($reviews_split->sql_query); while ($reviews = tep_db_fetch_array($reviews_query)) { $review_name = tep_output_string_protected($reviews['customers_firstname'] . ' ' . substr($reviews['customers_lastname'], 0, 1) . '.'); ?> <!-- END anonymous reviews --> <blockquote class="col-sm-6" itemprop="review" itemscope itemtype="http://schema.org/Review"> <p itemprop="reviewBody"><?php echo tep_output_string_protected($reviews['reviews_text']) . ' ...' ?></p> <meta itemprop="datePublished" content="<?php echo $reviews['date_added']; ?>"> <span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating"> <meta itemprop="ratingValue" content="<?php echo (int)$reviews['reviews_rating']; ?>"></span> <footer><?php echo sprintf(REVIEWS_TEXT_RATED, tep_draw_stars($reviews['reviews_rating']), $review_name, $review_name); ?></footer> <span style="margin-top:5px;" class="pull-right xsmall"><?php echo REVIEWS_TEXT_POSTED . ' ' . tep_date_long($reviews['date_added']); ?></span> </blockquote> <?php } ?> </div> <div class="clearfix"></div> <?php } else { ?> <div class="alert alert-info"> <?php echo TEXT_NO_REVIEWS; ?> </div> <?php } ?> <br> <?php if ($reviews_split->number_of_rows > 0) { ?> <div class="row col-xs-6"><?php echo tep_draw_button(IMAGE_BUTTON_REVIEWS . (($reviews['count'] > 0) ? ' (' . $reviews['count'] . ')' : ''), 'fa fa-commenting', tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params())); ?></div> <?php } else { ?> <div class="row col-xs-6"><?php echo tep_draw_button(IMAGE_BUTTON_WRITE_REVIEW . (($reviews['count'] > 0) ? ' (' . $reviews['count'] . ')' : ''), 'fa fa-commenting', tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params())); ?></a></div> <?php } ?> <div class="clearfix"></div> </div> <!-- fin --> <div role="tabpanel" class="tab-pane main" id="also_purchased"> <?php if ((USE_CACHE == 'true') && empty($SID)) { echo tep_cache_also_purchased(3600); } else { include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } ?> </div> </div> </div> And in admin/categories.php file, you must add/adapt these entries:
    - products_nav_tabs_title_1
    - products_nav_tabs_title_2
    - products_nav_tabs_text_1
    - products_nav_tabs_text_2

    Like this :
    $sql_data_array = array('products_name' => tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]), 'products_description' => tep_db_prepare_input($HTTP_POST_VARS['products_description'][$language_id]), 'products_url' => tep_db_prepare_input($HTTP_POST_VARS['products_url'][$language_id]), // Nav Tabs 'products_nav_tabs_title_1' => tep_db_prepare_input($HTTP_POST_VARS['products_nav_tabs_title_1'][$language_id]), 'products_nav_tabs_title_2' => tep_db_prepare_input($HTTP_POST_VARS['products_nav_tabs_title_2'][$language_id]), 'products_nav_tabs_text_1' => tep_db_prepare_input($HTTP_POST_VARS['products_nav_tabs_text_1'][$language_id]), 'products_nav_tabs_text_2' => tep_db_prepare_input($HTTP_POST_VARS['products_nav_tabs_text_2'][$language_id])); // Nav Tabs and
    $description_query = tep_db_query("select language_id, products_name, products_description, products_nav_tabs_title_1, products_nav_tabs_title_2, products_nav_tabs_text_1, products_nav_tabs_text_2, products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$products_id . "'"); while ($description = tep_db_fetch_array($description_query)) { tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_nav_tabs_title_1, products_nav_tabs_title_2, products_nav_tabs_text_1, products_nav_tabs_text_2, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_nav_tabs_title_1']) . "', '" . tep_db_input($description['products_nav_tabs_title_2']) . "', '" . tep_db_input($description['products_nav_tabs_text_1']) . "', '" . tep_db_input($description['products_nav_tabs_text_2']) . "', '" . tep_db_input($description['products_url']) . "', '0')"); } and
    $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_nav_tabs_title_1, pd.products_nav_tabs_title_2, pd.products_nav_tabs_text_1, pd.products_nav_tabs_text_2, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_availability, p.products_tax_class_id, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'"); and above the textarea  description windows:
    <!-- Nav Tabs --> <tr> <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td> </tr> <tr> <td colspan="2" class="main"><hr></td> </tr> <tr> <td colspan="2" class="main"><?php echo TEXT_PRODUCTS_NAV_TABS; ?></td> </tr> <tr> <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td> </tr> <?php for ($i=0, $n=sizeof($languages); $i<$n; $i++) { ?> <tr> <td colspan="2"><table border="0" cellspacing="0" cellpadding="0"> <tr> <td><table border="0" cellspacing="0" cellpadding="0"><?php echo tep_image(tep_catalog_href_link(DIR_WS_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . ' ' . tep_draw_input_field('products_nav_tabs_title_1[' . $languages[$i]['id'] . ']', (empty($pInfo->products_id) ? '' : tep_get_products_nav_tabs_title_1($pInfo->products_id, $languages[$i]['id'])), 'size="30"'); ?></td> <tr> <td class="main" valign="top"><?php echo tep_image(tep_catalog_href_link(DIR_WS_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']); ?> </td> <td class="main"><?php echo tep_draw_textarea_field('products_nav_tabs_text_1[' . $languages[$i]['id'] . ']', 'soft', '60', '4', (isset($products_nav_tabs_text_1[$languages[$i]['id']]) ? stripslashes($products_nav_tabs_text_1[$languages[$i]['id']]) : tep_get_products_nav_tabs_text_1($pInfo->products_id, $languages[$i]['id']))); ?></td> </tr> </table></td> <td class="main"><?php echo tep_draw_separator('pixel_trans.gif', '20', '1'); ?></td> <td><table border="0" cellspacing="0" cellpadding="0"><?php echo tep_image(tep_catalog_href_link(DIR_WS_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . ' ' . tep_draw_input_field('products_nav_tabs_title_2[' . $languages[$i]['id'] . ']', (empty($pInfo->products_id) ? '' : tep_get_products_nav_tabs_title_2($pInfo->products_id, $languages[$i]['id'])), 'size="30"'); ?></td> <tr> <td class="main" valign="top"><?php echo tep_image(tep_catalog_href_link(DIR_WS_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']); ?> </td> <td class="main"><?php echo tep_draw_textarea_field('products_nav_tabs_text_2[' . $languages[$i]['id'] . ']', 'soft', '60', '4', (isset($products_nav_tabs_text_2[$languages[$i]['id']]) ? stripslashes($products_nav_tabs_text_2[$languages[$i]['id']]) : tep_get_products_nav_tabs_text_2($pInfo->products_id, $languages[$i]['id']))); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php } ?> <tr> <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td> </tr> <!-- Nav Tabs --> Finally, you need to create/add in your database / TABLE / "products_description" these entries:
    - products_nav_tabs_title_1   -> Type varchar(32)
    - products_nav_tabs_title_2   -> Type varchar(32)
    - products_nav_tabs_text_1   -> Type text
    - products_nav_tabs_text_2   -> Type text

     
    With these blank entries, you can add for some products specific tabs with their own text.
  25. Like
    ArtcoInc reacted to raiwa in Different payment options by Customer   
    @@ArtcoInc,
     
    I implemented this in my Wholesale SPPC Lite add-on.
    You could just use the payment module selection feature and leave the price manipulation out.
    If you only need 2 customer groups it will do it.
    It's modularized and installation is very easy.
     
    Do the following:
    - Upload all new files except:
    content header module content product-info module shopping_cart_mod.php class Do only the following modifications or upload and replace:
    admin/customers.php includes/classes/payment.php Install module: Admin/store/wholesale
    Select the payment modules for retailers/wholesalers
    In Admin/customers: Assign customers to wholesale group
     
    You can change the language definitions "Retailer/Wholesaler" in the store module to fit better your usage.
     
     
    rgds
    Rainer
×
×
  • Create New...