Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


cubicsquare last won the day on September 27 2021

cubicsquare had the most liked content!

1 Follower

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

cubicsquare's Achievements


Enthusiast (6/14)

  • Dedicated Rare
  • Reacting Well Rare
  • First Post
  • Collaborator Rare
  • Conversation Starter Rare

Recent Badges



  1. @bsmither woah. How would you get seen? Direct marketing with website printed onto physical advertising?
  2. hi there @bsmither interesting tip about Drupal. My problem is that my shops on any of my various carts just aren't appearing in Google results. So, l guess SEO is the way forward. But how exactly?
  3. Visibility: OK here's my gripe about all carts - not just the Cubic variety. We want comparable sales to eBay or Amazon. How do we get this? Any actual success stories where sales have gone from mediocre to strong? Multibuy: Of course, once you get an influx of visitors, you'll need to offer multibuy deals. This is a gripe specific to CubeCart and one other cart l won't mention: l think l tried a multibuy extension but it just didn't work. This to me is essential to drive sales. I'd want Buy 4, get extra 1 free (the free one being the cheapest in the cart), in conjunction with other BOGO deals as an accumulator which funnels sales to higher and higher quantities, such that you have Buy 4 get extra 1 free, Buy 10 get extra 4 free ... then it jumps to Buy 20 get extra 10 free. It doesn't permit Buy 10 get 4 free plus Buy 4 get extra 1 free i.e. it will discourage the purchase of 19 items in total (10+4, plus 4+1), instead if you add 19 to the basket, you only get the 10 plus 4 free deal, i.e. out of your 19 items, only 4 will be free of charge. As soon as you get to 20 items then avail yourself of another 10 free items ! This is done by having your multibuy accumulator as exclusive ranges, so if cart quantity is within the given range, then that specific deal kicks in (e.g. 4-5 items means 1 extra free, and it's the cheapest 1, 6-9 items means 2 extra items free, and it's the cheapest 2, 10 to 19 items means 4 extra items free, and it's the cheapest 4). If one of these deals is being struck, no other deals can be applied. However, when you reach the very top of the accumulator e.g. buy 20 items, add an extra 10 for free, and those 10 will be the cheapest items ... that deal is exclusive just like the other BOGO tiers i.e. no other deals can kick in, but*also* it's recursive i.e. it's the ultimate deal, it recurs in multiples of itself up to infinity.
  4. Hi there, l cannot even remember creating this thread and l have no clue what it is about, but please see the post immediately above yours, l've given the solution there
  5. I guess only CubeCart templates can be used with CubeCart? I've never thought of using anything but the default / free skins, my needs are basic. I know there are templates out there which enable vids to be embedded with various controls e.g. playback speed. To do that, you'll need style sheets as auxiliary pages to install into your website. I mean, when you buy the website template, it will be a bundle of different elements which must all be put into various folders for the template to work. I actually did it on my own website. Can't remember how hehe. But the point is: that would indicate that you can't just throw any template at CubeCart. So you'll need to tweak an existing template if no CubeCart video templates exist. tl;dr: I'd be interested in this too, as l'd like to create quick vids showcasing my own manufactured products, stock video footage set to my own music. I'd like a one-size fits all solution that l can use on any cart's template, not just CubeCart.
  6. For posterity here are the parts you mentioned in the previous post: ///////////////////////////PUBLIC FUNCTION CALCULATE PART OF THE PHP: public function calculate() { $this->debugH('BASKET TOTALS'); $this->debug(sprintf('Basket weight: %.3F', $this->_weight)); $this->debug(sprintf('Basket value: %.2F', $this->_value)); $this->debug(sprintf('Basket item count: %d', $this->_item_count)); $zone_ids = $this->matching_zone_ids(); $rates = $this->matching_rates($zone_ids); // CALCULATE PRICE FOR EACH SHIPPING METHOD $this->_package = array(); for ($i=0; !empty($rates) && $i<count($rates); $i++) { $price = 0.0; if ($this->_settings['use_flat']) $price += $rates[$i]['flat_rate']; if ($this->_settings['use_weight']) $price += $rates[$i]['weight_rate'] * $this->_weight; if ($this->_settings['use_item']) $price += $rates[$i]['item_rate'] * $this->_item_count; if ($this->_settings['use_percent']) $price += $rates[$i]['percent_rate']/100 * $this->_value; $this->_package[] = array( 'name' => $rates[$i]['method_name'], 'value' => sprintf('%.2F', $price), 'tax_id' => (int)$this->_settings['tax'], 'tax_inclusive' => (int)$this->_settings['tax_included'], ## Delivery times not applicable to this module 'shipping' => '', 'delivery' => '', 'next_day' => '' ); } if (!empty($this->_package)) { $this->debugH('FINAL SHIPPING OPTIONS FOR THIS ADDRESS AND BASKET'); foreach ($this->_package as $p) $this->debug(sprintf('%s: %s', $p['name'], $p['value'])); } else { $this->debugH('<strong>All In One Shipping module has no shipping options for this address and basket!</strong>'); } $this->echo_debug(); return !empty($this->_package) ? $this->_package : false; } ///////////////////////////PRIVATE FUNCTION MATCHING RATES PART OF THE PHP: private function matching_rates($zone_ids) { if (!is_array($zone_ids)) { return array(); } $this->debugH('SHIPPING RATES'); $this->debug('All rates:', $debug_level=2); $this->debug('<pre>'.print_r($this->_all_rates, true).'</pre>', $debug_level=2); $this->debug(sprintf('Looking at the shipping rates for zone(s) [ID %s]', implode(', ',$zone_ids))); // resulting matching rates (if any) $rates = array(); $count = count($this->_all_rates); for ($i=0; !empty($this->_all_rates) && $i<$count; $i++) { $r = $this->_all_rates[$i]; if (in_array($r['zone_id'], $zone_ids)) { $ok = true; if ($this->_settings['range_weight']) { if ($this->_weight < $r['min_weight'] && $r['min_weight'] > 0) { $ok = false; } else if ($this->_weight > $r['max_weight'] && $r['max_weight'] > 0) { $ok = false; } if (!$ok) $this->debug(sprintf('Rate [ID: %d] [%s] --- Weight range [%s &lt; weight &lt;= %s] doesn\'t match basket weight [%s]', $r['id'], $r['method_name'], $r['min_weight'], $r['max_weight'], $this->_weight)); } if ($ok && $this->_settings['range_subtotal']) { if ($this->_value <= $r['min_value'] && $r['min_value'] > 0) { $ok = false; } else if ($this->_value > $r['max_value'] && $r['max_value'] > 0) { $ok = false; } if (!$ok) $this->debug(sprintf('Rate [ID: %d] [%s] --- Subtotal range [%s &lt; subtotal &lt;= %s] doesn\'t match basket subtotal [%s]', $r['id'], $r['method_name'], $r['min_value'], $r['max_value'], $this->_value)); } if ($ok && $this->_settings['range_items']) { if ($this->_item_count < $r['min_items'] && $r['min_items'] > 0) { $ok = false; } else if ($this->_item_count > $r['max_items'] && $r['max_items'] > 0) { $ok = false; } if (!$ok) $this->debug(sprintf('Rate [ID: %d] [%s] --- Total Quantity range [%s &lt; total quantity &lt; %s] doesn\'t match basket total quantity [%s]', $r['id'], $r['method_name'], $r['min_items'], $r['max_items'], $this->_item_count)); } if ($ok) { $this->debug(sprintf('Rate [ID: %d] [%s] --- <strong> Shipping rate is valid for this basket!</strong>', $r['id'], $r['method_name'])); $rates[] = $r; } } } return $rates; Bearing in mind this is my first ever real look at PhP (l just Googled 1 minute ago, apparently it's a programming language all in itself), l would zoom in on the above 2-line quoted part, and add a caveat about the GTIN field, in a series of nested "if" statements, one per shipping policy to be denoted by a GTIN field. Each nested "if" statement would exclude the shipping methods named in that GTIN field, period, regardless the weight band. Of course it would be problematic if you just wanted to give freepost for a specific weight band under a specific Shipping Method but that's rabbit holes for yer, l think the main thing is that your method is powerful because there's no need to redefine each of the >25 shipping zones l have, per shipping policy. Instead, the GTIN code would treat Shipping Policies as a gentle post edit. And it won't necessarily delete an entire row of data, it would just mute it. So l think that's quite a deft move - l hope it works out for you. I hope you alert the forum of any versions you produce , even if just for testing, l'd be interested.
  7. Good idea, but because there will be a variety of such makeshift GTIN codes (or whatever codes) we may as well call it by its real name: a second axis to AIOS, i.e. Shipping Policy (currently, AIOS is veeeeery linear). Proposals for AIOS overhaul: - Additional Axis: Shipping Weight Ranges (no need to re-type ranges for each new shipping method) - Additional Axis: Shipping Policy (this is not a visible axis as such, it is basically a box of filing cards, on each filing card is written out your vertical list of Y-AXIS available shipping methods, and horizontal X-AXIS their cost at each weight range) { As an unnecessary extra: a checkbox next to each shipping method, allowing it to be muted, although alternatively of course you can just delete it manually, but then you lose the data you may have given for that shipping method within that shipping policy card, when in fact you might have wanted to be able to toggle it on and off at whim. } - And this huge leap: somehow allow duplication of a shipping policy, though l don't know how that will be possible because obviously duplicating shipping data will affect the CubeCart databases and l'm not qualified to even say the word "database". I think l may be able to tinker with the other stuff l've just mentioned in this post. Do you have some way l could view the AIOS app code or is it private? I don't mind really, it's not like l'll rustle up something within a few days or even years but it'd be nice to see if l could make a go of it. HTML was fairly easy to pick up and necessity drove me to learn basic HTML.
  8. Currently: Imagine i'm selling a big sculpture made of coathanger wires. It is big, but doesn't actually weigh a lot. By the way l really think this is moot because l have no such stock but: 2kg item courier options: > Small parcel (21x16x11cm): £FREE or £3.50 or sometihng cheap > 1kg-10kg Bulky Tariff (50x50x60cm): £14.50 Of course the sculpture won't fit into a small parcel. But, 95.5% of customers will opt for the small parcel tariff. Myself included !!! For my product "Coathanger Sculpture of Thinking Man" l need to: > mute the small parcel tariff and / or: > Make visible only the 1kg-10kg Bulky Tariff I guess it's not doable is it? Not with AIOS in its present form. If the answer is indeed no, may l ask if there's a way l can play about with the code? I'm a complete stranger to coding but maybe l can pick it up just by looking at the existing code for the AIOS app?
  9. Thank you, i returned to this thread because the problem did indeed crop up again, it was just a delayed effect with each new spreadsheet upload. So it's back. I go to Store Settings > Stock > Admin stock warning method = "Use Global stock warning level" Global stock warning level = "5" I have now changed it to: Admin stock warning method = "Use product-specific level" It seems the problem is now solved
  10. Hi there, just for that item alone. I guess it's not doable with AIOS, because that only has one axis: Zone. If people order multiple items no problem, it's keyed to weight. The weight will reveal if there's a bulky policy possible. Even if the order is mixed (bulk + small package combined), so long as they paid bulky for one it's fine. 2 small items in combo will be anticipated correctly as regards their size, by my preset postage rates, i.e. 5kg + 5kg will be anticipated as a 10kg which in turn will be anticipated as a fairly bulky parcel anyways. That's the beauty of my existing system. But for single items, i'd really like to enforce the "Bulky" tariff or at least block the "small parcel" tariff. I guess the only way is to add a second axis to AIOS, not just zones but also policies. The policy will be called "Bulky Only" and therefore will only have the "Bulky" method within its menu. I'm guessing therefore it's not possible right now?
  11. Hi there, Is there a way to disable some shipping methods for some products in the All in One Shipping extension or via some other means? I have one method for bulky items sent economy. It is currently showing in the same pallette as, say, ordinary small parcels sent economy. Obviously 99.5% of customers will opt for the cheaper ordinary small parcels economy tariff, rather than the twice as pricey bulky items eonomy tariff. However, if the item is, say, a chair, then i need to enforce the bulk tariff or at least block out the small parcels tariff.
  12. Never mind, the problem isn't there anymore. I'll update if l see the problem again.
  13. Thank you, now l realise why l had a separate duplicate image column in my upload spreadsheet that missed the preamble part of the URL in the image locations. I've been away too long. Now it's working, woo hooo!
  14. I have several times attemped to upload my inventory. The stock level warning column is left blank. Sometimes i match it to CubeCart's upload parameters i.e. CubeCart takes a note of that column. Last time l tried, l didn't even match it up i.e. l let CubeCart ignore that column. Either way, whether l tell CubeCart to match up with the Stock Level Warning column in the uploaded inventory or to ignore it, l get a stock warning for each of my inventory items, which l am listing as single items. As l say, the Stock Level Warning column is blank anyway. My actual stock level (Stock Level, Use Stock Level) for each item is 1. What gives? @bsmither heeeeeeeelp
  15. Update: I am wondering if the skin i'm using - the Foundation skin - has somehow been revised, and is only permitting images that are cached in a folder specific to the skin? I wonder this because this is the URL for the placeholder image that l get instead of the intended product images: https://store.mysite.com/images/cache/skins/foundation/images/noimage.200.png Sure, that's just the placeholder image, but l do wonder if all of my ad images were meant to go in that parent "foundation/images" folder, if l'm using the Foundation skin? But l'm sure it never used to be like that. I really doubt this is the real issue.
  • Create New...