cs-cart

Рабочий конфиг NGINX для CS-CART по HTTPS в FIRSTVDS.RU

Все что под *** — Ваши личные пути и данные домена:

#user '***' virtual host '***.ru' configuration file

server {

	server_name ***.ru www.***.ru;
	charset UTF-8;
	disable_symlinks if_not_owner from=$root_path;
	gzip on;
	gzip_comp_level 6;
	gzip_disable "msie6";
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
	index index.html;
	root $root_path;
	set $root_path /var/www/***;
	access_log /var/www/httpd-logs/***.ru.access.log ;
	error_log /var/www/httpd-logs/***.ru.error.log notice;
	include /etc/nginx/vhosts-includes/*.conf;

 #   Прочие настройки
    client_max_body_size            100m;
    client_body_buffer_size         128k;
    client_header_timeout           3m;
    client_body_timeout             3m;
    send_timeout                    3m;
    client_header_buffer_size       1k;
    large_client_header_buffers     4 16k;




	location / {
	        #   Главный скрипт
        index  index.php index.html index.htm;

        #   Для  работы API
        rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;

        #   Логика поиска скрипта по порядку: файл, папка, скрипт
        try_files $uri $uri/ @fallback;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	}


	#   Правиле rewrite для модуля SEO
    location @fallback {
        rewrite  ^(.*)$ /index.php?$args last;
    }

    location @php {
    
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f ***@***.ru";
		fastcgi_pass unix:/var/www/php-fpm/***.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}

#   Настройки статики, первое правило
    location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml) {
        access_log off;
    #   Правило поиска статических файлов. Если файл не находится по адресу магазина, то ищем файл по правилу @statics.
    #   Например если магазин расположен в подпапке ***.ru/shop/
       try_files $uri =404;
        expires 14d;
        add_header Access-Control-Allow-Origin *;
        add_header Cache-Control public;
       root $root_path;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
    }


   #    Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках: ***.ru и ***.ru/shop/

   #    location @statics {
   #    rewrite ^/(\w+)/(.*)$ /$2 break;
   #    access_log off;
   #    rewrite_log off;
   #    expires 14d;
   #    add_header Cache-Control public;
   #    add_header Access-Control-Allow-Origin *;
   #    root $root_path;
   # }



    	location ~ \.php$  {
		fastcgi_index index.php;
				fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f deonisya@ya.ru";
		fastcgi_pass unix:/var/www/php-fpm/***.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	}
	
	add_header Strict-Transport-Security "max-age=31536000;";
	listen ***;

}












server {

	server_name ***.ru www.***.ru;
	charset UTF-8;
	disable_symlinks if_not_owner from=$root_path;
	gzip on;
	gzip_comp_level 6;
	gzip_disable "msie6";
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
	index index.html;
	root $root_path;
	set $root_path /var/www/***;
	access_log /var/www/httpd-logs/***.access.log ;
	error_log /var/www/httpd-logs/***.log notice;
	include /etc/nginx/vhosts-includes/***.conf;

 #   Прочие настройки
    client_max_body_size            100m;
    client_body_buffer_size         128k;
    client_header_timeout           3m;
    client_body_timeout             3m;
    send_timeout                    3m;
    client_header_buffer_size       1k;
    large_client_header_buffers     4 16k;




	location / {
	        #   Главный скрипт
        index  index.php index.html index.htm;

        #   Для  работы API
        rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;

        #   Логика поиска скрипта по порядку: файл, папка, скрипт
        try_files $uri $uri/ @fallback;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	}


	#   Правиле rewrite для модуля SEO
    location @fallback {
        rewrite  ^(.*)$ /index.php?$args last;
    }

    location @php {
    
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f deonisya@ya.ru";
		fastcgi_pass unix:/var/www/php-fpm/***.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}

#   Настройки статики, первое правило
    location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml) {
        access_log off;
    #   Правило поиска статических файлов. Если файл не находится по адресу магазина, то ищем файл по правилу @statics.
    #   Например если магазин расположен в подпапке /
       try_files $uri =404;
        expires 14d;
        add_header Access-Control-Allow-Origin *;
        add_header Cache-Control public;
       root $root_path;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
    }


   #    Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках

   #    location @statics {
   #    rewrite ^/(\w+)/(.*)$ /$2 break;
   #    access_log off;
   #    rewrite_log off;
   #    expires 14d;
   #    add_header Cache-Control public;
   #    add_header Access-Control-Allow-Origin *;
   #    root $root_path;
   # }



    	location ~ \.php$  {
		fastcgi_index index.php;
				fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f ***@***.ru";
		fastcgi_pass unix:/var/www/php-fpm/***;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	}
	
	
	add_header Strict-Transport-Security "max-age=31536000;";
	listen ***;
	ssl on;
	ssl_certificate "/var/www/httpd-cert/***/***.crt";
	ssl_certificate_key "/var/www/httpd-cert/***/***.key";
	ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}


