Sphinx

Sphinx

С нами с 12 января 2015; Место в рейтинге пользователей: #351

Закалка MODX Revolution (перевод)

Своего писать я пока сомневаюсь, уровень не тот, а вот перевести полезную статью с официальной документации — это с удовольствием. Перевод местами может показаться несколько вольным, что касается формулировок, — иначе переводить скучно. Но в том, что касается технических деталей, старался быть дотошно точным. Так что, если найдёте технические неточности — ругайтесь в комментах. А на филологию прошу не жаловаться:) И тем более на идеологические расхождения с Вашим мировоззрением — тут все вопросы к авторам доков. Паранойи и почвы для громких споров среди «экспертов по безопасности» в статье предостаточно. Помни, о читатель, всё это касается в первую очередь важных и заметных проектов.
Добро пожаловать под кат.
mngatoff
15 февраля 2016, 02:03
modx.pro
62
22 106
+13

Скрываем config.core.php

Я давненько на своих сайтах меняю адрес админки и папки /connectors/

Мне нравится, что MODX позволяет это делать и очень сложно обнаружить, что сайт работает на нём. Но тут Николай Ланец смутил меня тем, что MODX можно определить еще и по файлу /config.core.php в корне. Да, он не выдаёт никакой информации, но показывает белый экран, а веб-сервер отдаёт ответ 200.
Илья Уткин
13 февраля 2016, 14:56
modx.pro
30
13 193
+5

pdoFetch поиск в TV-полях с разделителем ||

Наверняка много кто использовал в своей практике TV-поля типа «Список» (множественный, одиночный, не важно) или «Тег». Здесь важно именно то, в каком виде в базе данных хранятся данные таких полей, ведь они сохраняют множественные значения. А хранят они их одной общей строкой в той же самой таблице ТВшек (естественно, по одной записи на один документ). К примеру, если мы отметили три значения 100, 1005, 10, в БД это запишется 100||1005||10. И здесь возникает вопрос как потом выполнить поиск по таким полям? Простой LIKE здесь не поможет, так как LIKE %100%, к примеру, найдет и '100||1000' и '1001||1005'. Данного вопроса мы уже касались здесь и подобный вопрос опять возник здесь.
Fi1osof
06 декабря 2015, 10:14
modx.pro
37
6 358
+16

Упрощаем работу с TV

Продолжая тему, начатую Василием, предлагаю решение для упрощения работы с TV. Оно поможет тем, у кого логика сайта завязана на TV — запросы, фильтры и т.п.
Решается эта задача созданием полей в таблице ресурсов и копированием в них значений TV.
Сергей Шлоков
02 декабря 2015, 09:18
modx.pro
49
8 212
+7

Сборка transport-пакета без установки MODX



Писать свои пакеты для MODX не просто для новичка, да и опытному разработчику иногда не сладко приходится. Но новичок пугается, а опытный разбирается :).

Эта заметка рассказывает о том, как можно написать и собрать пакет компонента для MODX без установки и настройки самого MODX. Уровень выше среднего, так что возможно придется поломать голову в отдельных случаях, но оно того стоит.

За подробностями прошу под кат.

Іван Клімчук
08 октября 2015, 22:53
modx.pro
21
7 997
+11

[pdoTools] Версия 2.1 - улучшения Fenom

Привет друзья! Хочу представить вам новую версию pdoTools с улучшениями работы шаблонизатора Fenom.

Функциональность vs Безопасность

Я долго думал, как бы разрешить менеджерам запускать чанки и сниппеты, но при этом не пускать их к объектам MODX. Потому что, если включить системную настройку pdotools_fenom_modx, то любой менеджер сможет сделать в чанке вот так:
{if $res = $modx->getObject('modResource', 1)}
	$res->remove();
{/if}
Нам бы этого не хотелось, правда?

С другой стороны, я не хочу придумывать очередной псевдоязык команд, типа
{runSnippet('name', [params => data])}
или
{'name' [params => data] | snippet}
Поэтому я добавил специальную переменную {$_modx}, которая ссылается на небольшой безопасный класс, где есть только нужные менеджерам функции и свойства:
  • {$_modx->placeholders} — массив с системными плейсхолдерами
  • {$_modx->config} — массив с системными настройками
  • {$_modx->context} — массив (не объект!) с текущим контекстом
  • {$_modx->user} — массив (не объект!) с текущим пользователем
  • {$_modx->resource} — массив (не объект!) с текущим ресурсом
  • {$_modx->lexicon} — служба загрузки лексиконов
  • {$_modx->lexicon()} — функция для вывода строки из лексикона
  • {$_modx->runSnippet()} — запуск сниппета
  • {$_modx->runProcessor()} — запуск процессора
  • {$_modx->getChunk()} — вывод чанка
  • и т.д., смотрите исходник.
Василий Наумкин
09 августа 2015, 12:17
modx.pro
13
12 311
+11

Сниппет Declension для склонения слов

Предлагаю вашему вниманию небольшой сниппет для вывода склонения. Работает как фильтр вывода, использовать нужно примерно так:
[[+balls]] [[+balls:declension=`балл,балла,баллов`]]

Как видите, он применяется к любым тегам с числами, а в options нужно указать три формы слова (1 яблоко, 2 яблока и 10 яблок) для русского, или 2 (1 ticket, 2 tickets) для английского.

Для экспериментов можно повызывать сниппет с произвольными числами:
15 [[*id:input=`15`:declension=`яблоко,яблока,яблок`]]
Полный код под катом.
Василий Наумкин
22 января 2015, 06:44
modx.pro
28
7 660
+15

как правильно реализовать link rel="canonical"?

Кто-то у себя использует? Как реализуете?
Я думал просто использовать сниппет, типа:
if ($modx->resource->id == $modx->getOption('site_start'))
{
	return '<link rel="canonical" href="[[++site_url]]">';
}

return '<link rel="canonical" href="[[++site_url]][[~[[*id]]]]">';
но проблема с постраничной навигацией. Как мне из этого сниппета узнать, что на данной странице действительно есть постраничная навигация, а не просто в урл дописали page=999?
Использую pdoPage
Дмитрий Иванов
18 января 2015, 15:10
modx.pro
2
15 156
0

Структурированный список в tv-параметре

Здравствуйте!
Подскажите пожалуйста, как сделать в тв-параметре структурированный по ресурсам выпадающий список?
Необходимо, чтобы выпадащий список выглядел так:
Категория 1
— Параметр 1
— Параметр 2
Категория 2
— Параметр 3
— Параметр 4

Нашел пример, как вывести просто список ресурсов:
@EVAL return $modx->runSnippet('getResources',array('parents'=>5,'depth'=>3,'limit'=>0,'where'=>'{"isfolder:=":1}','sortby'=>'{"pagetitle":"ASC"}','tpl'=>'@INLINE [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));
Но результат выглядит не совсем правильно:
Категория 1
Категория 2
Параметр 1
Параметр 2
Параметр 3
Параметр 4
Sphinx
12 января 2015, 07:00
modx.pro
3
3 977
0

Автоматическая генерация оглавления страницы

На днях появился вопрос об автоматическом создании оглавления статьи, а позже где-то проскочил комментарий, мол неплохо бы такое добавить на docs.modx.pro — там же все документы хорошо структурированы.

И действительно, а почему бы не добавить? Выделил полчасика и набросал сниппет makeContents, который генерирует вот такое оглавление:
Василий Наумкин
09 декабря 2014, 08:57
modx.pro
42
6 951
+3