Пару модификаторов для MODX
Модификатор телефонного номера
К примеру нам нужно вывести телефонный номер в формате: +7 (900) 2000 600 и так чтобы он нажимался как ссылка для запуска на устройствахНо так как плейсхолдер всего один [[++phone]]
Создаем сниппет phone c содержимым
<?php
if (!empty($input)) {
    $input = preg_replace("/[^0-9]/", '', $input);    
}
return $input;И в шаблон где нужно вывести телефонный номер вставляем
<a href="tel:+[[++phone:phone]]">[[++phone]]</a>Результат:<a href="tel:+79002000600">+7 (900) 2000 600</a>Модификатор проверка существования файла
Бывает что необходимо выводить файл из тв параметра или какого другова поля. Но как обычно менеджеры забивают на это дело и ничего не вводят. И получается что на сайт отображается битая картинка.Для решения этой проблемы можно использовать модификатор.
Создаем сниппет file_exists с содержимым
<?php
/** @var array $scriptProperties */
if (file_exists(MODX_BASE_PATH.$input)) {
      return $input;
}
return  $modx->getOption('default', $scriptProperties, '/assets/components/minishop2/img/web/ms2_big.png');И в шаблоне где мы выводим картинку делаем так<img src="[[+images:file_exists]]" >Получится что в итоге вернется изображение по умолчанию<img src="/assets/components/minishop2/img/web/ms2_big.png" >    
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 27
Модификатор телефонного номераможно же 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>            
                Ну это для продвинутых)))            
                    
                Объясните, пожалуйста, где и как этот телефонный модификатор использовать.
Везде где есть телефон я просто прописываю в таком формате
                    Везде где есть телефон я просто прописываю в таком формате
<a href="tel:+79002000600">+7 (900) 2000 600</a>Это же делается всего один раз на сайт и какой смысл лишний раз нагружать сервер.            
                А каким образом контент-менеджер сможет изменить этот номер?
Такие данные лучше всегда выносить в настройки.
А вот тут то и пригодится модификатор для телефонного номера, ведь не будете вы делать две настройки — номер чтобы показать человеку и номер чтобы скормить протоколу tel для ссылки
                    Такие данные лучше всегда выносить в настройки.
А вот тут то и пригодится модификатор для телефонного номера, ведь не будете вы делать две настройки — номер чтобы показать человеку и номер чтобы скормить протоколу tel для ссылки
                ClientConfig когда используется создается плейсхолдер [[++phone]]            
                    
                Я отвечал Фариду, на его вопрос зачем это нужно все, ведь можно просто вписать телефоны в html код            
                    
                А если заказчик захочет телефон поменять, в шаблон полезет? )))            
                    
                А почему для файла не использовать условие? Например если его нет, то выводить дефолтное изображение?
И не надо никаких сниппетов создавать.
                    И не надо никаких сниппетов создавать.
{if $image}
    <img src="{$image}" alt="">
    {else}
    <img src="assets/images/no-image.png" alt="">
  {/if}А с телефоном я делаю так<a href="tel:{'phone'|config}">{'phone'|config}</a>            {if $image}
....Проверяет не существование файла а содиржится ли что либо в переменной.            
                Ну а зачем проверять есть ли картинка, если менеджеры забивают на загрузку изображения, я что-то не понимаю.            
                    
                Ну менеджеры всяко умею косячить, могу просто файл удалить или переместить. 
в общем применений несколько.
Так же картинка по умолчанию может устанавливатся при этом модификаторе
                    в общем применений несколько.
Так же картинка по умолчанию может устанавливатся при этом модификаторе
                На самом деле такие проблемы можно решать миллионом способов, но ты все равно молодец, кому-то может так удобнее будет.            
                    
                Да я просто для себя этот метод открыл вчера, чтобы в код не лазить, когда нету возможности использовать fenom            
                    
                Погодите, а что я не правильно тогда делаю?
ClientConfig создаю настройку телефон с именем phone, и потом вывожу в шаблоне где должен быть номер {‘phone’ | config} а в clientconfig пишу номер. И везде номер добавляется вроде
                    ClientConfig создаю настройку телефон с именем phone, и потом вывожу в шаблоне где должен быть номер {‘phone’ | config} а в clientconfig пишу номер. И везде номер добавляется вроде
                Во первый вы используете fenom
Во вторых для феном надо писать {$modx->config.phone}
В третьих {$modx->config.phone | phone}
                    Во вторых для феном надо писать {$modx->config.phone}
В третьих {$modx->config.phone | phone}
                ))) я просто в метро писал на коленях)))
Вопрос в правильности действий?!
                    Вопрос в правильности действий?!
                Повторите в чем вопрос?            
                    
                1)Добавил в clientconfig поле номера телефона с именем vasya.
2)Где в шаблоне предусмотрен телефон вставляю код clientconfig с именем роля номера телефона vasya ( синтаксис пока опустим )
3) записываю телефонный номер в настройках clientconfig
Вуаля телефон отображается на сайте.
Вопрос: правильно ли я делаю, и для чего плагин если так работает.
Ваш плагин и смутил меня в правильности моих действий…
                    2)Где в шаблоне предусмотрен телефон вставляю код clientconfig с именем роля номера телефона vasya ( синтаксис пока опустим )
3) записываю телефонный номер в настройках clientconfig
Вуаля телефон отображается на сайте.
Вопрос: правильно ли я делаю, и для чего плагин если так работает.
Ваш плагин и смутил меня в правильности моих действий…
                Видимо заметку надо заново прочесть.
Загадка такая: как из одного плейсхолдера получить два разных телефонных номера:
                    Загадка такая: как из одного плейсхолдера получить два разных телефонных номера:
<a href="tel:+79002000600">+7 (900) 2000 600</a>            
                Видимо не моего ума дело)) прочёл не понял))            
                    
                А что там пробовать? 
В ClientConfig создан phone?
Если нет, то надо создать.
И на страницу вставь:
                    В ClientConfig создан phone?
Если нет, то надо создать.
И на страницу вставь:
<a href="tel:+[[++phone:phone]]">[[++phone]]</a>Увидешь что будет            
                Ок попробую            
                    
                У тебя телефон выводиться: вот так +7 (900) 100 10-10
Дак вот этот модификатор это и делает
                    <a href="tel:+СЮДА ДОЛЖЕН ПОПАСТЬ ОТФОРМАТИРОВАНЫЙ ТЕЛЕФОН"></a>Без всяких тире, плюсов и скобок.Дак вот этот модификатор это и делает
// Выведет чистый телефон в формате: 79001001010
[[++phone:phone]]Зачем tel: знаешь?            
                Столько комментариев из-за 2-ух модификаторов?!))            
                    
                Сам не ожидал) вроде из описание все понятно            
                    
                Если я не ошибаюсь, то на старых айфонах tel:+7 заменяется на tel:7 и приводит к ошибке в номере.            
                    
                Спасибо! Небольшой, но полезный материал.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.