cs-cart

BASH скрипт для выставления правильных прав папок движка магазина CS-CART:

BASH скрипт для выставления правильных прав папок движка магазина CS-CART:

chmod 644 /var/www/config.local.php
chmod 644 /var/www/design/.htaccess
chmod 644 /var/www/images/.htaccess
chmod 664 /var/www/var/.htaccess 
chmod 664 /var/www/var/themes_repository/.htaccess
chmod 644 /var/www/design/index.php 
chmod 644 /var/www/images/index.php
chmod 664 /var/www/var/index.php
chmod 664 /var/www/var/themes_repository/index.php
chmod 777 /var/www/var/
chmod 777 /var/www/design/
chmod 777 /var/www/images/
cs-cart

CS_CART: Имя базы данных MySQL может состоять только из латинских символов, цифр и знаков подчеркивания

Решение проблемы:

1. Открыть файл в /install/app/Installer/Validator.php строка примерно 210.
2. Там есть регулярка на проверку if (preg_match(‘/^[0-9a-zA-Z$_]{1,63}$/’, $name))
Ставим после Z$_ тире, получится if (preg_match(‘/^[0-9a-zA-Z$_-]{1,63}$/’, $name))
И все устанавливается нормально.

cs-cart

Добавление почты email клиента в шаблон инвойса cs-cart 4.3.X.

Открываем файл:

/design/backend/mail/templates/orders/invoce.tpl

Добавляем строку после строки 123 (ну или где вам удобно):

{*Емаил покупателя*} {if $order_info.email}<p style="margin: 2px 0px 3px 0px;"> <a href="mailto:{$order_info.email}"/> {$order_info.email}</a></p>{/if}

И ВУАЛЯ — в инвойсе присутствует емаил клиента… Непонятно почему его там нет по умолчанию.

cs-cart

Добавление обязательного поля email в addon отзывы о товаре cs-cart

Сначала открываем файлы фронтэнда (товара):

/design/themes/responsive/templates/addons/discussion/views/discussion/components/new_post.tpl

Добавляем в него поле емаила с лэйблом и валидацией:

<label for=»dsc_email_{$obj_prefix}{$obj_id}» class=»ty-control-group__title cm-required»>{__(«your_email»)}</label>
<input type = «email» id=»dsc_name_{$obj_prefix}{$obj_id}» name=»post_data[email]» value=»{if $auth.user_id}{$user_info.firstname} {$user_info.email}{$user_info.lastname}{elseif $discussion.post_data.name}{$discussion.post_data.name} {$discussion.post_data.email}{/if}» size=»50″ class=»ty-input-text-large» />

Добавляем в БД (cscart_discussion_posts) столбец email:

ALTER TABLE `cscart_discussion_posts`
ADD COLUMN `email` VARCHAR(50) NOT NULL DEFAULT » AFTER `status`;

Теперь добавляем вывод емайла в бэкэнде. Открываем:

/design/backend/templates/addons/discussion/views/discussion_manager/components/post.tpl

И добавляем в нужное место (я добавил сразу после первого текстового инпута):

{$post.email}

Вуаля — теперь при оставлении комментария на товар будет возможность связаться с клиентом. Также можно добавить и телефон и т д. В данном примере нет отправки этих данных на емейл.