Magento multisite - bulk enable and set visibility differently per site - php

We have a multi-store magento setup, and we have several stores under the main site. We need to both enable and set search visibility for several hundred products, but we don't want those products to just show in every store, in fact, we only want them to show in one store. I have tried updating the Magento database, only to find out that not every store has a set of attributes to update, which would require some fancy SQL to perform. I have also tried creating an Excel XML import, which did not work. The import file looks like this (I tried it 2 ways):
sku visibility status _store
112001 4 1 otherstore
11924-01 4 1 otherstore
sku visibility status _store
112001 4 1 otherstore
112001 1 2 admin
11924-01 4 1 otherstore
11924-01 1 2 admin
Both ways appeared to just reset the status completely, as in nothing in the status field. I am a little wary of doing this via PHP since I am not well versed in Magento and have heard un-great things about mucking about in the core files, but at this point if it will work I'll do anything. I can't help but think that someone has done this before, via plugin on SQL or PHP, so any help here is appreciated.

Backup your database. Do a product export of the products this applies to. Edit the csv file to show the correct store for all of those products. In magento delete all of the products this applies to. Now import the csv that you previously exported and edited.

I found, and sucessfully used, Magmi. Was incredibly fast, and seemed to do the job well. The documentation isn't great, but it's usable.

Related

Woocommerce - import products from csv file

I need to import more than 100 products from an CSV file but some of the products already exists in the webshop. I will be using the core importer tool that comes with Woocommerce.
When importing the file I need to update each already existing product by matching the Name of the product. (I know there is an option for matching the SKU or ID but I need to update the product if the name already exists)
Thanks in advance!
This is a pretty common scenario. Of course, the core wp imported plugin will work with this. But it will create new entries regardless of which once you already have. You might have imported content before and noticed that there are duplicate posts, this is something I think you can't avoid with the default importer.
Now to help you with this, there are other solutions. WP import all is one of my favourites. The reason, it lets you map the entries from your CSV to WP. You decide entries from which column go to which field.
Here is a free version of the plugin: https://wordpress.org/plugins/woocommerce-xml-csv-product-import/
This does not work with WooCommerce though, you will need a premium plugin for this: http://www.wpallimport.com/woocommerce-product-import/
Another product I can think of is the one built by the WooCommerce folks itself:
https://docs.woocommerce.com/documentation/plugins/woocommerce/woocommerce-extensions/product-csv-import-suite/
I have not used this myself, but have heard good words about it.
PS: If the data from the previous posts is also there on the CSV, you can delete the previous posts and import them from the CSV, that way you won't have to worry about the duplicated, or the check the names. You can try this on a local install. and then export them with all the updated data, and import it again to the production site.
I hope you find this helpful.

Syncing up Woocommerce orders between a live site and staging site

