How To - Display products on home page

本文提供了一系列用于在Magento商店首页展示产品的代码片段,包括显示新品、所有产品、特定类别的产品,以及如何更新布局XML文件以实现这些展示。特别关注了在Magento 1.4版本中更新布局的方法。

There are numerous ways to put products on your home page, and we’ll compile a list of code snippets you can use on your own store here. Some examples are outdated, they don’t work in magento 1.4.1 but solutions are provided at the bottom.

Index

New products

Go to “CMS - Manage Pages” and select “Home Page” from the list of pages.

Use this code snippet to show products labeled as “new” on your front page:

  1. {{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml"}}

(Note that you must have some new products in your catalogue for anything to show when you do this. In this context new doesn’t mean that you’ve recently added them; only products explicitly marked as new using ‘Set Product as New from Date’ and ‘Set Product as New to Date’ options in the ‘General’ product information page in the admin tool will be shown.)

All Products

Go to “CMS - Manage Pages” and select “Home Page” from the list of pages.

Use this code snippet to show all products in your catalog on your front page:

  1. {{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" template="catalog/product/list.phtml"}}

All Products from one Category

Go to “CMS - Manage Pages” and select “Home Page” from the list of pages.

Use this code snippet to show one category on your front page:

  1. {{block type="catalog/product_list" name="home.catalog.product.list" alias="products_homepage" category_id="4" template="catalog/product/list.phtml"}}

The category ID can be found when you go to “manage category” and then select the category you want. The ID is written in the header.

Examples are outdated, dosent work in magento 1.4.1

Layout Update XML for magento 1.4

Because in 1.4 version Layout update is different than in 1.3 version, you can use this example:

  1. <reference name="content">
  2.       <block type="catalog/product_list" name="featured" template="catalog/product/list.phtml">
  3.           <action method="setCategoryId"> <category_id>[category id here] </category_id> </action>
  4.       </block>
  5. </reference>

Note: source taken from BrightEyesDavid’s post

It’s possible to add the ‘Root category’ ID here to show all products (Is Anchor Yes required!)

New products - Layout Update XML for magento 1.4

To display new product / latest product, you can use this following XML code in layout xml file or layout display in backend. You can use also the widgets to display the products. The code below has been inspired by the widget.

diglin

  1. <reference name="content">
  2.       <block type="catalog/product_new" template="catalog/product/new.phtml">
  3.           <action method="setProductsCount"> <count>5 </count> </action>
  4.           <action method="addColumnCountLayoutDepend"> <layout>empty </layout> <count>6 </count> </action>
  5.           <action method="addColumnCountLayoutDepend"> <layout>one_column </layout> <count>5 </count> </action>
  6.           <action method="addColumnCountLayoutDepend"> <layout>two_columns_left </layout> <count>4 </count> </action>
  7.           <action method="addColumnCountLayoutDepend"> <layout>two_columns_right </layout> <count>4 </count> </action>
  8.           <action method="addColumnCountLayoutDepend"> <layout>three_columns </layout> <count>3 </count> </action>
  9.       </block>
  10. </reference>

New products with pagination - Layout Update XML for Magento 1.4.1

By default the Magento New.php and New.phtml block and template do not provide a way for you to display new products with pagination. The pagination and toolbar elements of Magento belong to the Mage_Catalog_Block_Product_List class. It is possible for one to overwrite the New.php file that Magento provides so that it extends the Mage_Catalog_Block_Product_List class and therefore has access to the pagination and toolbar. Found this article which shows how to do this. The steps are a bit long to re-post here, however. This works in Magento 1.4.1 - http://www.dnawebagency.com/displaying-new-products-in-magento-with-pagination

Creating a WooCommerce reseller plugin involves several steps. Below is a structured guide to help you build a basic reseller system. This guide assumes you have a working knowledge of WordPress/WooCommerce development, PHP, and MySQL. --- ### **1. Plugin Structure** Create a new folder in `wp-content/plugins/` (e.g., `reseller-plugin`), and add the following files: - `reseller-plugin.php` (Main plugin file) - `includes/` (Folder for helper functions) - `admin/` (Admin-facing code) - `public/` (Frontend-facing code) --- ### **2. Core Features** Your plugin should include: - **Reseller Registration/Management** - **Commission Calculation** - **Product Assignment to Resellers** - **Order Tracking** - **Dashboard for Resellers** - **Payment Handling** --- ### **3. Step-by-Step Implementation** #### **Step 1: Register a Reseller User Role** Add a custom user role (`reseller`) with specific capabilities. ```php // In reseller-plugin.php function register_reseller_role() { add_role( 'reseller', 'Reseller', array( 'read' => true, 'edit_posts' => false, 'delete_posts' => false, 'manage_woocommerce' => true, 'view_woocommerce_reports' => true, ) ); } register_activation_hook(__FILE__, 'register_reseller_role'); ``` --- #### **Step 2: Add Reseller Commission Settings** Allow resellers to set their commission rate (e.g., in their profile). ```php // Add commission field to user profile function reseller_commission_field($user) { if (in_array('reseller', $user->roles)) { ?> <h3>Reseller Settings</h3> <table class="form-table"> <tr> <th><label for="commission_rate">Commission Rate (%)</label></th> <td> <input type="number" name="commission_rate" id="commission_rate" value="<?php echo esc_attr(get_user_meta($user->ID, 'commission_rate', true)); ?>" class="regular-text" min="0" max="100" step="0.1"> </td> </tr> </table> <?php } } add_action('show_user_profile', 'reseller_commission_field'); add_action('edit_user_profile', 'reseller_commission_field'); // Save commission rate function save_reseller_commission_field($user_id) { if (current_user_can('edit_user', $user_id)) { update_user_meta($user_id, 'commission_rate', sanitize_text_field($_POST['commission_rate'])); } } add_action('personal_options_update', 'save_reseller_commission_field'); add_action('edit_user_profile_update', 'save_reseller_commission_field'); ``` --- #### **Step 3: Assign Products to Resellers** Add a meta box to WooCommerce products to link them to a reseller. ```php // Add reseller dropdown to product editor function reseller_product_meta_box() { add_meta_box( 'reseller_product_meta', 'Reseller Settings', 'reseller_product_meta_callback', 'product', 'side', 'default' ); } add_action('add_meta_boxes', 'reseller_product_meta_box'); function reseller_product_meta_callback($post) { $resellers = get_users(array('role' => 'reseller')); $selected_reseller = get_post_meta($post->ID, '_reseller_id', true); ?> <label for="reseller_id">Assign to Reseller:</label> <select name="reseller_id" id="reseller_id" class="widefat"> <option value="">None</option> <?php foreach ($resellers as $reseller) : ?> <option value="<?php echo $reseller->ID; ?>" <?php selected($selected_reseller, $reseller->ID); ?>> <?php echo $reseller->display_name; ?> </option> <?php endforeach; ?> </select> <?php } // Save reseller assignment function save_reseller_product_meta($post_id) { if (isset($_POST['reseller_id'])) { update_post_meta($post_id, '_reseller_id', absint($_POST['reseller_id'])); } } add_action('save_post_product', 'save_reseller_product_meta'); ``` --- #### **Step 4: Calculate Commission on Order Completion** Hook into WooCommerce order completion to calculate commissions. ```php function calculate_reseller_commission($order_id) { $order = wc_get_order($order_id); foreach ($order->get_items() as $item) { $product_id = $item->get_product_id(); $reseller_id = get_post_meta($product_id, '_reseller_id', true); if ($reseller_id) { $commission_rate = get_user_meta($reseller_id, 'commission_rate', true); $total = $item->get_total(); $commission = ($total * $commission_rate) / 100; // Store commission in a custom table or option update_user_meta($reseller_id, 'pending_commission', $commission, true); } } } add_action('woocommerce_order_status_completed', 'calculate_reseller_commission'); ``` --- #### **Step 5: Create a Reseller Dashboard** Add a shortcode for resellers to view their earnings and products. ```php // Shortcode for reseller dashboard function reseller_dashboard_shortcode() { if (!current_user_can('reseller')) return; $reseller_id = get_current_user_id(); $commission = get_user_meta($reseller_id, 'pending_commission', true); $products = get_posts(array( 'post_type' => 'product', 'meta_key' => '_reseller_id', 'meta_value' => $reseller_id, )); ob_start(); ?> <div class="reseller-dashboard"> <h2>Your Commission: $<?php echo $commission; ?></h2> <h3>Your Products</h3> <ul> <?php foreach ($products as $product) : ?> <li><?php echo $product->post_title; ?></li> <?php endforeach; ?> </ul> </div> <?php return ob_get_clean(); } add_shortcode('reseller_dashboard', 'reseller_dashboard_shortcode'); ``` --- #### **Step 6: Handle Payouts (Manual for Now)** Create an admin page to mark commissions as paid. ```php // Add admin menu for reseller payouts function reseller_payouts_menu() { add_submenu_page( 'users.php', 'Reseller Payouts', 'Payouts', 'manage_options', 'reseller-payouts', 'reseller_payouts_page' ); } add_action('admin_menu', 'reseller_payouts_menu'); function reseller_payouts_page() { // Logic to display and process payouts } ``` --- ### **4. Extend Functionality** - **Automated Payouts**: Integrate PayPal/Stripe API for automatic payments. - **Reports**: Use WooCommerce's `WC_Admin_Report` class for sales reports. - **Multi-Level Resellers**: Add support for tiers (e.g., resellers can have sub-resellers). --- ### **5. Testing & Security** - Test with different user roles and product types. - Sanitize all inputs and use nonces for forms. - Use WordPress transients for caching commission data. --- ### **6. Documentation** - Provide setup instructions for users. - Explain how resellers can manage their products and track earnings. --- ### **Final Notes** This is a basic framework. For a production plugin, you’ll need to: - Add error handling. - Optimize database queries. - Follow WordPress coding standards. - Consider using namespaces and autoloading. Would you like me to elaborate on any specific part (e.g., automated payouts, reporting, or security)? 中文翻译原文输出
07-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值