0

mod_virtuemart_product モジュール内にライブ検索用のモジュールをインストールしようとしました。mod_virtuemart_product.xml を次のように変更しました。

古いコード

<install type="module" version="1.5.0">
    <name>mod_virtuemart_product</name>
    <creationDate>March 17 2013</creationDate>
    <author>The VirtueMart Development Team</author>
    <authorUrl>http://www.virtuemart.net</authorUrl>
    <copyright>Copyright (C) 2004-2012 Virtuemart Team. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <version>2.0.20b</version>
    <description>MOD_VIRTUEMART_PRODUCT_DESC</description>
    <files>
    <filename module="mod_virtuemart_product">mod_virtuemart_product.php</filename>
    <filename>index.html</filename>
    <filename>helper.php</filename>
    <filename>tmpl/default.php</filename>
    <filename>tmpl/default2.php</filename>
    <filename>tmpl/default3.php</filename>
    <filename>tmpl/index.html</filename>
    </files>
    <params addpath="/administrator/components/com_virtuemart/elements">
    <param  name="layout" type="filelist" label="MOD_VIRTUEMART_PRODUCT_LAYOUT"
                description="MOD_VIRTUEMART_PRODUCT_LAYOUT_DESC"
                directory="/modules/mod_virtuemart_product/tmpl"
                default="default" hide_default="1" hide_none="1"
                stripext="1" filter="\.php$" exclude="^_" />
.
.
.

新しいコード

<extension type="module" version="2.5" method="upgrade">
    <name>mod_virtuemart_product</name>
    <creationDate>March 17 2013</creationDate>
    <author>The VirtueMart Development Team</author>
    <authorUrl>http://www.virtuemart.net</authorUrl>
    <copyright>Copyright (C) 2004-2012 Virtuemart Team. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <version>2.0.20b</version>
    <description>MOD_VIRTUEMART_PRODUCT_DESC</description>
    <files>
    <filename module="mod_virtuemart_product">mod_virtuemart_product.php</filename>
    <filename>index.html</filename>
    <filename>helper.php</filename>
    <filename>tmpl/default.php</filename>
    <filename>tmpl/index.html</filename>
    <filename>tmpl/quicksearch.php</filename>

    </files>
    <params addpath="/administrator/components/com_virtuemart/elements">
.
.
.

そして、mod_virtuemart_product/tmpl フォルダーに新しい php ファイルと javascript ファイルを次のように作成しました。

そして、mod_virtuemart_product/tmpl フォルダーに新しい php ファイルと javascript ファイルを次のように作成しました。

mod_virtuemart_product/tmpl/quicksearch.php
mod_virtuemart_product/tmpl/default.php - used by virtuemart (I just add to this code 
my search input code)
mod_virtuemart_product/tmpl/head.php
mod_virtuemart_product/tmpl/config.php
mod_virtuemart_product/tmpl/js/javascript.js
mod_virtuemart_product/tmpl/css/css.css

すべてがつながっています。私のコードは機能しますが、このコードを quicksearch.php ファイルに追加したい場合: echo mod_virtuemart_product::addtocart ($product);

それは私にこのエラーを書いています:

「致命的なエラー: 34 行目の /www/t/r/u46223/public_html/modules/mod_virtuemart_product/tmpl/quicksearch.php にクラス 'mod_virtuemart_product' が見つかりません」

アドバイスをお願いします、何が悪いのですか?

ありがとうございました。


これが mod_virtuemart_product.php ファイルです。そして、この関数「mod_virtuemart_product::addtocart ($product)」を、modules/mod_virtuemart_product/tmpl フォルダーにあるファイル quicksearch.php に追加したいと考えています。ありがとう。

<?php
defined('_JEXEC') or die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
/*
* featured/Latest/Topten/Random Products Module
*
* @version $Id: mod_virtuemart_product.php 2789 2011-02-28 12:41:01Z oscar $
* @package VirtueMart
* @subpackage modules
*
*   @copyright (C) 2010 - Patrick Kohl
*
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* VirtueMart is Free Software.
* VirtueMart comes with absolute no warranty.
*
* www.virtuemart.net
*/


if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php');

