Добавить язык на сайт
3) Как добавить язык на сайт?
- В первую очередь необходимо проверить наличие необходимой локализации на сервере. Для *nix серверов для проверки локалей достаточно выполнить команду "locale -a".
- Проверить прописан ли добавляемый язык в файле config/languages.php, если нет, добавить аналогично существующим.
- Добавить соответствующую запись в системную настройку (config/sys.php) "locale.available". Изменение настройки языка по-умолчанию ("locale.default") необходимо выполнить в последную очередь (если необходимо).
- Создать структуру директорий локализации в директории files/locale, аналогично существующим.
- Продублировать данные для нового языка в админ панели в разделе "Development / Локализация", подраздел "Данные" (система создаст все необходимые языковые поля в базе данных)
- Выполнить пересборку файлов перевода интерфейса в подразделе "Интерфейс"
- В случае если добавляемый язык должен стать языком по-умолчанию необходимо также изменить системную настройку (config/sys.php) "locale.default"
- Также проверить наличие соответствующей иконки языка в директории public_html/img/lang, там же в файле readme.txt можно найти ссылку где скачать недостающую иконку.
 
Решение, при переходе с оплатой на ЕДИНЫЙ КОШЕЛЕК появляются ошибки:
Undefined variable: w1_id > /сайт/bff/modules/bills/tpl/def/pay.request.form.php [39]
Undefined variable: w1_currency > /сайт/bff/modules/bills/tpl/def/pay.request.form.php [42]

Такая ошибка может быть только по одной причине, и правится она не в этих строках, как вам выше написали, а конкретно в файле sys.php
Вам надо правильно настроить приём платежей этой системой по мурзилке. Вот эту настройку
Code:
e) Заполните соответствующие системные настройки (/config/sys.php):
- bills.w1.id - Идентификатор (номер кошелька) интернет-магазина, полученный при регистрации.
- bills.w1.secret - "секретный ключ" полученный ранее
- bills.w1.currency - ID валюты оплаты по-умолчанию. Узнать его можно из документации - http://www.walletone.com/ru/merchant/documentation/#step2
   Например: 643 — Российские рубли, 840 — Американские доллары, 978 — Евро, 980 — Украинские гривны, 398 — Казахстанские тенге
Вот так должно быть в sys.php
Единственно возможно ключ и номер кошелька в одинарных кавычках, если они не из одних цифр состоят и есть буквы. То есть например для номера 12345 пишем 'bills.w1.id' => 12345, в для номера 12A345 'bills.w1.id' => '12A345', Но не факт. С данной системой я не работаю, не надёжная. Поэтому проверяйте сами.
 
проблема, при регистрации пользователя при отправке смс формируется номер вида ++7хххххххх
Удобно на стадии разработки работать с оператором заведённом в sys.php. У данного оператора отправка сис на свой номер не тарифицируется, то есть бесплатно. Работает всё чётко без каких то проблем. СМС не задерживаются и приходят моментально, даже на стадии разработки, имею ввиду бесплатную отправку на свой номер. Что касаемо других операторов, то файл users.sms.php из модуля users. В нём класс для отправки смс, вам надо начать с метода send и чисто переписать, а лучше дописать возможность использования другого оператора. Всё там как образец есть.
В sys.php так
 
"Показать на карте" не отображает
При подаче объявления укажите Адрес объекта, для яндекс карт, достаточно щелкнуть на карту по объекту при увеличении карты. После этого вы увидите карту в объявлении, а так же объект будет показан на карте при поиске по разделу.


Как разбить вывод разделов на 3 столбца:
 
Last edited by a moderator:
решение для тех у кого напряг с https и они не имеют доступ к настройкам сервера или не понимают как сделать, что бы _SERVER['HTTPS'] был определён и имел значение не off. Делаем так


Всё это делаем если у вас нет _SERVER['HTTPS'] в phpinfo как на снимке. После добавления в sys.php появится. Вот такая вам временная затычка. Но лучше иметь доступ к серверу.

Code:
Строке из bff.php
Geo::$ymapsJS = Request::scheme().'://api-maps.yandex.ru/2.1/?lang=ru_RU';
Принудительно впаяем https, вот так
Geo::$ymapsJS = 'https://api-maps.yandex.ru/2.1/?lang=ru_RU';

Хотите проверить, строку пропишите например в шаблоне \modules\site\tpl\def\index.php вставьте строку перед строкой загрузки шаблона последних/премиум, кстати так вообще можно проверить, что возвращает scheme()
Code:
           <div class="b-category-list cols">
           <?= BBS::i()->catsList('index', bff::DEVICE_DESKTOP, 0); ?>
           </div>
       </div>
   </div>