I've been working on some developmental tweaks and theme updates to a client's website on a staging version. The site has a live ecommerce component, so over the few months that I've worked on it, there have been a whole bunch of orders which are on the live site, but not the staging site.
Since Woocommerce (for some strange reason) keeps orders in the same table as its posts, products, pages etc., many of the order ids have already been "used up" in the staging site, so when I try to import them (using a tool like https://wordpress.org/plugins/order-import-export-for-woocommerce/ ) they desync and the order numbers are wrong. There are a few options here; I could try to divorce the visible order number from the post id #, but this is a bit wonky. I've tried some solutions, but these tend not to work with the import plugins I've used. Alternatively, I could always dig into the mysql tables, but this isn't something I want to do everytime I push from staging to live.
Is anyone willing to share a solution, plugin recco or best practice for dealing with this? Thanks!
You cannot keep the orderID for new import , as WP treating everything as post. You can add it as extra meta with order. It will update if the order is existing in the Database. Also you can rise a support ticket here for help
You can also get a plugin that can manage order extra meta from here

Imported products not visible in OpenCart admin panel?

Benn struggling with this issue for some time now. I have used a mod for importing a CSV file with my products to my OpenCart installation. The mod is called CSV import Pro
Then products are visible on the front end an I can see them in the db table as well. Only problem I have is that they are not visible in my admin panel which is pretty strange.
Has anybody encountered this problem before? The company that I purchased the mod from are not the quickest when coming to supporting the mod.
All ideas, tips and resources are welcome.
I have been struggling with this issue for a long time. Using Import/Export Tool with multiple languages. Basically I was importing just one of the languages, it worked fine on the front end and I was able to see all products but I could only see two products at the back-end. My back-end language was English and my Front End - Bulgarian. It picked up the Bulgarian but unless your back-end is also set to the same language you will experience problems. Other option is just populate other language columns as well.
I had the same issue, after looking for some hours I found the "guilty" table ,
it's the
produt_to_store
table
set your product_id to the default store id (0) and voila !
INSERT INTO `product_to_store` (`product_id`, `store_id`) VALUES ('58366', '0');
I saw something similar to this a while back and it turned out that the start date and end date values were missing for the products for their availability. Obviously I can't guarantee that this is the issue, but I would recommend you check that each and every value is being set for the products. I've not used CSV import Pro personally but I believe it's pretty popular and is likely due to missing data that it's not showing properly
I was using another mod to extract and import from a Zencart database to Opencart. All customers were imported but did not show up in Admin, although viewable in the db table. Turned out that the customer_group_id was 8 (presumably in Zencart) and the necessary id number in Opencart is 1. Updated the customer_group_id column to show 1 instead of 8 and all the records became visible in Admin. I found this out by creating new customers records and then comparing them to imported ones to see any differences.

creating a site which needs to communicate with magento database

I am currently working on (a part of) a site where people buy an item from a magento based e-commerce website. However, to use that item, they need to go to another website. Basically that "other" website is what I am working on (and doing it via codeigniter)
I dont know much about magento. the only information my website needs from the magento website is some information regarding products (id, name and status). This information will be linked to other tables, i.e the product ID may be a foreign key in a table in my database. I did a little research and was able to figure out how data is stored in the magento database.
Both websites will be on same server.
Now I have two options which I could think of to get products from the magento website into my website,
first is that I create insert,update and delete triggers for the required tables in the magento website so that when a product is added, modified or deleted, it first tries to do the same on my database, and if successful, continues to do it in the magento database.
second option is that I simply merge the two databases of my website and magento website creating a direct relation link between the tables.
Like I previously stated, I dont know much about magento. So i wanted to know which was the safer, better approach or if there was an approach I diddnt think of.
Any help would be appreciated. Thanks.
further clarification of task:
Basically there is a magento website (lets call it "WEBSITE A") which sells "products". When a person buys a "product", they are basically given a "code" for that product. To use this "code", they have to go to another website which I am building using codeigniter (lets call this "WEBSITE B").
Now as you can guess, the code needs to be used in WEBSITE B, and once used it unlocks stuff for the user based upon the product to which the code belonged.
As you can guess, this will create a lot of links between product and other stuff.
product although created in WEBSITE A , is used in WEBSITE B.
Your first option: Never duplicate data unless you can help it. Why couldn't you query the Magento database instead, since it's on the same server?
Your second option: Never merge databases that aren't related.
Both options are basically anti-patterns. What you should do is query the Magento database directly, or if you want to use the Magento helper functions, include Magento and use its API directly:
<?php
require_once 'path/to/Mage.php';
// Use Magento APIs
?>

What database tables do I have to edit to get a product to show up in a Ubercart store?

I am trying to create a ubercart module which automatically updates product listings. I thought that I just needed to edit these tables
uc_products
uc_product_classes
uc_product_features
The problem is no matter what I put in these tables, no products are listed in the Ubercart store.
What other tables do I need to update to do this? Or what steps do I need to take to get this module to add and/or update the products viewed in the web page? I would love it if someone could show me how to do it without resorting to SQL.
In Drupal 6, products are referenced to nodes. You might look at the feeds or node import module for automated product listing updates/creation.
It seems there are a lot more tables to alter before it will show in the Ubercart store. However I don't think you need uc_product_features.
These tables are
node
node_type
node_revisions
uc_products
uc_product_classes
They must belong to a class defined in uc_product_classes and node_type.
node_revisions is what is displayed in the store front and node.staus must be set to 1. It is the publish variable.
Also
node.nid must equal mode_revision.nid
and
node_revsion.vid must equal mode.vid
otherwise in the store front listing for that item will be
"n/a"
And while it didn't tell me all I needed, I found the following site to be informative.
http://tiger-fish.com/blog/drupal-6-turning-existing-node-type-ubercart-product

Categories