Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

Как вставить текст в карточку товара News Show Pro GK5

Как вставить текст в карточку товара News Show Pro GK5 2 мес. 1 нед. назад #8460

  • kremisa
  • kremisa аватар
  • Не в сети
  • Прохожий
  • Сообщений: 2
  • Репутация: 0
Доброго дня, господа форумчане!

Помогите, пожалуйста, с проблемой отображения текста из описания карточки товара.
Использую Joomla 3.7.2 и VirtueMart 3.2.2.

Для отображения товара на главной странице сайта использую модуль News Show Pro GK5 v. 1.9.3.8.
Выглядит товар на сайте следующим образом



У меня стоит задача отобразить вместо 3-й строчкой с ценой (0,00Р.) краткий текст из описания карточки товара ‘product_desc’.

За отображения данной строки отвечает скрипт
modules/mod_news_pro_gk5/tmpl/portal_modes/product_gallery_2/controller.php

следующего содержания
<?php
 
/**
* Product Gallery II
* @package News Show Pro GK5
* @Copyright (C) 2009-2013 Gavick.com
* @ All rights reserved
* @ Joomla! is Free Software
* @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @version $Revision: GK5 1.3.3 $
**/
 
// access restriction
defined('_JEXEC') or die('Restricted access');
 
class NSP_GK5_Product_Gallery_2 {
// necessary class fields
private $parent;
private $mode;
static $instances = 0;
// constructor
function __construct($parent) {
$this->parent = $parent;
NSP_GK5_Product_Gallery_2::$instances += 1;
// detect the supported Data Sources
if(stripos($this->parent->config['data_source'], 'com_content_')!== FALSE) {
$this->mode = 'com_content';
} else if(stripos($this->parent->config['data_source'], 'k2_')!== FALSE) { 
$this->mode = 'com_k2';
} else if(stripos($this->parent->config['data_source'], 'com_virtuemart_')!== TRUE) {
$this->mode = 'com_virtuemart';
} else {
$this->mode = false;
}
//
if($this->parent->config['portal_mode_product_gallery_2_button'] == 'cart' && NSP_GK5_Product_Gallery_2::$instances == 1) {
$closeimage = JURI::root(TRUE).'/components/com_virtuemart/assets/images/fancybox/fancy_close.png';
$vmLangVar = '';
 
if (VmConfig::get ('vmlang_js', 1))  {
$vmLangVar .= "vmLang = '&lang=" . substr (VmConfig::$vmlang, 0, 2). "' ;\n";
} else {
$vmLangVar .= 'vmLang = "";' . "\n";
}
 
$doc = JFactory::getDocument();
$doc->addScriptDeclaration(
$vmLangVar . '
vmSiteurl = \''. JURI::root().'\' ;
VirtueMart.addtocart_popup = \''.VmConfig::get('addtocart_popup',1).'\' ; 
vmCartText = \''.addslashes(vmText::_('COM_VIRTUEMART_CART_PRODUCT_ADDED')).'\' ;
vmCartError = \''.addslashes(vmText::_('COM_VIRTUEMART_MINICART_ERROR_JS')).'\' ;
loadingImage = \''.JURI::root(TRUE).'/components/com_virtuemart/assets/images/facebox/loading.gif\' ;
closeImage = \''.$closeimage.'\' ; 
usefancy = false;
jQuery(document).ready(function() { VirtueMart.product(jQuery("form.product")); });'
);
}
}
// static function which returns amount of articles to render - VERY IMPORTANT!!
static function amount_of_articles($parent) {
return $parent->config['portal_mode_product_gallery_2_rows'] * $parent->config['portal_mode_product_gallery_2_cols'];
}
// output generator
function output() {
// amount
$amount = 0;
// count
for($i = 0; $i < count($this->parent->content); $i++) {
if($this->get_image($i)) {
$amount++;
}
}
// main wrapper
echo '<div class="gkNspPM gkNspPM-ProductGallery2" data-cols="'.$this->parent->config['portal_mode_product_gallery_2_cols'].'">';
 
if(trim($this->parent->config['nsp_pre_text'])) {
echo $this->parent->config['nsp_pre_text'];
}
 
// render images
for($i = 0; $i < count($this->parent->content); $i++) {
if($this->get_image($i)) {
echo '<div class="gkImage">';
echo '<a><img src="'.strip_tags($this->get_image($i)).'" alt="'.strip_tags($this->parent->content[$i]->title).'" /></a>';
echo '<h4><a>' . $this->parent->content[$i]['title'] . '</a></h4>';
 
$store_output = $this->get_store($this->parent->config, $this->parent->content[$i]['id']);
echo '<div class="gkPrice">' . $store_output['price'] . '</div>';
 
if($this->parent->config['portal_mode_product_gallery_2_button'] == 'cart') {
echo '<div class="gkAddToCart">' . $store_output['cart'] . '</div>';
} else {
echo '<div class="gkAddToCart">';
echo '<a href="' . $this->get_link($i). '" class="readon">' . JText::_('MOD_NEWS_PRO_GK5_PORTAL_MODE_PRODUCT_GALLERY_2_READON_TEXT'). '</a>';
echo '</div>';
}
if($this->parent->content[$i]['featured'] && $this->parent->config['vm_show_featured_badge']) {
echo '<sup class="nspBadge">'.JText::_('MOD_NEWS_PRO_GK5_NSP_FEATURED').'</sup>';
}
echo '</div>';
}
}
 
if(trim($this->parent->config['nsp_post_text'])) {
echo $this->parent->config['nsp_post_text'];
}
// closing main wrapper
echo '</div>';
}
// function used to retrieve the item URL
function get_link($num) {
if($this->mode == 'com_content') {
// load necessary com_content View class
if(!class_exists('NSP_GK5_com_content_View')) {
require_once(JModuleHelper::getLayoutPath('mod_news_pro_gk5', 'com_content/view'));
}
return NSP_GK5_com_content_View::itemLink($this->parent->content[$num], $this->parent->config);
} else if($this->mode == 'com_k2') {
// load necessary k2 View class
if(!class_exists('NSP_GK5_com_k2_View')) {
require_once(JModuleHelper::getLayoutPath('mod_news_pro_gk5', 'com_k2/view'));
}
return NSP_GK5_com_k2_View::itemLink($this->parent->content[$num], $this->parent->config);
} else if($this->mode == 'com_virtuemart') {
$itemid = $this->parent->config['vm_itemid'];
$link = 'index.php?option=com_virtuemart&amp;view=productdetails&amp;virtuemart_product_id='.$this->parent->content[$num]['id'].'&amp;virtuemart_category_id='.$this->parent->content[$num]['cid'].'&amp;Itemid='.$itemid;
 
return $link; 
} else {
return false;
}
}
// image generator
function get_image($num) {
// used variables
$url = false;
$output = '';
// select the proper image function
if($this->mode == 'com_content') {
// load necessary com_content View class
if(!class_exists('NSP_GK5_com_content_View')) {
require_once(JModuleHelper::getLayoutPath('mod_news_pro_gk5', 'com_content/view'));
}
// generate the com_content image URL only
$url = NSP_GK5_com_content_View::image($this->parent->config, $this->parent->content[$num], true, true);
} else if($this->mode == 'com_k2') {
// load necessary k2 View class
if(!class_exists('NSP_GK5_com_k2_View')) {
require_once(JModuleHelper::getLayoutPath('mod_news_pro_gk5', 'com_k2/view'));
}
// generate the K2 image URL only
$url = NSP_GK5_com_k2_View::image($this->parent->config, $this->parent->content[$num], true, true);
} else if($this->mode == 'com_virtuemart') {
// load necessary com_content View class
if(!class_exists('NSP_GK5_com_virtuemart_View')) {
require_once(JModuleHelper::getLayoutPath('mod_news_pro_gk5', 'com_virtuemart/view'));
}
// generate the com_content image URL only
$url = NSP_GK5_com_virtuemart_View::image($this->parent->config, $this->parent->content[$num], true, true);
}
// check if the URL exists
if($url === FALSE) {
return false;
} else {
// if URL isn't blank - return it!
if($url != '') {
return $url;
} else {
return false;
}
}
}
// store generator
// function used to show the store details
function get_store($config, $id) {
if($this->mode != 'com_virtuemart') {
return array(
"price" => '',
"cart" => ''
);
} else {
// if the VM is available
        if (!class_exists( 'VmConfig' )) {
         require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'config.php');
        }
        VmConfig::loadConfig();
        // Load the language file of com_virtuemart.
        JFactory::getLanguage()->load('com_virtuemart');
        // load necessary classes
        if (!class_exists( 'calculationHelper' )) {
         require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'calculationh.php');
        }
        if (!class_exists( 'CurrencyDisplay' )) {
         require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'currencydisplay.php');
        }
        if (!class_exists( 'VirtueMartModelVendor' )) {
         require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'models'.DS.'vendor.php');
        }
        if (!class_exists( 'VmImage' )) {
         require(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart'.DS.'helpers'.DS.'image.php');
        }
        if (!class_exists( 'shopFunctionsF' )) {
         require(JPATH_SITE.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'shopfunctionsf.php');
        }
        if (!class_exists( 'calculationHelper' )) {
         require(JPATH_COMPONENT_SITE.DS.'helpers'.DS.'cart.php');
        }
        if (!class_exists( 'VirtueMartModelProduct' )){
           JLoader::import( 'product', JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'models' );
        }
        // load the base
        $productModel = new VirtueMartModelProduct();
    $product = $productModel->getProduct($id, 100, true, true, true);
    $currency = CurrencyDisplay::getInstance();
 
    $price = '<strong>'.$currency->createPriceDiv($config['vm_show_price_type'], '', $product->prices, true).'</strong>';
 
        if($this->parent->config['portal_mode_product_gallery_2_button'] == 'cart') {
            vmJsApi::jPrice();
            vmJsApi::writeJS();
        }
 
        $news_price = '<div class="PricebasePriceWithTax">';
        //
        if($config['vm_show_price_type'] != 'none') {
            if($config['vm_display_type'] == 'text_price') {
             $news_price .=  '<span class="PricebasePriceWithTax">'.JText::_('MOD_NEWS_PRO_GK5_PRODUCT_PRICE').' '.$price.'</span>';
            } else {
             $news_price .= '<span class="PricebasePriceWithTax">'.$price.'</span>';
            }
        } 
        $news_price .= '</div>';
        // display discount
        if($config['vm_show_discount_amount'] == 1) {
            $disc_amount = $currency->priceDisplay($product->prices['product_price'], $currency->getId());
            $news_price.= '<small class="PricetaxAmount">'.$disc_amount.'</small>';
        }
 
// display tax
        if($config['vm_show_tax'] == 1) {
           $taxAmount = $currency->priceDisplay($product->prices['product_desc'], $currency->getId());
            $news_price.= '<small class="PricetaxAmount">'.$taxAmount.'</small>';  
        }
 
        // 'Add to cart' button
        $news_cart = '';
        if($config['portal_mode_product_gallery_2_button'] == 'cart') {
            $code = '<div class="addtocart-area">';
            $code .= '<form method="post" class="product" action="index.php">';
            $code .= '<div class="addtocart-bar">';
            $code .= '<span class="quantity-box" style="display: none"><input type="text" class="quantity-input" name="quantity[]" value="1" /></span>';
            $addtoCartButton = '';
 
if($product->addToCartButton){
$addtoCartButton = $product->addToCartButton;
} else {
$addtoCartButton = shopFunctionsF::getAddToCartButton($product->orderable);
}
 
            $code .= $addtoCartButton;
 
            $code .= '</div>
                    <input type="hidden" class="pname" value="'.$product->product_name.'"/>
                    <input type="hidden" name="option" value="com_virtuemart" />
                    <input type="hidden" name="view" value="cart" />
                    <noscript><input type="hidden" name="task" value="add" /></noscript>
                    <input type="hidden" name="virtuemart_product_id[]" value="'.$product->virtuemart_product_id.'" />
                    <input type="hidden" name="virtuemart_category_id[]" value="'.$product->virtuemart_category_id.'" />
                </form>';    
            $code .= '</div>'; 
            $news_cart .= $code;
} 
   // results
        return array(
     "price" => $news_price,
     "cart" => $news_cart
     );
}
}
}
 