</div><?= Request::scheme() ?>
       <?= $last ?>
 
Как запретить незалогинившимся пользователям на сайте постить объявления ? т.е. залогинился и постить можно типа "ввойдите чтобы подать объявление"
 
Добавление раздела в Контакты. Тип контактов, "Ошибка на сайте", "Технический вопрос", "Другие вопросы" и т.д. и т.п.



1
2
3
4
5
6
 
  • Like
Reactions: val
Подскажите как вывести отдельные платежки с walletone в личный кабинет к примеру сбербанк онлайн
Заходим
/bff/modules/bills/frontend.php
добавляем код в конец перед }
PHP:
    # Система оплаты W2
    protected function w2_request()
    {
        // чистим все поля, которые не начинаются на WMI2_
        foreach ($_POST as $k => $v) {
            if (strpos($k, 'WMI_') !== 0) {
                unset($_POST[$k]);
            }
        }
        extract($_POST);

        if (empty($WMI_SIGNATURE)) {
            $this->w2_response(false, 'Отсутствует параметр WMI_SIGNATURE');
        }
        if (empty($WMI_PAYMENT_NO)) {
            $this->w2_response(false, 'Отсутствует параметр WMI_PAYMENT_NO');
        }
        if (!isset($WMI_ORDER_STATE)) {
            $this->w2_response(false, 'Отсутствует параметр WMI_ORDER_STATE');
        }

        # Проверяем подпись
        $crc = $WMI_SIGNATURE;
        unset($_POST['WMI_SIGNATURE']);
        $crc2 = $this->w2_signature($_POST, false);
        if ($crc !== $crc2) {
            $this->log('W2: неверная контрольная сумма "' . $crc . '" !== "' . $crc2 . '"');
            $this->w2_response(false, $this->payError('crc_error'));
        }

        # Проверяем состояние счета (в ответе W2 корректно только ACCEPTED)
        if (strtoupper($WMI_ORDER_STATE) !== 'ACCEPTED') {
            $this->log('W2: неверное состояние(ORDER_STATE) "' . $WMI_ORDER_STATE . '" !== "ACCEPTED"');
            $this->w2_response(false, 'Неверное состояние(WMI_ORDER_STATE)');
        }

        # Обрабатываем счет
        $mResult = $this->processBill($WMI_PAYMENT_NO, $WMI_PAYMENT_AMOUNT, self::PS_W2, array(
                'WMI_ORDER_ID'       => (isset($WMI_ORDER_ID) ? $WMI_ORDER_ID : ''),
                'WMI_PAYMENT_AMOUNT' => $WMI_PAYMENT_AMOUNT,
                'WMI_PAYMENT_TYPE'   => (isset($WMI_PAYMENT_TYPE) ? $WMI_PAYMENT_TYPE : ''),
                'WMI_CURRENCY_ID'    => $WMI_CURRENCY_ID,
                'WMI_TO_USER_ID'     => (isset($WMI_TO_USER_ID) ? $WMI_TO_USER_ID : ''),
                'WMI_CREATE_DATE'    => $WMI_CREATE_DATE,
                'WMI_UPDATE_DATE'    => $WMI_UPDATE_DATE,
            )
        );
        if ($mResult === true) {
            $this->w2_response('OK');
        } else {
            $this->w2_response(false, $mResult);
        }
    }

    protected function w2_signature($aFields, $bEncode = true)
    {
        # Сортировка значений внутри полей
        foreach ($aFields as $name => $val) {
            if (is_array($val)) {
                usort($val, "strcasecmp");
                $aFields[$name] = $val;
            }
        }

        # Формирование сообщения, путем объединения значений формы,
        # отсортированных по именам ключей в порядке возрастания.
        # Конвертация из текущей кодировки (UTF-8)
        # необходима только если кодировка магазина отлична от Windows-1251
        uksort($aFields, 'strcasecmp');

        $fieldValues = '';
        foreach ($aFields as $value) {
            if (is_array($value)) {
                foreach ($value as $v) {
                    if ($bEncode) {
                        $v = iconv('utf-8', 'windows-1251', $v);
                    }
                    $fieldValues .= $v;
                }
            } else {
                if ($bEncode) {
                    $value = iconv('utf-8', 'windows-1251', $value);
                }
                $fieldValues .= $value;
            }
        }

        # Формирование значения параметра WMI_SIGNATURE, путем
        # вычисления отпечатка, сформированного выше сообщения,
        # по алгоритму MD5 и представление его в Base64
        return base64_encode(pack("H*", md5($fieldValues . config::sys('bills.w2.secret'))));
    }

    protected function w2_response($sResult = 'OK', $sDescription = false)
    {
        if (empty($sResult)) {
            $sResult = 'RETRY';
        }
        echo 'WMI_RESULT=' . strtoupper($sResult);
        if ($sDescription !== false) {
            echo '&WMI_DESCRIPTION=' . urlencode($sDescription);
        }
        exit;
    }

