I have 2 shipping methods within Virtuemart & One Page Checkout (e-go & Fastways), and as a default on page load, "e-go" shipping is selected as a default!
I have tried everything to make "Fastways" the default shipping method; by modifying the list_order and id. But somehow "e-go" is always taking precedent?! Any clues as to how to prevent this?
ps: I've seen a post that makes a hack in virtuemart (but this isn't using One Page Checkout)...
Try changing the shipping method ordering. As Virtuemart shows the first one being selected. You will need to ordering of Shipping methods so that Fastways goes on top.
Related
I am trying to make a simple e-commerce website and followed some tutorials.
However, the author of the book used complicated function based view to make cart function..
there are bunch of session stuffs.. and I don't understand the logic..
and I am trying to think the other way..
what about using database to store all the cart related data, and
use CBV to build it?
for example,
CartListView to see the contents of the cart, and CartUpdateView to change the quantity..
then are they going to be two different pages? separated page that user should go to the
different page to change the value??
please help me T T
You can access the session in any sort of CBV as self.request.session and a "shopping cart" is normally stored therein.
You'll certainly need to implement a CartListView to see what's in it, or possibly a CartEditView to show the cart with options to edit the quantities and delete anything that shouldn't be in there.
Adding products to the cart may well be an "Add" button on a ProductDetailView or lots of add buttons in a ProductListView. You might add a POST handler method to these views which are otherwise read-only (GET-only) bt default. Or you might make them FormViews, even though the form would be hidden and filled/POSTed by JS rather than the shopper doing anything other than clicking "add".
And then there will be a CheckoutView.
Check https://djangopackages.org/ (put "cart" in the search box). this will throw up several shopping cart things which might be the code you want, or the source of which might be a valuable learning resource before you end up rolling your own.
I'm building a magento (1.9CE) store which needs to interface with another system and I could use some guidance.
Although not particularly relevant, I'm communicating with the 'other' system using web services (it's on another server) but what I need help with is finding the places where I need to put in code to do what I want.
There are three major functions that I need to implement:-
When a user clicks on the product detail page I need to make a call to check the stock levels on the other system, update the magento stock levels and THEN display the product detail page.
When a sale is completed, I need to send details of that sale to the other system.
When a new product is added I need to communicate with the other system. This may be a bit more complex because there are a few checks I need to do during the 'add product' process, for example, check the SKU is valid, that tghe product doesn't already exists, etc. I think until I start coding this I shan't realise the full extent of this functionality!
Any guidance gratefully received!
Even though this might (and probably will) dramatically slow down your store, if you want real-time information, I guess the easiest way would be with observers.
You can use catalog_controller_product_init_before: This will trigger when the product detail page is starting loading, so you should be able to upload the stock at this point, before the page has finished loading, so that if there is no stock it will not be buyable, which I guess that's what you want.
You can use sales_order_place_after: This will be triggered after a new order has been placed and saved in the database.
You can use catalog_product_new_action or catalog_product_save_after: Depending on how you create your products the first one might not be triggered. The second one will always be triggered once a product (new or existing) has been saved, so at this point you will need to check if the product is new or existing, and do your stuff depending on that.
For an example of how to create an extension and usage of observer events, check this out.
I hope it helps!
I've been asked by a client to look into the possibility of allowing free shipping for orders of more than three items. Essentially this means allowing for a (shipping) pricing structure based on item count rather than total value.
(For a TL;DR, you could probably stop with that problem statement, but I'll provide some solution investigation context below. Maybe I've missed something.)
The admin UI only allows for setting free shipping based on monetary value. Similarly, the "Ship by" category of price options adds the ability to use weight in calculations, but alas not item count.
There seems to be no way to influence the shipping cost through the API. A %%GLOBAL_ShippingPrice%% variable is available to templates and, as I understand things, is calculated only using those admin-configured shipping configuration options described above. The Shipping API only seems to deal with shipping methods (physical not API methods!), and unfortunately the Orders API seems to offer nothing related to shipping costs either. Hmm.
I've looked into hacking the template files, but cannot find any support for custom expressions using the variables available.
We've asked Bigcommerce support, submitted an "idea", and obviously searched the interwebs and poked around the developer documentation. I'm so new, I only heard about Bigcommerce yesterday.
Any suggestions will be greatly appreciated.
Note: First draft of this question included an inline screenshot and lots of relevant hyperlinks. Seems important for a quality question. Apparently I need more karma to insert most of that. I'll edit this question later, if possible and I ever get there, to include those helpful features.
Since Bigcommerce is not an open source platform, you cannot adjust things like shipping services and their actual functionality.
The only workaround I can think of would be to set every product to the same weight(1lb, for example) then set up shipping by weight which says cart >= 3lbs ships free. This will present a problem if you are using real time quotes from providers such as FedEx, USPS, or UPS though.
In the future I would suggest looking at their community forum(forum.bigcommerce.com) for questions such as this, since it does not actually pertain do the development of their API or templating system.
Best of luck!
This is possible if you use ShipperHQ. Here are the steps to configure it:
In ShipperHQ, ensure you have your UPS Carrier set with UPS Ground as
an available shipping method.
Click on Filters on the navbar and add
a new filter.
On your new filter, select “Whole Cart” under Filter
Applies To in the Edit Filter panel and enter a Name you’ll recognize
(e.g. “Over 3 items”).
In the Standard Filters panel, select “Range”
for the Quantity filter, enter a Min value of 3 and check the No Max
checkbox and Save.
You now have a filter set up which will match
against an order total with more than 3 items.
Click on Carrier
Rules on the navbar and add a new Rule.
Enter a descriptive Name
(e.g. “Free UPS Ground over 3 items”) under the Overview panel and
select UPS Ground in the Live Shipping Methods Assigned field under
the Applicable Shipping Methods panel.
In the Conditions panel,
select the Filter you just set up under Weight/Price/Quantity Filters
In the Actions panel and the Rule Action section, choose
“Set/Surcharge Shipping Methods” from the Action to Perform
drop-down, “Set Rates” from the Adapt Shipping Rates drop-down, and
“Per Cart” in the Apply Shipping Rate/Percentage drop-down.
In the
Set/Modify Shipping Rate section of the Actions panel, enter 0 in the
Shipping Rate field.
Save your rule.
ShipperHQ will now set UPS Ground to Free if the order has over 3 items.
Source: http://docs.shipperhq.com/how-to-set-up-free-shipping-for-orders-with-more-than-x-amount-of-items/
So I am rather new to sitecore, and it's a topic that wasn't covered during my training. My questions is just to help point me to the correct term, or documentation on a method to do the following.
I have a definition item, with a ton of field groups, what I want to do is something like:
if Value of Field X is "yes" then collapse/hide Field X or Field Group X.
Does that make sense? Is it a validation rule? or some other kind of rules, is it a workflow I need to attach? Do you place it on just the field I want to hide, or the field that triggers the action?
I appreciate any guidance.
There is nothing out-of-the-box in Sitecore to achieve what you want but there is no reason you cannot create a composite custom field type to do this. The following articles will help you achieve this:
Creating a custom Sitecore Field
Getting to Know Sitecore: Custom Fields, Part 1
Create a new control, inheriting either from Droplist (if the comparison of the value is to be text based) or Droplink (for comparison of ID). You could add a parameter in the Source field of the control to specify what the values that trigger the hide should be.
The underlying control in the Content Editor is just a standard HTML select element. Add onchange events to the control and add your Javascript handler to hide the other controls. Since I could not find a way of adding additional custom css classes to the Sitecore controls, it would be best/easiest to hide all other controls in the same collapsible group after you control. This would mean you would need to group your controls better (or logically at least).
The Javascript will be something like this (the Content Editor uses the Prototype JS framework):
if ($(this).getValue() == 'no') {
// find the parent container of this control and then hide all the next siblings in the same group
$(this).up('.scEditorFieldMarker').nextSiblings('.scEditorFieldMarker').invoke('hide');
}
You can test this by running the above in the console, change out the keyword this with the id of your field, e.g. $('FIELD2292054').
What I am not sure about is how to trigger the hide on initial load, i.e. when someone returns to an existing item, it may be possible by adding to one of the pipelines, but would be better using a JS solution if possible. I'll have a think about this and get a proper code sample up over the next few days.
EDIT: You can add an event handler to sc:contenteditorupdated to handle the content editor being rel-oaded.
document.observe("sc:contenteditorupdated", myFunction);
I wrote up a blog post and put the code on GitHub if you are interested.
Not sure if you have come across Andy Uzick's this blog post.
He wisely talks about hiding fields in the Content Editor and has also created a Sitecore Module called Hide Field Template Extension which is hosted on the Sitecore Marketplace with the full source code to extend.
After reading through and trying the extension, I do feel that it will not completely resolve your issue (how you have described it in the question).
But it will give you:
A mid-term solution to hide a few unnecessary field that some content editors would not like to view.
Fields that are only required by administrators for admin purpose - to de-clutter these fields could be hidden.
Just one thing to bear in mind that it mentions in the requirements Sitecore 6.5 & 6.6. I have not tested it in Sitecore 7. If you are using Sitecore 7, which I think you are, one could modify the source code and make it work for Sitecore 7.
Have a look and share your findings.
Happy Sitecoring!
I am building a site where users can make changes to their publicaly displayed profile. However I need all changes to be approved by an admin before going live. Until the changes are approved their old profile will be displayed. In the admin there should be a list of profiles awaiting approval. It is preferable, but not required, to keep a history of versions.
I have looked at django-reversion, but don't think that will handle showing an old version while keeping a new one under-approval.
I'm looking for ways to achieve this with django...
Two from-the-hip ideas. How about...
Use reversion and add logic which auto-marks a profile as 'unapproved' on save() if the save is not performed by an administrator, then add a custom accessor to your code that gets the latest approved profile from the reversion archive.
Or, if reversion won't play nicely, have a 'current profile' and 'pending profile' for each user and update the FKs when the profile is approved...
This apps do exactly what you need
http://github.com/dominno/django-moderation
I've had some problems using django-moderation from dominno, which are:
Using a unique model for tracking changes in several others, with a GenericForeignKey reduces the amount of tables needed to monitor things, but it's a pain to manage. And I don't trush GenericForeignKeys for this type of task.
Deserialization of sandboxed values would invariably fail if I changed one field's name in the model. (for example, if I migrated a field change of name after monitoring it in moderation). It should at least be able to recover non bogus field values.
So I made my own app, which tackles the problems mentioned above.
It should give you what you're looking for.
https://github.com/artscoop/django-approval
It has auto approval mechanism, field selection (you can always ignore some fields, and put others to validation) and default values (for example, automatically set an object to hidden when it's created, so that it can be moderated without being visible in the first place)