Пару модификаторов для 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 и приводит к ошибке в номере.
Спасибо! Небольшой, но полезный материал.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.