Заходим
/modules/bills/bills.class.php
Ищем код
PHP:
$this->psystemsAllowed = array(
И после
PHP:
self::PS_W1,
добавляем код
PHP:
self::PS_W2,

Ищем код
PHP:
'terminal' => array(
и перед добавляем код
PHP:
'terminalrub' => array(
                'id'           => self::PS_W2,
                'way'          => '',
                'logo_desktop' => $logoUrl . 'w1.png',
                'logo_phone'   => $logoUrl . 'w1.png',
                'title'        => _t('bills', 'Единая касса Валюта Рубли'),
                'img'        => SITEURL_STATIC . '/img/vse-sposob.png',
                'currency_id'  => 2, # ID Валюты рубли
            ),
Заходим
bff\modules\bills\base.php
Ищем код

PHP:
const PS_W1
И после добавляем код
PHP:
const PS_W2      = 17; # W2
ищем код
PHP:
self::PS_W1
И после добавляем код
PHP:
self::PS_W2      => array('id' => self::PS_W2,      'title' => 'W2', 'key' => 'w2', 'desc' => ''),

Заходим
bff\modules\bills\tpl\def\pay.request.form.php
самый конец перед }
добавляем код
PHP:
    # W2 (http://www.w1.ru/)
    case Bills::PS_W2:
    {
        $fields = array(
            'WMI_MERCHANT_ID' => $w2_id,
            'WMI_PAYMENT_AMOUNT' => round($amount, 2),
            'WMI_PAYMENT_NO'  => $bill_id,
            'WMI_CURRENCY_ID' => $w2_currency,
            'WMI_DESCRIPTION' => $bill_description,
        );
        # Формируем SUCCESS_URL:
        # 1) из указанного при инициализации формы ($extra['success'])
        # 2) из указанного в настройках модуля (w2_success)
        if( ! empty($extra['success']) ) {
            $w2_success = $extra['success'];
        }
        if( ! empty($w2_success) ) {
            $fields['WMI_SUCCESS_URL'] = $w2_success;
        }

        if( ! empty($w2_fail) ) {
            $fields['WMI_FAIL_URL'] = $w2_fail;
        }

        # Помечаем доступные способы оплаты W2:
        # 1) из указанных при инициализации формы $psystem_way
        # 2) из указанных в настройках модуля (w2_ways)
        $w2_ways = ( ! empty($psystem_way) ? $psystem_way :
                     ( ! empty($w2_ways) ? $w2_ways : false) );

        if( ! empty($w2_ways) ) {
            if( is_array($w2_ways) ) {
                $fields['WMI_PTENABLED'] = $w2_ways;
            }
        }

        $fields['WMI_SIGNATURE'] = $this->w2_signature( $fields );

        echo '<form action="https://merchant.w1.ru/checkout/default.aspx" method="POST" accept-charset="UTF-8">';
        foreach($fields as $key => $val)
        {
            if (is_array($val)) {
               foreach($val as $value) {
                    echo '<input type="text" name="'.$key.'" value="'.$value.'" /><br />';
               }
            } else {
               echo '<input type="text" name="'.$key.'" value="'.$val.'" /><br />';
            }
        }
        echo '</form>';
    } break;

Заходим
config/sys.php

ищем код

PHP:
'bills.w1.ways' =>
И после добавляем код
PHP:
 # W2 walletone.com
'bills.w2.id' => 'тут w2.id',
'bills.w2.secret' => 'тут w2.secret',

# ID валюты:
#  398 — Казахстанские тенге
#  643 — Российские рубли
#  840 — Американские доллары
#  980 — Украинские гривны

'bills.w2.currency' => 643,

# Способы оплаты (в системе):
# Платежные терминалы России - CashTerminalRUB
# Платежные терминалы Украины - CashTerminalUAH
# Платежные терминалы Молдовы - CashTerminalMDL
# Яндекс.Деньги - YandexMoneyRUB
# WebMoney - WebMoneyRUB, WebMoneyUAH, WebMoneyUSD
# QIWI Кошелек - QiwiWalletRUB
# Кредитные карты - CreditCardRUB, CreditCardUAH, CreditCardUSD, CreditCardEUR

'bills.w2.ways' => array('CashTerminalRUB','YandexMoneyRUB','WebMoneyUSD','YandexMoneyRUB','QiwiWalletRUB','CreditCardRUB','CreditCardUAH','CreditCardUSD','CreditCardEUR'),
 
Top