// EOF

Более точно строка 240 следующий кусок кода
// display tax
        if($config['vm_show_tax'] == 1) {
           $taxAmount = $currency->priceDisplay($product->prices['product_desc'], $currency->getId());
            $news_price.= '<small class="PricetaxAmount">'.$taxAmount.'</small>';  
        }

В данном случае результата нет. При помощи 'product_desc' я обращаюсь к базе, что б получить данные, но данных нет. И вообще невозможно получить какие-либо данные из таблицы 'virtuemart_products’. А вот доступ к таблице данных ‘virtuemart_product_prices’ есть, поэтому я и получил цены 29,0 р и 67,0 р. из картинки при помощи аналогичных строк из кода 230 и 237.
Последнее редактирование: 2 мес. 1 нед. назад от kremisa.
Чтобы оставлять сообщения нужно зарегистрироваться.

Как вставить текст в карточку товара News Show Pro GK5 2 мес. 1 нед. назад #8463

  • Wedal
  • Wedal аватар
  • Не в сети
  • Администратор
  • Сообщений: 2552
  • Спасибо получено: 600
  • Репутация: 217
kremisa, неправильно написали код. Нужно вместо:
        if($config['vm_show_tax'] == 1) {
           $taxAmount = $currency->priceDisplay($product->prices['product_desc'], $currency->getId());
            $news_price.= '<small class="PricetaxAmount">'.$taxAmount.'</small>';  
        }
написать:
$news_price = $product->product_desc
Но это всё тоже полная ерунда. Нужно редактировать не контроллер, а макет отображения, где выводится непосредственно html и php-код.
Последнее редактирование: 2 мес. 1 нед. назад от Wedal.
Чтобы оставлять сообщения нужно зарегистрироваться.

Как вставить текст в карточку товара News Show Pro GK5 2 мес. 1 нед. назад #8465

  • kremisa
  • kremisa аватар
  • Не в сети
  • Прохожий
  • Сообщений: 2
  • Репутация: 0
Да, все заработало. Только стили осталось переделать.
Вот код.
			// display tax
	    	    $taxAmount = $product->product_desc;
	            $news_price.= '<small class="PricetaxAmount">'.$taxAmount.'</small>'; 

Спасибо, друзья!
Последнее редактирование: 2 мес. 1 нед. назад от kremisa.
Чтобы оставлять сообщения нужно зарегистрироваться.
Время создания страницы: 0.190 секунд

Вверх