Перейти к содержимому


Фотография
- - - - -

JBPrice добавляем шаблон "Цена плюс описание"


Сообщений в теме: 11

#1 myjob495

myjob495

Отправлено 09 September 2014 - 20:55

Начало и ответ на вопрос зачем это было нужно тут >>

 

Решение:

 

В файле \media\zoo\applications\jbuniversal\elements\jbpriceadvance\jbpriceadvance.xml добавляем шаблон в список

 <!-- custom params ######################################################################################### -->
        <param name="@custom_label" type="jbspacer" default="JBZOO_JBPRICE_TEMPLATE_CUSTOM_PARAMS_SPACER"/>

        <param name="template" type="list" default="default" label="JBZOO_JBPRICE_TEMPLATE"
               description="JBZOO_JBPRICE_TEMPLATE_DESC">
            <option value="default">JBZOO_JBPRICE_TEMPLATE_DEFAULT</option>
            <option value="only_price">JBZOO_JBPRICE_TEMPLATE_ONLYPRICE</option>
            <option value="price_desc">JBZOO_JBPRICE_TEMPLATE_PRICEDESC</option>			
            <option value="only_sku">JBZOO_JBPRICE_TEMPLATE_ONLYSKU</option>
            <option value="only_sale">JBZOO_JBPRICE_TEMPLATE_ONLYSALE</option>
            <option value="only_new">JBZOO_JBPRICE_TEMPLATE_ONLYNEW</option>
            <option value="only_hit">JBZOO_JBPRICE_TEMPLATE_ONLYHIT</option>
            <option value="only_balance">JBZOO_JBPRICE_TEMPLATE_ONLYBALANCE</option>
            <option value="only_buttons">JBZOO_JBPRICE_TEMPLATE_ONLYBUTTONS</option>
        </param>

В папке \media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl создаем сам файл шаблона tmpl_price_desc.php

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

$uniqid = uniqid('jsJBPriceAdvance-');
?>

<span class="jbprice-price">

            <?php if ($discount['value'] == 0) : ?>
                <?php echo $base['total']; ?>
            <?php endif; ?>

            <?php if ($discount['value'] > 0) : ?>

                <table cellpadding="0" cellspacing="0" border="0" class="no-border">
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_PRICE'); ?>:</td>
                        <td><span class="jsPrice price discount-more"><?php echo $base['price']; ?></span></td>
                    </tr>
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_TOTAL'); ?>:</td>
                        <td><span class="jsTotal total discount-more"><?php echo $base['total']; ?></span></td>
                    </tr>
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_NOT_SAVE'); ?>:</td>
                        <td><span class="jsSave save discount-more"><?php echo $base['save']; ?></span>
                            (<span class="discount">+<?php echo $discount['format']; ?></span>)
                        </td>
                    </tr>
                </table>

            <?php endif; ?>

            <?php if ($discount['value'] < 0) : ?>

                <table cellpadding="0" cellspacing="0" border="0" class="no-border">
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_PRICE'); ?>:</td>
                        <td><span class="jsPrice price discount-less"><?php echo $base['price']; ?></span></td>
                    </tr>
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_TOTAL'); ?>:</td>
                        <td><span class="jsTotal total discount-less"><?php echo $base['total']; ?></span></td>
                    </tr>
                    <tr>
                        <td><?php echo JText::_('JBZOO_JBPRICE_PRICE_SAVE'); ?>:</td>
                        <td><span class="save discount-less"><span class="jsSave"><?php echo $base['save']; ?></span>
                                (<span class="discount"><?php echo $discount['format']; ?></span>)</span>
                        </td>
                    </tr>
                </table>

            <?php endif; ?>

</span>
<span class="jbprice-description jsDescription"><?php echo $basic['description'];?></span>

