среда, 31 июля 2019 г.

Настройка DNS для почтового сервера на ISPManager

Настройка почтового сервера с помощью панели ISPManager практически тривиальна.

Однако после создания почтовых ящиков в DNS Ваших доменов нужно прописать:

  • A-запись mail.site.ru со значением IP сайта
  • MX-запись site.ru с приоритетом 10 со значением mail.site.ru
  • TXT-запись site.ru со значением v=spf1 ip4:100.100.100.100 ~all (IP Вашего сайта)
  • TXT-запись dkim._domainkey.site.ru со значением, которое можно взять из текстового файла в папке /etx/exim4/ssl, имя которого совпадает с доменом, для которого Вы включили DKIM в ISPManager'е

воскресенье, 21 июля 2019 г.

miniShop2 - подсчет позиций в корзине

Работает это с версии miniShop2 2.4.

1. В папке /core/components/minishop2/custom/cart/ создаете файл mascarthandlerstatus.class.php который будет расширять класс корзины

2. В этом файле пишете
==============================================
<?php

if(!class_exists('msCartInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/mscarthandler.class.php';
}

class msCartHandlerStatus extends msCartHandler implements msCartInterface{

    public function status($data = array())
    {
        $status = array(
            'total_count' => 0,
            'total_count_position' => 0,
            'total_cost' => 0,
            'total_weight' => 0
        );

        foreach ($this->cart as $item) {
            if (empty($item['ctx']) || $item['ctx'] == $this->ctx) {
                $status['total_count_position'] += 1;
                $status['total_count'] += $item['count'];
                $status['total_cost'] += $item['price'] * $item['count'];
                $status['total_weight'] += $item['weight'] * $item['count'];
            }
        }

        return array_merge($data, $status);
    }
}
==============================================


3. В плагине Console (если его нет, то надо поставить) выполняем следующий код

==============================================
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('cart', 'msCartHandlerStatus',
        '{core_path}components/minishop2/custom/cart/mascarthandlerstatus.class.php'
    );
}

==============================================

Таким образом мы добавляем новый обработчик корзины

4. Далее идем в Системные настройки -> mimishop2 -> Класс обработчик корзины и указываем там msCartHandlerStatus

5. Теперь в плейсхолдере total_count_position будет отображаться количество позиций в корзине

6. Что бы все это и по аяксу обновлялось, в js в ваших скриптах или просто в конце страницы (главное что бы он был после подключения скрипта от минишопа) добавляем такой код

==============================================
miniShop2.Cart.status = function (status) {
  if (status['total_count'] < 1) {
      location.reload();
  }
  else {
      var $miniCart = $(miniShop2.Cart.miniCart);
      if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
          $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
      }
      $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
      $(miniShop2.Cart.totalCount).text(status['total_count']);
      $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
      $('.ms2_total_count_position').text(status['total_count_position']);
      if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
          miniShop2.Order.getcost();
      }
  }
};

==============================================

7. Теперь в миникорзине или корзине можно писать так

<span class="ms2_total_count_position">{$total_count_position}</span>

четверг, 28 декабря 2017 г.

пятница, 22 декабря 2017 г.

Включение mod_headers и mod_expires в Apache

Для включения необходимо выполнить следующие команды:

a2enmod headers
a2enmod expires

После чего перезагрузить apache

пятница, 10 марта 2017 г.

MODX - ошибка 500

Часто из-за ошибок в коде PHP MODX показывает белую страницу с "ошибкой 500" -- внутренняя ошибка сервера.
Чтобы узнать, какой кусок кода вызвал ошибку, нужно в настройках PHP установить переменную "display_errors" в значение "On".
Скорее всего ошибка будет в сниппете. PHP выведет путь до файла и укажет номер строки с ошибкой. Если файл сниппета будет в папке "cache", то стоит обратить внимание на цифры в имени этого файла -- эти цифры являются не чем иным как ID сниппета, по которому его легко найти в админке.

Редирект с одного домена на другой

Чтобы организовать постоянное перенаправление (301 Moved Permanently), нужно отредактировать файл .htaccess

Пример перенапраления с берибаню.рф на beribanyu.ru
# Редирект с берибаню.рф на beribanyu.ru
RewriteCond %{HTTP_HOST} ^xn--80abapp6ar0j.xn--p1ai
RewriteRule ^(.*)$ http://beribanyu.ru/$1 [R=301,L]

понедельник, 13 июня 2016 г.

Изменение названия полей в MODX Revo

Имена стандартных полей (таких как "Заголовок", "Описание" и т. д.) при редактировании ресурса в MODX Revo можно изменить, войдя в "Управление словарями" и отфильтровав результаты по пространству имен "core", теме "resource" и языку "ru"