VmConfig::loadConfig();
VmConfig::loadJLang('mod_virtuemart_product', true);

// Setting
$max_items =        $params->get( 'max_items', 2 ); //maximum number of items to display
$layout = $params->get('layout','default');
$category_id =      $params->get( 'virtuemart_category_id', null ); // Display products from this category only
$filter_category =  (bool)$params->get( 'filter_category', 0 ); // Filter the category
$display_style =    $params->get( 'display_style', "div" ); // Display Style
$products_per_row = $params->get( 'products_per_row', 4 ); // Display X products per Row
$show_price =       (bool)$params->get( 'show_price', 1 ); // Display the Product Price?
$show_addtocart =   (bool)$params->get( 'show_addtocart', 1 ); // Display the "Add-to-Cart" Link?
$headerText =       $params->get( 'headerText', '' ); // Display a Header Text
$footerText =       $params->get( 'footerText', ''); // Display a footerText
$Product_group =    $params->get( 'product_group', 'featured'); // Display a footerText

$mainframe = Jfactory::getApplication();
$virtuemart_currency_id = $mainframe->getUserStateFromRequest( "virtuemart_currency_id", 'virtuemart_currency_id',JRequest::getInt('virtuemart_currency_id',0) );


$key = 'products'.$category_id.'.'.$max_items.'.'.$filter_category.'.'.$display_style.'.'.$products_per_row.'.'.$show_price.'.'.$show_addtocart.'.'.$Product_group.'.'.$virtuemart_currency_id;

$cache  = JFactory::getCache('mod_virtuemart_product', 'output');
if (!($output = $cache->get($key))) {
    ob_start();
    // Try to load the data from cache.


    /* Load  VM fonction */
    if (!class_exists( 'mod_virtuemart_product' )) require('helper.php');

    $vendorId = JRequest::getInt('vendorid', 1);

    if ($filter_category ) $filter_category = TRUE;

    $productModel = VmModel::getModel('Product');

    $products = $productModel->getProductListing($Product_group, $max_items, $show_price, true, false,$filter_category, $category_id);
    $productModel->addImages($products);

    $totalProd =        count( $products);
    if(empty($products)) return false;
    $currency = CurrencyDisplay::getInstance( );

    if ($show_addtocart) {
        vmJsApi::jPrice();
        vmJsApi::cssSite();
    }
    /* Load tmpl default */
require(JModuleHelper::getLayoutPath('mod_virtuemart_product',$layout));
    $output = ob_get_clean();
    $cache->store($output, $key);
}
echo $output;
?>
4

1 に答える 1

0

Joomla 1.6 以降のマニフェスト標準を使用してみてください。使用するのではなく、<params>次のように構成する必要があります。

<config>
    <fields name="params">
        <fieldset name="basic" addfieldpath="/administrator/components/com_virtuemart/elements">

            <field name="layout" type="filelist" label="MOD_VIRTUEMART_PRODUCT_LAYOUT"
            description="MOD_VIRTUEMART_PRODUCT_LAYOUT_DESC"
            directory="/modules/mod_virtuemart_product/tmpl"
            default="default" hide_default="1" hide_none="1"
            stripext="1" filter="\.php$" exclude="^_" />

            //more fields go here

        </fieldset>
    </fields>
</config>

正しくインクルードされない可能性があるため、次のように helper.php ファイルをインクルードしてみてください。

require_once( dirname(__FILE__).'/helper.php' ); 

アップデート:

わお!quicksearch.phpは完全に間違っています

  1. 手動でconfiguration.phpを含めようとしていますが、これは間違っており、セキュリティ上の脅威をもたらす可能性もあります。
  2. Joomla 2.5コーディング標準を使用するだけでなく、推奨されておら、セキュリティ上の脅威をもたらすmysql_*を使用して、データベースからデータを取得しています。
  3. 繰り返しますが$_POST、これは Joomla 2.5 コーディング標準を使用していません。

このモジュールを Joomla 拡張ディレクトリに置くことを計画していないことを願っています。あなたや他の人々のサイトがハッキングされる道を進んでいるからです。

Joomla Documentationをよく読んでください。

于 2013-08-27T17:01:49.923 に答える