Помогите с mysql запросом для VM

Тема в разделе "PHP", создана пользователем angel_sia, 15 май 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. angel_sia

    angel_sia

    Регистр.:
    7 окт 2012
    Сообщения:
    151
    Симпатии:
    70
    Добрый день товарищи.
    Бьюсь с одой проблемой больше месяца не могу найти даже примерного решения моей проблемы.
    Мне надо настроить вывод дополнительных параметров в virtuemart в модуле Related Products.
    Нашел как добавить вывод дополнительно цены только.
    Вот кусок по выводу цены.

    Хотелось бы чтоб у меня выводилось также
    product_sku + product_name + product_s_desc + manufacturer + product_price

    П.с. product_name выводится по умолчанию.
    П.с.с. На всякий случай весь кусок кода



    update:
    На всякий случай добавлю что где находится в базе.



    Буду очень признателен за помощь.

    UPD: Вопрос решен Спасибо!
     
    Последнее редактирование модератором: 21 май 2014
  2. mfilin

    mfilin Писатель

    Регистр.:
    17 май 2014
    Сообщения:
    7
    Симпатии:
    4
    за основу взять след. запрос
    Код:
    SELECT
       prices.`product_price`,
       products.`product_sku`,
       products_ru.`product_name`,
       products_ru.`product_s_desc`,
       manufacts_ru.`mf_name`
    FROM j25_virtuemart_product_prices prices
      LEFT JOIN j25_virtuemart_products products
      ON products.virtuemart_product_id = prices.virtuemart_product_id
      LEFT JOIN j25_virtuemart_products_ru_ru products_ru
      ON products_ru.virtuemart_product_id = prices.virtuemart_product_id
      LEFT JOIN j25_virtuemart_product_manufacturers pm
      ON pm.virtuemart_product_id = products_ru.virtuemart_product_id
      LEFT JOIN j25_virtuemart_manufacturers manufacts
            ON manufacts.virtuemart_manufacturer_id = pm.virtuemart_manufacturer_id
      LEFT JOIN j25_virtuemart_manufacturers_ru_ru manufacts_ru
            ON manufacts.virtuemart_manufacturer_id = manufacts_ru.virtuemart_manufacturer_id
    WHERE prices.`virtuemart_product_id`= {ТВОЙ ИД}
    
    проверить его либо в phpmyadmin, либо в heidisql

    в вывод вставить...
    Код:
    defined ( '_JEXEC' ) or die ( 'Restricted access' );
    ?>
    <div class="product-related-products">
    <h4><?php echo JText::_('COM_VIRTUEMART_RELATED_PRODUCTS'); ?></h4>
    
    <?php
    foreach ($this->product->customfieldsRelatedProducts as $field) {
    $db = JFactory::getDBO();
    $qt='
    SELECT
       prices.`product_price`,
       products.`product_sku`,
       products_ru.`product_name`,
       products_ru.`product_s_desc`,
       manufacts_ru.`mf_name`
    FROM #_virtuemart_product_prices prices
      LEFT JOIN #_virtuemart_products products
      ON products.virtuemart_product_id = prices.virtuemart_product_id
      LEFT JOIN #_virtuemart_products_ru_ru products_ru
      ON products_ru.virtuemart_product_id = prices.virtuemart_product_id
      LEFT JOIN #_virtuemart_product_manufacturers pm
      ON pm.virtuemart_product_id = products_ru.virtuemart_product_id
      LEFT JOIN #_virtuemart_manufacturers manufacts
            ON manufacts.virtuemart_manufacturer_id = pm.virtuemart_manufacturer_id
      LEFT JOIN #_virtuemart_manufacturers_ru_ru manufacts_ru
            ON manufacts.virtuemart_manufacturer_id = manufacts_ru.virtuemart_manufacturer_id
    FROM `#__virtuemart_product_prices` WHERE `virtuemart_product_id` = '.$field->custom_value.'';
    $db->setQuery($qt); $result = $db->loadResult();
    
    print_r($result); // посмотреть как выводятся поля
    
    $sena = $this->currency->getSymbol();
    
    ?>
    <div class="product-field product-field-type-<?php echo $field->field_type ?>" style="text-align: left; float:left; width: 100%">
    <span class="product-field-display" style="text-align: left"><?php echo $field->display ?></span>
    <span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
    <?php echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $result) ?></div>
    
    <?php echo $result->price; // примерно так вывод должен выглядеть  ?>
    
    ?>
    
    <?php } ?>
    </div>
    
    это примерный план действий...более конкретно конечно надо уже в коде смотреть
     
    Последнее редактирование: 19 май 2014
  3. angel_sia

    angel_sia

    Регистр.:
    7 окт 2012
    Сообщения:
    151
    Симпатии:
    70
    Код:
    <div class="product-field product-field-type-<?php echo $field->field_type ?>" style="text-align: left; float:left; width: 100%">
    <span class="product-field-display" style="text-align: left"><?php echo $field->display ?></span>
    <span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
    
    Изначально вот эта часть выводит изображение и (product_name). Смысл делать сам запрос в бд на него видимо нету я так предполагаю.
     
  4. mfilin

    mfilin Писатель

    Регистр.:
    17 май 2014
    Сообщения:
    7
    Симпатии:
    4
    если только про вывод...там еще артикул есть (product_sku)
     
  5. angel_sia

    angel_sia

    Регистр.:
    7 окт 2012
    Сообщения:
    151
    Симпатии:
    70
    Это да :).
    Попробовал понял что надо разобраться просто. Вывод сейчас на страничку идет только картинку и имя товара опять же из выше перечисленных строк.

    Вот такой изначальный код был у меня:
    Тут выводится картинка товара и его имя.
    Код:
    <?php
    /**
     *
     * Show the product details page
     *
     * @package    VirtueMart
     * @subpackage
     * @author Max Milbers, Valerie Isaksen
    
     * @link http://www.virtuemart.net
     * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
     * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
     * VirtueMart is free software. This version may have been modified pursuant
     * to the GNU General Public License, and as distributed it includes or
     * is derivative of works licensed under the GNU General Public License or
     * other free or open source software licenses.
     * @version $Id: default_relatedproducts.php 6431 2012-09-12 12:31:31Z alatak $
     */
    
    // Check to ensure this file is included in Joomla!
    defined ( '_JEXEC' ) or die ( 'Restricted access' );
    ?>
            <div class="product-related-products">
    <h4><?php echo JText::_('COM_VIRTUEMART_RELATED_PRODUCTS'); ?></h4>
    
    <?php
    foreach ($this->product->customfieldsRelatedProducts as $field) {
    ?>
    
    <div class="product-field product-field-type-<?php echo $field->field_type ?>" style="text-align: left; float:left; width: 100%">
    <span class="product-field-display" style="text-align: left"><?php echo $field->display ?></span>
    <span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
    
    
    
    <?php } ?>
    </div>
    
    Для вывода цены было добавлено данный код который нашел на просторах.
    Код:
    $db = JFactory::getDBO();
    $qt='SELECT `product_price` FROM `#__virtuemart_product_prices`   WHERE `virtuemart_product_id` = '.$field->custom_value.'';
    $db->setQuery($qt); $result = $db->loadResult(); $sena = $this->currency->getSymbol();
    
    //вывод - <?php echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $result) ?>
    
     
  6. mfilin

    mfilin Писатель

    Регистр.:
    17 май 2014
    Сообщения:
    7
    Симпатии:
    4
    Код:
    $qt='...//ставь новый запрос
    print_r($result);
    
     
  7. angel_sia

    angel_sia

    Регистр.:
    7 окт 2012
    Сообщения:
    151
    Симпатии:
    70
    Слетает разметка..
    Ссылка
     
  8. mfilin

    mfilin Писатель

    Регистр.:
    17 май 2014
    Сообщения:
    7
    Симпатии:
    4
    после раскапывания исходников вирта выкладываем решение...
    файл
    Код:
    components/com_virtuemart/views/productdetails/tmpl/default_relatedproducts.php
    код
    Код:
    <?php
    /**
     *
     * Show the product details page
     *
     * @package   VirtueMart
     * @subpackage
     * @author Max Milbers, Valerie Isaksen
    
     * @link http://www.virtuemart.net
     * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
     * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
     * VirtueMart is free software. This version may have been modified pursuant
     * to the GNU General Public License, and as distributed it includes or
     * is derivative of works licensed under the GNU General Public License or
     * other free or open source software licenses.
     * @version $Id: default_relatedproducts.php 6431 2012-09-12 12:31:31Z alatak $
     */
    
    // Check to ensure this file is included in Joomla!
    defined ( '_JEXEC' ) or die ( 'Restricted access' );
    ?>
      <div class="product-related-products">
    <h4><?php echo JText::_('COM_VIRTUEMART_RELATED_PRODUCTS'); ?></h4>
    
    <?php
    foreach ($this->product->customfieldsRelatedProducts as $field) {
    $db = JFactory::getDBO();
    //$qt='SELECT `product_price` FROM `#__virtuemart_product_prices`  WHERE `virtuemart_product_id` = '.$field->custom_value.'';
    $qt = 'SELECT prices.`product_price`,
            products.`product_sku`,
            products_ru.`product_name`,
            products_ru.`product_s_desc`,
            manufacts_ru.`mf_name`
       FROM `#__virtuemart_product_prices` as prices
         LEFT JOIN `#__virtuemart_products` as products
            ON products.virtuemart_product_id = prices.virtuemart_product_id
         LEFT JOIN `#__virtuemart_products_en_gb` as products_ru
            ON products_ru.virtuemart_product_id = prices.virtuemart_product_id
         LEFT JOIN `#__virtuemart_product_manufacturers` as pm
            ON pm.virtuemart_product_id = products_ru.virtuemart_product_id
         LEFT JOIN `#__virtuemart_manufacturers` as manufacts
            ON manufacts.virtuemart_manufacturer_id = pm.virtuemart_manufacturer_id
         LEFT JOIN `#__virtuemart_manufacturers_en_gb` as manufacts_ru
            ON manufacts.virtuemart_manufacturer_id = manufacts_ru.virtuemart_manufacturer_id
      WHERE prices.`virtuemart_product_id`='.$field->custom_value.'';
       $db->setQuery($qt);   
       //$result = $db->loadResult();
       $result = $db->loadAssoc();   
       $sena = $this->currency->getSymbol();
    
    ?>
    <div class="product-field product-field-type-<?php echo $field->field_type ?>" style="text-align: left; float:left; width: 100%">
       <span class="product-field-display" style="text-align: left"><?php echo $field->display ?></span>
       <span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
       
       <?php echo $this->currency->createPriceDiv ('salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $result['product_price']) ?></div>
       
       <span class="product-field-display" style="text-align: left"><?php echo $result['product_name'] ?></span>
       <br />
       <span class="product-field-display" style="text-align: left"><?php echo $result['product_sku'] ?></span>
       <br />
       <span class="product-field-display" style="text-align: left"><?php echo $result['product_s_desc'] ?></span>
       <br />
       <span class="product-field-display" style="text-align: left"><?php echo $result['mf_name'] ?></span>
    <?php } ?>
    </div>
    
     
    angel_sia нравится это.
Статус темы:
Закрыта.