Сергей Водолагин

Сергей Водолагин

С нами с 22 марта 2014; Место в рейтинге пользователей: #200
Николай Савин
06 августа 2025, 09:17
2
+1
То, что ты нашел в принципе актуально. Так и делают.
Попробуй вот такой конфиг

server {
    listen 80;
    server_name example.com www.example.com;
    root /home/sites/example.com;
    index index.php;
    client_max_body_size 30M;
    
    # Новый блок для статических файлов с кешированием
    location ~* \.(jpg|jpeg|gif|png|svg|ico|pdf|mp4|webm|ogg|mp3|wav|ttf|otf|woff|woff2|eot)$ {
        # Срок действия кеша в браузере (аналог Expires в Apache)
        expires 1M; # access plus 1 month
        
        # Заголовок для указания, что кеш публичный (аналог Header append Cache-Control "public")
        add_header Cache-Control "public";
    }

    # Отдельный блок для CSS, JS (у них у вас срок больше)
    location ~* \.(css|js)$ {
        expires 2M; # access plus 2 months
        add_header Cache-Control "public";
    }

    location / {
        root /home/sites/example.com;
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php?q=$1 last;
        }
    }
    
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_ignore_client_abort on;
        fastcgi_param  SERVER_NAME $http_host;
    }

    # Правило для запрета доступа к файлам Apache
    location ~ /\.ht {
        deny  all;
    }
}
Евгений Webinmd
14 мая 2025, 23:44
2
+1
У меня tinymcerte
Для него делал следующим образом:

1) В системных настройках (tinymcerte.plugins) в список плагинов редактора добавил свой myButtons

2) создал папку myButtons и файл внутри

assets/components/tinymcerte/js/vendor/tinymce/plugins/myButtons/plugin.min.js

В самом файле следующий код.
Оставил добавление двух видов, кнопку и ссылку

tinymce.PluginManager.add('myButtons', function (editor, url) {

    // Add a button that opens a window
    editor.addButton('myButtonLink', {
        text: 'Кнопка ссылка',
        icon: false,
        onclick: function () {
            // Open window
            editor.windowManager.open({
                title: 'Параметры кнопки',
                minWidth: 500,
                body: [
                    {
                        type: 'textbox',
                        name: 'btnlink',
                        label: 'Ссылка',
                        tooltip: 'Если это ресурс на сайте, то указывать так: [[~33]] : где 33 - id ресурса/товара',
                    },
                    {
                        type: 'textbox',
                        name: 'btntext',
                        label: 'Текст на кнопке',
                        tooltip: '',
                    },
                    {
                        type: 'listbox',  
                        name: 'btnclass',  
                        label: 'Вид кнопки', 
                        values: [
                            { text: 'Зеленая', value: 'btn-green' },
                            { text: 'Синяя', value: 'btn-blue' }
                        ]
                    }
                ],
                onsubmit: function (e) { 
                    if (!e.data.btnlink) {  
                        alert('Укажите ссылку для кнопки!');
                        return false;
                    }    
                    editor.insertContent('<a href="'+e.data.btnlink+'" class="btn btn-middle '+e.data.btnclass+'">'+e.data.btntext+'</a>');
                }
            });
        }
    });


    // Написать нам
    editor.addButton('myButtonScribeUs', {
        text: 'Написать нам',
        icon: false,
        onclick: function () { 
            editor.insertContent('<button type="button" class="btn btn-dark btn-middle" data-toggle="modal" data-target="#write-us" data-tab="0">Написать нам</button>'); 
        }
    });

});

Как это выглядит по итогу

Sergey (Sentinel)
07 декабря 2018, 09:56
2
+3
Модификатор телефонного номера
можно же fenom
{var $app_mobile = 'phone'|option}
 {var $app_mobile_clear = $app_mobile|preg_replace:'/[^0-9]|/': ''}
Результат:
<a href="tel:+{$app_mobile_clear}">{'phone'|option}</a>
Рамис Хамидуллин
10 августа 2018, 23:25
1
+1
1. Использовать в формах
<input type="submit">
вместо
<buttom></button>
2. В параметрах вызова формы указать уникальный submitVar
&submitVar=`mySubmitVar`
для каждой формы

3. Значение submitVar вставить в
<input type="submit" name="mySubmitVar">
.
Максим
21 февраля 2018, 14:09
2
0
Тогда вот пример сортировки по нескольким полям:
'sortby' => '{"Data.popular":"desc","Data.new":"asc"}'

И where тут совсем не при чем.
Максим
21 февраля 2018, 13:24
2
0
Ну как-то так:
'where' => '{"Data.popular:=":1, "OR:Data.new:=":1}'
Или так:
'where' => ["Data.popular:=":1, "Data.new:=":1]
Андрей
06 февраля 2018, 16:40
3
+3
{'pdoResources' | snippet : ['class' => 'msDelivery', 'sortby' => 'id','where' => 'active = 1','tpl'=>'']}

Пустой tpl отдаст массив с доступными плейсхолдерами, там уже оформляйте как нужно. Со способами оплаты не пробовал, но думаю что по аналогии, указать class — msPayment.
Михаил
01 февраля 2018, 15:18
2
+2
{var $result = '!pdoPage' | snippet : [
'ajaxMode' => 'default',
'sortby' => 'id',
'sortdir' => 'ASC',
'includeTVs' => 'size,area,image1,pro,price1',
'tpl' => 'projectcard',
'limit' => 15,
'tvPrefix' => '',
'where' => '["`TVprice1`.`value` BETWEEN 501 and 999"]',
'tplPageWrapper' => '@INLINE <nav aria-label="Page navigation"><ul class="pagination  justify-content-center">{$prev}{$pages}{$next}</ul></nav>',
'tplPage' => '@INLINE <li class="page-item"><a class="page-link" href="{$href}">{$pageNo}</a></li>',
'tplPageActive' => '@INLINE <li class="page-item active"><a class="page-link" href="{$href}">{$pageNo}</a></li>',
'tplPagePrev' => '@INLINE <li rel="prev"><a class="page-link" href="{$href}">« Назад</a></li>',
'tplPageNext' => '@INLINE <li rel="next"><a class="page-link" href="{$href}">Дальше »</a></li>',
'tplPagePrevEmpty' => '@INLINE ',
'tplPageNextEmpty' => '@INLINE ',
'ajaxElemWrapper' => '#child_list',
'ajaxElemRows' => '#child_list .rows',
'ajaxElemPagination' => '#child_list .pagination',
'ajaxElemLink' => '#child_list .pagination a',
]}

{if $result}
	{$result}
{else}
Тут пустой результат
{/if}
Klike
20 октября 2017, 20:51
1
+1
Да, Павел чуть опередил, то же самое хотел написать, вот конкретный пример, только без присоединения TV полей:

[[pdoResources?
        	&parents=`0`
        	&resources=`12,5,2,9,1`
        	&tpl=`tpl.Menu`
        	&tplWrapper=`@INLINE <ul>[[+output]]</ul>`
        	&sortby=`resources`
        ]]
tpl.Menu (вариант с Fenom)
{if $id == ''|resource:'id'}
    {set $active = 'active'}
{/if}
<li class="{$active}"><a class="{$active}" href="{$uri}">{$pagetitle}</a></li>
ck
ck
24 мая 2017, 11:27
1
0
Спасибо! С mixedimage нужно будет познакомиться.
По FastUploadTV решение такое. Для TV, которое используется в FastUploadTV выставить:
— Параметры ввода — Путь сохранения — assets/manager/images/{d}-{m}-{y}/
— Источники файлов — Источник — Manager