Всего 125 560 комментариев

Ян Такушевич
03 марта 2013, 10:20
0
Чтобы для каждого конкретного случая не писать отдельный сниппет, можно использовать switch: modx.com/extras/package/switch
Богдан
03 марта 2013, 10:11
0
Для Apache можно добавить в .htaccess:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.(htm(l)?|php)\ HTTP/
RewriteRule ^(([^/]+/)*)index\.(htm(l)?|php)$ http://mysitename\.com/$1 [R=301,L]
Эффект тот же.
Василий Наумкин
03 марта 2013, 08:33
0
Есть одна проблема: wget добавляет index.html для контеёнеров и получает 404.

Если ты используешь Nginx — то добавь своему сайту правило
location ~ ^\/(.*?)\/index\.(html|php)$ {
	rewrite	^\/(.*?)\/ /$1/ permanent;
}
Василий Наумкин
03 марта 2013, 08:05
0
Немного почитал еще маны и вот итоговая команда:
wget -m -np -nv --spider -l 10 http://sitename.ru/
Здесь wget работает в режиме «паука» и просто дёргает страницы, не загружая их.

Еще можно еще придумать скрипт, который будет одновременно запускать несколько копий wget, направленных на разные разделы сайта для ускоренной генерации кэша.

Полезный параметр -l 10 ограничивает глубину выборки ссылок, его можно уменьшить, для скорости.
Богдан
03 марта 2013, 07:53
0
Спасибо, Василий! Отличное простое решение.
Василий Наумкин
03 марта 2013, 07:49
0
Лично у меня только один вариант — консольный скрипт с wget, который пробежит по всем страницам и закачает их, генерируя тем самым кэш.
wget -m -np -nv -A .html http://sitename.ru/ > /dev/null

Это не быстро, но гарантированно загонит в кэш ВСЕ страницы, которые доступны по ссылкам. То есть, даже динамические, типа вывода каталога с разбивкой на страницы.
Василий Наумкин
03 марта 2013, 06:49
0
Спасибо за подтверждение, добавил в документацию.
Василий Краковецкий
03 марта 2013, 04:16
0
Окак, не знал… Хотя в нашем случае это не особо бы повлияло на результат, но замечание действительно полезное!
Andrey Grachov
03 марта 2013, 04:14
0
Потому что при использовании LIKE знак подчеркивания является служебным символом (как и %) и означает, что на его месте может стоять один любой символ.
Василий Краковецкий
03 марта 2013, 03:50
0
Что заэкранировать? Если мы получаем айдишник от пользователя с фронтеда, и он является числом, то достаточно прописать
$id = (int) $_GET['id_from_user'];
а в остальных случаях модикс прекрасно обо всем позаботится.
Или вы про знак подчеркивания? А его, простите, зачем экранировать?
Andrey Grachov
02 марта 2013, 23:39
0
Только не забыть заэкранировать _ :)
Иван Бондаренко
02 марта 2013, 23:16
0
Спасибо за этот комментарий. Несколько часов пытался дать ума HybridAuth на MODX Cloud. Вылезала надпись «You cannot access this page directly». Добавил по вашему совету эту строку и о чудо! Все работает!
Василий Краковецкий
02 марта 2013, 21:35
0
Чето типо того:
$query = '"c_id":"18"';
$c = $modx->newObject('modUser');
$c->innerJoin ('modUserProfile','Profile');
$c->where(array('Profile.extended:LIKE' => '%'.$query.'%'));
$users = $modx->getCollection('modUser',$c);
там все в json хранится
Константин Баранов
02 марта 2013, 20:01
0
первый вариант хотел использовать, второй для ситуации тоже подходит, спасибо
Вячеслав Серков
02 марта 2013, 19:43
0
Если не ошибаюсь, то состояние корзины записывается в cookies, возможно еще в сессию, которая так же хранится в бд
alex cernobai
02 марта 2013, 16:21
0
а если просто использовать такую конструкцию?
[[$[[*context_key]]-company-name]]
для дефолтного контектста нужно в название чанка добавить префикс.
Василий Наумкин
02 марта 2013, 16:10
1
0
Не нужно так делать. Для логики нужно писать сниппеты, а не программировать на фильтрах.

switch ($modx->context->key) {
	case 'en' : $chunk = 'en-company-name'; break;
	case 'de' : $chunk = 'de-company-name'; break;
	default: $chunk = 'company-name'; break;
}
return $modx->getChunk($chunk);

И выглядит понятнее, и работает быстрее, и добавить еще 10 условий\проверок — не вопрос.
Константин Баранов
02 марта 2013, 15:47
0
подобрал такой извращ-й вариант:
[[!context:is=`en`:then=`[[$en-company-name]]`:else=`[[!context:is=`de`:then=`[[$de-company-name]]`:else=`[[$company-name]]`]]`
]]
Данил
02 марта 2013, 12:47
0
Кстати, чтобы поддерживать CKEditor или редактор с подсветкой, когда use_editor выставлена в true, нужно пытаться использовать x-типы modx-htmleditor и modx-texteditor:
if (MODx.config['use_editor'] == true) {
    if (Ext.ComponentMgr.isRegistered('modx-htmleditor')){
        // ckeditor
        MODx.load({xtype: 'modx-htmleditor'});
    } else {
        // tinymce
    }
} else {
    if (Ext.ComponentMgr.isRegistered('modx-texteditor')) {
        // ace
        MODx.load({xtype: 'modx-texteditor', mimeType: 'text/html'});
    } else {
        // codemirror
    }
}
Денис Богдановский
02 марта 2013, 11:25
0
Наконец то разобрался… всем ламерам (включая меня) на заметку :)

В самом начале, при создании проекта на Google Api's console, на странице Create Client ID будьте внимательны при указании протокола сайта, я случайно указал https. После удалении проекта и создании заново с протоколом http все заработало.

Прикол, в том что после создания проекта манипуляции с изменением протокола через Edit setting… и генерацией новых ключей ни к чему не приведут.