В файле \media\zoo\applications\jbuniversal\elements\jbpriceadvance\jbpriceadvance.php

  /**
     * Render for front-end
     * @param array $params
     * @return string|void
     */
    public function render($params = array())
    {
        $params   = $this->app->data->create($params);
        $template = $params->get('template', 'default');

        if ($template == 'modal') {
            return $this->_renderTmplModal($params);

        } elseif ($template == 'default') {
            return $this->_renderTmplDefault($params);

        } elseif ($template == 'only_price') {
            return $this->_renderTmplOnlyPrice($params);
			
        } elseif ($template == 'price_desc') {
            return $this->_renderTmplPriceDesc($params);			

        } elseif ($template == 'only_sku') {
            return $this->_renderTmplOnlySku($params);

        } elseif ($template == 'only_balance') {
            return $this->_renderTmplOnlyBalance($params);

        } elseif ($template == 'only_sale') {
            return $this->_renderTmplOnlySale($params);

        } elseif ($template == 'only_new') {
            return $this->_renderTmplOnlyNew($params);

        } elseif ($template == 'only_hit') {
            return $this->_renderTmplOnlyHit($params);

        } elseif ($template == 'only_buttons') {
            return $this->_renderTmplOnlyButtons($params);
        }
    /**
     * Render "price desc" template
     * @param $params
     * @return string
     */
    protected function _renderTmplPriceDesc($params)
    {
        $layout          = $this->getLayout('tmpl_price_desc.php');
        $prices          = $this->_getTmplPrices($params);
        $currencyDefault = $params->get('currency_default', 'EUR');

        $mainHash = $this->_getHash();
        $prices   = array($mainHash => $prices[$mainHash]);
        $basic    = $this->_getBasicData();

        return self::renderLayout($layout, array(
            'params'   => $params,
            'basic'    => $basic,
            'base'     => array(
                'price' => $prices[$mainHash]['prices'][$currencyDefault]['price'],
                'total' => $prices[$mainHash]['prices'][$currencyDefault]['total'],
                'save'  => $prices[$mainHash]['prices'][$currencyDefault]['save'],
            ),
            'discount' => array(
                'value'  => (float)$basic['discount'],
                'format' => $this->_jbmoney->toFormat($basic['discount'], $basic['discount_currency']),
            )
        ));
    }

Получаем:

price_desc.jpg

 

И так... добился чего хотел. И описание цены выводится и весит страница вместо 540 кб 125 кб.... так, что если говорить про оптимизацию, то неплохо... мусор ненужный отбросили...

 

Спасибо Cheren-dow за напутствия :)

Вроде ничего не забыл :)


Сообщение отредактировал Cheren-dow: 10 September 2014 - 08:52
добавил _renderTmplPriceDesc

  • 3

#2 Dmytry

Dmytry

Отправлено 10 September 2014 - 03:04

Если не сложно, можете приложить файлы к топику? По данному рецепту, все просто - но мы же все ленивые))) ;)

Заранее спасибо


Сообщение отредактировал Dmytry: 10 September 2014 - 03:12

  • 0

#3 myjob495

myjob495

Отправлено 10 September 2014 - 03:54

В архиве элемент jbpriceadvance (Joomla: 3.2.2     JBZoo: 2.1.5 Pro     Zoo: 3.2.2     WidgetKit: 1.4.7).

 

Подумайте прежде чем заливать на рабочую версию сайта ;).

 

в языковом файле прописать значение для списка шаблонов

 

JBZOO_JBPRICE_TEMPLATE_PRICEDESC


  • 1

#4 Dmytry

Dmytry

Отправлено 10 September 2014 - 05:15

Спасибо


  • 0

#5 myjob495

myjob495

Отправлено 10 September 2014 - 05:25

Архив нужно перезалить... не могу... пишет что нельзя прикрепить файл (((

 

Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.


  • 0

#6 Cheren-dow

Cheren-dow

Отправлено 10 September 2014 - 08:39

myjob495, мне кажется вы забыли еще кусок кода показать. А именно метод _renderTmplPriceDesc


  • 0
Изображение
 

#7 myjob495

myjob495

Отправлено 10 September 2014 - 08:49

Да, спасибо. Вот он:

	    /**
     * Render "price desc" template
     * @param $params
     * @return string
     */
    protected function _renderTmplPriceDesc($params)
    {
        $layout          = $this->getLayout('tmpl_price_desc.php');
        $prices          = $this->_getTmplPrices($params);
        $currencyDefault = $params->get('currency_default', 'EUR');

        $mainHash = $this->_getHash();
        $prices   = array($mainHash => $prices[$mainHash]);
        $basic    = $this->_getBasicData();

        return self::renderLayout($layout, array(
            'params'   => $params,
            'basic'    => $basic,
            'base'     => array(
                'price' => $prices[$mainHash]['prices'][$currencyDefault]['price'],
                'total' => $prices[$mainHash]['prices'][$currencyDefault]['total'],
                'save'  => $prices[$mainHash]['prices'][$currencyDefault]['save'],
            ),
            'discount' => array(
                'value'  => (float)$basic['discount'],
                'format' => $this->_jbmoney->toFormat($basic['discount'], $basic['discount_currency']),
            )
        ));
    }

  • 0

#8 Dmytry

Dmytry

Отправлено 10 September 2014 - 11:32

Так, код понятно))) я можно прикрепить файлик заново? Не успел скачать :)


  • 0

#9 myjob495

myjob495

Отправлено 10 September 2014 - 13:55

Так, код понятно))) я можно прикрепить файлик заново? Не успел скачать :)

 

Ошибка Загрузка не удалась. Пожалуйста сообщите об этом администрации форума.


  • 0

#10 Cheren-dow

Cheren-dow

Отправлено 10 September 2014 - 19:12

myjob495, какое расширение файла? Можете мне на почту отправить я выложу сюда? 


  • 0
Изображение
 




Click to return to top of page in style!