Gudym
Постоялец
- Регистрация
- 18 Мар 2013
- Сообщения
- 55
- Реакции
- 24
- Автор темы
- #1
Здравствуйте, товарищи! Как-то раньше где-то скачал плагин скидок JoomShopping Simple discount, который выводит сообщение в корзине о скидке при покупке товаров на сумму больше заданной в плагине и, соответственно, вычитает сумму скидки из конечной стоимости товаров.
Вот так это выглядит:
Для просмотра ссылки Войдиили Зарегистрируйся
А вот админка плагина:
Для просмотра ссылки Войдиили Зарегистрируйся
Плагин простенький, но свою задачу выполняет и, главное, работает на Joomla 3.x.
Магазин 2-х язычный (UA / RU) и у меня возникла трудность с его локализацией на украинский язык.
При установке плагин заливает файлы украинской и русской локализации админки.
administrator/language/uk-UA/uk-UA.plg_jshoppingcheckout_simple_discount.ini
administrator/language/ru-RU/ru-RU.plg_jshoppingcheckout_simple_discount.ini
Но файлов локализации фронтенда в папке /language нет. Нужно перевести сообщение о скидке "Всего %s отделяет Вас от скидки -%s", которое прописывается в админке плагина.
Плагин состоит из двух файлов:
simple_discount.php:
simple_discount.xml:
Сообщение о скидке содержится в файле simple_discount.xml и при изменении его в админке плагина оно перезаписывается в базе данных.
В языковом файле админки плагина 12 констант:
Но константы, которая отвечает за перевод самого текста "Сообщения о скидке" не существует.
В общем ума не приложу, как переводить это сообщение. Возникла идея организовать разные поля в админке для 2-х языков, 1 - "Сообщение о скидке (UA)", 2 -
"Сообщение о скидке (RU)". Дополнительное поле в файле simple_discount.xml я то прописал (см. скриншот ниже), но как сделать, чтобы оно прописывалось в базу данных и подключалось в соответствии с выбранным языком в магазине, для меня сложная задача.
Для просмотра ссылки Войдиили Зарегистрируйся
Или вариант с дополнительным полем - путь тупиковый? Может возможно перевести более простым путям через константы?
Заранее спасибо всем, кто откликнется! Архив с плагином прикрепил, может кому понадобится.
Если вас есть хоть какие-нибудь идеи - подкидывайте, пожалуйста. Возможно это мне поможет решить задачу самому.
Вот так это выглядит:
Для просмотра ссылки Войди
А вот админка плагина:
Для просмотра ссылки Войди
Плагин простенький, но свою задачу выполняет и, главное, работает на Joomla 3.x.
Магазин 2-х язычный (UA / RU) и у меня возникла трудность с его локализацией на украинский язык.
При установке плагин заливает файлы украинской и русской локализации админки.
administrator/language/uk-UA/uk-UA.plg_jshoppingcheckout_simple_discount.ini
administrator/language/ru-RU/ru-RU.plg_jshoppingcheckout_simple_discount.ini
Но файлов локализации фронтенда в папке /language нет. Нужно перевести сообщение о скидке "Всего %s отделяет Вас от скидки -%s", которое прописывается в админке плагина.
Плагин состоит из двух файлов:
simple_discount.php:
Код:
<?php
/**
* @copyright Copyright (C) 2005 - 2012 fisk.te.ua All rights reserved.
* @license Vyacheslav Lopatynskyj
*/
defined('_JEXEC') or die('Restricted access');
/**
* An simple JoomShopping discount plugin.
*/
class plgJshoppingCheckoutSimple_discount extends JPlugin{
//plugin options array
var $options = array();
/**
* Constructor
*
* @access protected
* @param object $subject The object to observe
* @param array $config An array that holds the plugin configuration
* @since 1.5
*/
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
$this->options['amount_to_get_discount'] = (float)$this->params->get('amount_to_get_discount');
$this->options['discount_type'] = (int)$this->params->get('discount_type');
$this->options['discount_value'] = (float)$this->params->get('discount_value');
$this->options['show_message'] = $this->params->get('show_message');
$this->options['message'] = $this->params->get('message');
}
function onAfterCartLoad(&$cart){
if ($cart->getSummForCalculeDiscount() >= $this->options['amount_to_get_discount']) {
$cart->setRabatt(NULL, $this->options['discount_type'], $this->options['discount_value']);
} else {
$cart->setRabatt(NULL, NULL, NULL);
}
}
function onBeforeDisplayCartView(&$view) {
if ($this->options['show_message'] != 0 && $view->fullsumm < $this->options['amount_to_get_discount']) {
$html = '<div style="color: red; font-size: 20px; text-align: center;">';
$html .= sprintf($this->options['message'],
formatprice($this->options['amount_to_get_discount'] - $view->fullsumm),
($this->options['discount_type'] == "1" ? formatprice($this->options['discount_value']) : $this->options['discount_value']."%"));
$html .= '</div>';
if ($this->options['show_message'] == 1) {
$view->_tmp_ext_html_cart_start = $html;
} else {
$view->_tmp_ext_html_before_discount = $html;
}
}
}
}
//TODO add array of discounts
//TODO select categories for discount
//TODO optional merge plugin discount with user-group discount
//TODO if delete plugin discount restore user-group discount
simple_discount.xml:
Код:
<?xml version="1.0" encoding="utf-8"?>
<extension version="1.7" type="plugin" group="jshoppingcheckout" method="upgrade">
<name>JoomShopping Simple discount</name>
<creationDate>02.12.2012</creationDate>
<version>1.1</version>
<author>Lopatynskiy Vyacheslav</author>
<authorEmail>darkfisk@gmail.com</authorEmail>
<authorUrl>http://fisk.te.ua</authorUrl>
<copyright>Lopatynskiy Vyacheslav</copyright>
<license>Lopatynskiy Vyacheslav</license>
<description>Simple discount for JoomShopping</description>
<files>
<filename plugin="simple_discount">simple_discount.php</filename>
<filename>index.html</filename>
</files>
<languages>
<language tag="ru-RU">ru-RU.plg_jshoppingcheckout_simple_discount.ini</language>
<language tag="uk-UA">uk-UA.plg_jshoppingcheckout_simple_discount.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic">
<field name="amount_to_get_discount" type="text" default="500" label="PLG_SIMPLE_DISCOUNT_FIELD_AMOUNT_TO_GET_DISCOUNT" size='20' description=''/>
<field name="discount_type" type="radio" default="2" label="PLG_SIMPLE_DISCOUNT_FIELD_DISCOUNT_TYPE">
<option value="1">PLG_SIMPLE_DISCOUNT_STATIC_DISCOUNT_TYPE</option>
<option value="2">PLG_SIMPLE_DISCOUNT_PERCENT_DISCOUNT_TYPE</option>
</field>
<field name="discount_value" type="text" default="5" label="PLG_SIMPLE_DISCOUNT_FIELD_DISCOUNT_VALUE" size='20' description=''/>
<field type="spacer" hr="true" />
<field type="spacer" name="spacer_message" class="text" label="PLG_SIMPLE_DISCOUNT_SEPARATOR_MESSAGE" />
<field name="show_message" type="list" default="0" label="PLG_SIMPLE_DISCOUNT_FIELD_LIST_SHOW_MESSAGE_LABEL" description="PLG_SIMPLE_DISCOUNT_FIELD_LIST_SHOW_MESSAGE_DESC">
<option value="0">JNo</option>
<option value="1">PLG_SIMPLE_DISCOUNT_MESSAGE_ON_TOP</option>
<option value="2">PLG_SIMPLE_DISCOUNT_MESSAGE_ON_BOTTOM</option>
</field>
<field name="message" type="text" default="Всего %s отделяет Вас от скидки -%s" label="PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_LABEL" size='60' description='PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_DESC' />
</fieldset>
</fields>
</config>
<updateservers>
<server type="extension" priority="1" name="JoomShopping Simple discount Update Site">http://fisk.te.ua/update/jshoppingcheckout_simple_discount-update.xml</server>
</updateservers>
</extension>
Сообщение о скидке содержится в файле simple_discount.xml и при изменении его в админке плагина оно перезаписывается в базе данных.
Код:
<field name="message" type="text" default="Всего %s отделяет Вас от скидки -%s" label="PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_LABEL" size='60' description='PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_DESC' />
В языковом файле админки плагина 12 констант:
Код:
PLG_SIMPLE_DISCOUNT_FIELD_AMOUNT_TO_GET_DISCOUNT="Сумма для получения скидки"
PLG_SIMPLE_DISCOUNT_FIELD_DISCOUNT_TYPE="Тип скидки"
PLG_SIMPLE_DISCOUNT_STATIC_DISCOUNT_TYPE="Сталая"
PLG_SIMPLE_DISCOUNT_PERCENT_DISCOUNT_TYPE="Процентная"
PLG_SIMPLE_DISCOUNT_FIELD_DISCOUNT_VALUE="Сумма скидки"
PLG_SIMPLE_DISCOUNT_SEPARATOR_MESSAGE="Настройка сообщения о скидке"
PLG_SIMPLE_DISCOUNT_FIELD_LIST_SHOW_MESSAGE_LABEL="Отображать сообщение?"
PLG_SIMPLE_DISCOUNT_FIELD_LIST_SHOW_MESSAGE_DESC="Нужно ли отображать отображать сообщение о скидке на странице корзины"
PLG_SIMPLE_DISCOUNT_MESSAGE_ON_TOP="Вверху страницы корзины"
PLG_SIMPLE_DISCOUNT_MESSAGE_ON_BOTTOM="Внизу страницы корзины"
PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_LABEL="Сообщение о скидке"
PLG_SIMPLE_DISCOUNT_FIELD_MESSAGE_FOR_DISCOUNT_DESC="Сообщение в корзине сколько не хватает до скидки"
Но константы, которая отвечает за перевод самого текста "Сообщения о скидке" не существует.
В общем ума не приложу, как переводить это сообщение. Возникла идея организовать разные поля в админке для 2-х языков, 1 - "Сообщение о скидке (UA)", 2 -
"Сообщение о скидке (RU)". Дополнительное поле в файле simple_discount.xml я то прописал (см. скриншот ниже), но как сделать, чтобы оно прописывалось в базу данных и подключалось в соответствии с выбранным языком в магазине, для меня сложная задача.
Для просмотра ссылки Войди
Или вариант с дополнительным полем - путь тупиковый? Может возможно перевести более простым путям через константы?
Заранее спасибо всем, кто откликнется! Архив с плагином прикрепил, может кому понадобится.
Если вас есть хоть какие-нибудь идеи - подкидывайте, пожалуйста. Возможно это мне поможет решить задачу самому.
Вложения
Последнее редактирование модератором: