Всего 125 982 комментария

Илья Уткин
11 декабря 2021, 08:29
+2
Это все, конечно красиво и на первый взгляд просто. До тех пор, пока не появится необходимость скрывать запрещённые страницы из вывода pdoResources или pdoMenu. Тогда начинаются всякие странные выборки, условия и прочее.
Дима Сайт old см. профиль
10 декабря 2021, 20:02
+2
Норм прозвучало. Молодцы все!

Стыдно признаться, но не доходили руки тестить, потому что без pdoTools настоящий никакой проект не поднять, а голую установку MODX 3 тестить как-то грустно)

И как раз выходные впереди… кажется, настало время!

Спасибо за обновки
Евгений Лазарев
10 декабря 2021, 18:20
0
Вроде подходит, только какой то плагин устаревший нужно подключать, намучился я с ним и бросил эту затею.
Николай Савин
10 декабря 2021, 15:51
0
Здравствуйте. Нет такого не предусмотрено.
Виктор
10 декабря 2021, 15:50
0
Николай, приветствую! Вопрос по возможностям модуля.
Если в CRM меняем остатки товара, то на сайте в модификациях msOptionsPrice они изменятся? Такая синхронизация поддерживается?
Vladimir
10 декабря 2021, 15:09
+1
В типах есть файл, и изображение, но там так же открывается файловый менеджер.
Vladimir
10 декабря 2021, 15:07
0
как я писал выше, что .html я убрал изначально.

htaccess такой
RewriteEngine On
RewriteBase /


# Prevent dot directories (hidden directories like .git) to be exposed to the public
# Except for the .well-known directory used by LetsEncrypt a.o
RewriteRule "/\.|^\.(?!well-known/)" - [F]

RewriteCond %{THE_REQUEST} //
   # Проверяем, повторяется ли слеш (//) более двух раз.
RewriteRule .* /$0 [R=301,L]
   # Исключаем все лишние слеши.

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]





RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.*$ $0.html [L,QSA]
RewriteCond %{THE_REQUEST} ([^\s]*)\.html
RewriteRule (.*) %1 [R=301,L]


RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]


RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]



AddEncoding gzip .jgz

#add support gzip JavaScript
RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.jgz -f
RewriteRule (.*)\.js$ $1\.js.jgz [L]
AddType "text/javascript" .js.jgz

#add support gzip CSS
RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.jgz -f
RewriteRule (.*)\.js$ $1\.css.jgz [L]
AddType "text/css" .css.jgz
AddEncoding gzip .jgz


RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (?i)(.*)(\.jpe?g|\.png)$
RewriteCond %{DOCUMENT_ROOT}%1.webp -f
RewriteRule (?i)(.*)(\.jpe?g|\.png)$ %1\.webp [L,T=image/webp,R]


Header append Vary Accept env=REDIRECT_accept

AddType image/webp .webp


ExpiresActive On

BrowserMatch "MSIE" brokenvary=1
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary
# BROWSER CACHING USING EXPIRES HEADERS
<IfModule mod_expires.c>
    ExpiresActive On
  
    # Images
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType image/webp "access plus 1 year"
    ExpiresByType image/svg+xml "access plus 1 year"
    ExpiresByType image/x-icon "access plus 1 year"
  
    # Video
    ExpiresByType video/mp4 "access plus 1 year"
    ExpiresByType video/mpeg "access plus 1 year"

    # CSS, JavaScript
    ExpiresByType text/css "access plus 1 week"
    ExpiresByType text/javascript "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"

    # Others
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>

<IfModule mod_deflate.c>
  # Compress HTML, CSS, JavaScript, Text, XML and fonts
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

# BROWSER CACHING USING CACHE-CONTROL HEADERS
<ifModule mod_headers.c> 
    # One year for image and video files
    <filesMatch ".(flv|gif|ico|jpg|jpeg|mp4|mpeg|png|svg|swf|webp|ttf|woff|eot)$">
        Header set Cache-Control "max-age=31536000, public"
    </filesMatch>

    # One month for JavaScript and PDF files
    <filesMatch ".(js|pdf)$">
        Header set Cache-Control "max-age=2592000, public"
    </filesMatch>

    # One week for CSS files
    <filesMatch ".(css)$">
        Header set Cache-Control "max-age=604800, public"
    </filesMatch>
</ifModule>
Сергей Шлоков
10 декабря 2021, 12:44
0
Информация для понимания механизма парсинга.
max
max
10 декабря 2021, 12:40
+1
Пробовал. То же самое.

В content index.html
{'!pdoResources' | snippet : [
    'tpl' => 'ChildContent',
    'includeContent' => 1
]}
В чанке ChildContent:
{$content}
В дочернем ресурсе child.html (родитель index.html):
{1 | resource : 'pagetitle'}
Захожу на index.html — вижу
{1 | resource : 'pagetitle'}
. Захожу на child.html — вижу как и ожидалось заголовок ресурса 1
Наумов Алексей
10 декабря 2021, 12:31
0
Подозреваю что стоит попробовать уйти от @INLINE к обычному чанку.
Сергей Шлоков
10 декабря 2021, 07:28
+5
Спасибо за добрые слова! Но ради справедливости хочу сказать, что в нашем RU-сообществе контрибьютеров MODX есть люди, вклад которых не меньше (а то и больше) значителен. Ведь важно не только писать код. Важно всё. И умение организовать и мотивировать других. И поправить лексиконы или CSS класс. И даже просто подсказать правильный инструмент для работы.

Немного пафосно прозвучало, да? %)
Raimei
09 декабря 2021, 16:17
+3
Хорошая идея. Скинул на кружку провинциального, но вкусного кофе.
Павел Бигель
09 декабря 2021, 16:13
+5
Предлагаю скинуться по рублю данному товарищу так как без его работы MODX 3 в принципе мог бы и не выходить
Роман
09 декабря 2021, 15:49
-1
/manager/?a=system/contenttype
Тип содержимого, нужно посмотреть, что там в типе text/html
А так скорее всего не правильные настройки в htaccess
Сергей Шлоков
09 декабря 2021, 15:24
+7
Поправил. Спасибо!
Банальная опечатка. Вместо $modx->services написал $modx->service.
Наумов Алексей
09 декабря 2021, 15:04
+4
Что-то не так…
При очистке кеша вижу в консоли:
Консоль запущена…
PHP notice: Undefined property: MODX\Revolution\modX::$service
и все…

Ошибка в плагине pdoTools (id = 1):

PHP notice: Undefined property: MODX\Revolution\modX::$service


Fatal error:  Uncaught Error: Call to a member function get() on null in /var/www/modx3beta2/www/core/cache/includes/elements/modx/revolution/modplugin/1.include.cache.php:7
Stack trace:
#0 /var/www/modx3beta2/www/core/src/Revolution/modScript.php(88): include()
#1 /var/www/modx3beta2/www/core/src/Revolution/modX.php(1706): MODX\Revolution\modScript->process()
#2 /var/www/modx3beta2/www/core/src/Revolution/Processors/System/ClearCache.php(48): MODX\Revolution\modX->invokeEvent()
#3 /var/www/modx3beta2/www/core/src/Revolution/Processors/Processor.php(189): MODX\Revolution\Processors\System\ClearCache->process()
#4 /var/www/modx3beta2/www/core/src/Revolution/modX.php(1771): MODX\Revolution\Processors\Processor->run()
#5 /var/www/modx3beta2/www/_easyComm/_build/build.transport.php(394): MODX\Revolution\modX->runProcessor()
#6 {main}
  thrown in /var/www/modx3beta2/www/core/cache/includes/elements/modx/revolution/modplugin/1.include.cache.php on line 7
Наумов Алексей
09 декабря 2021, 14:35
+2
Отличная работа!
Поставил для теста, вроде работает)))