0.00
94 читателя, 63 топика

Сниппет для получения всякой информации о пользователе

Делал как-то для tiptop , может еще кому пригодится: https://github.com/Pathologic/userEnv. С помощью сниппета можно получить такие данные: IP, браузер, географические данные (страна, регион, город, координаты). Для получения геоданных используется база Sypex Geo City (UTF-8), базу нужно периодически обновлять.

Сниппет можно указать в параметре prepare или prepareProcess при вызове FormLister, тогда можно будет использовать плейсхолдеры [+env.ip+], [+env.browser+], [+env.country+], [+env.region+], [+env.city+], [+env.coords+].

Можно и как обычный сниппет вызвать, указав чанк в параметре &tpl. Плейсхолдеры будут без префикса env. Например:

[!
userEnv?
&tpl=`@CODE:Ваш IP: [+ip+]`
!]

Вывод даты создания, если дата публикации отсутствует

При переносе данных из Wordpress в EVO, столкнулся с такой проблемой – дата публикации для документа не указана. А в уже настроенных шаблонах что-то менять было лень. Кроме того, просто указывать в качестве даты документа — дату создания не всегда уместно – бывает отложенная публикация.
Так как вывод документов идёт через Doclister, добавляем prepare:
&prepare=`myDate`

Создаем сниппет myDate:
if ($data['pub_date'])
   $data['myDate'] = $data['pub_date'];
else
	$data['myDate'] = $data['createdon'];
return $data;

Соответственно, внутри шаблона Doclister указываем:
[+myDate:date=`%d.%m.%Y`+]


Возможно, существует более быстрое решение, но это первое, что пришло на ум.

Два виджета для ManagerManager

Написал два виджета для плагина ManagerManager.
Первый mm_setDefaultTab.
Виджет делает видимой вкладку ОБЩИЕ в случаи если активной вкладки нет. Такая ситуация может возникнуть когда в конфигурации сайта стоит галочка — «Запоминать вкладки» (мне очень удобно, всегда ставлю ДА) и создали свои вкладки с помощью mm_createTab назначенные для определенных шаблонов.
Для использования добавить строчку mm_setDefaultTab('tabGeneral', '', ''); в mm_rules. Добавлять надо после строк которые создают дополнительные табы.
Скачать mm_setDefaultTab

Второй mm_hideNameTvFields
Для использования добавлять mm_hideNameTvFields('список TV параметров', '', '');
Предназначен для своих custom TV параметров. Виджет скрывает ячейку таблицы в которой отображается название/описание TV параметра, когда я пишу свой custom TV параметр мне жалко это практически пустующие место.
Скачать mm_hideNameTvFields

Кастомные TV + JS: patternTV, colorsTV, tagsTV - добавление графических параметров

Здравствуйте!

Решение возможно незрелое и код корявенький, но для меня удобное и простое.
Так как не использую managermanager, и, соответственно виджеты — а необходимость ввода графических данных (параметров) TV сохраняется — появилось это решение.

GitHub https://github.com/maximlit/modxCustomTV

Базируется: CustomTV и JS без зависимостей.

Читать дальше →

ДЕЛАЕМ AJAX мать его так! :)

Требование: подключённый jquery.

Загружаем в наш DIV чё хотим. В примере id у DIV'а lalala.

Если подключён jquery, делаем:

<div id="#lalala" style="display: none;">
тут для поисковиков напишите что хотите, SEO'шникам ваще лафа.
</div>
<script>
$(document).ready(function() {
 $('.levajax').click(function(e){  //href class='levajax' data-levajax='divid'
   var href = this.href;
   var d = this.dataset.levajax; 
   $.ajax({
       url: href,
       type: 'GET',
       dataType: 'html',
       success: function(response) {
                 result = $(response).find(d);
                 $( d ).html(result);
                 $( d ).css('display','block'); //или inline как хошь
       }
   });
   return false; 
 });
</script>


и делаем где угодно, как пример:
<a href='что хошь' class='levajax' data-levajax="#lalala">
[+pagetitle+]
</a>


Главное, чтобы на странице был DIV с id, указанный в data-levajax и у ссылки класс был class='levajax'.

Meta Keywords

Берём все слова, из любых текстов и без сортировки по частоте появления в тексте, выводим их:

Сниппет [[getWords]]
Вызов: [[getWords? &text=`любой текст]]
Пример: [!getWords? &text=`[*pagetitle*] [*content*] [*мояTV*]`!]
Возвращает: тупо слова через запятую

Код сниппета:

$minlen=2; //Минимальная длина слова
$nowords=explode(",","звать,приглашать,принять,участие"); //Слова для исключения
$words=str_word_count($text, 1,"АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя");
foreach ($words as &$word) {
 if (mb_strlen($word)>$minlen && !in_array($word,$nowords)){
         $nm[]=mb_strtolower($word);
 }
}
$nm=array_unique($nm);
return @implode(",", $nm);


Для тех кто в танке или думает, что имеет значение какое место занимает слово, то добро пожаловать в факи яндекса и гугла — там ответ один — похрену что в мета тегах, мы рулим alt'ами изображений и совсем совсем чуточку учитываем ваши кейвордсы… причём иъ ждина нас не волнует.

MiltiPhotos и EVO 1.1 +

Не люблю старые решения но когда обновляешь сайты иногда приходиться с ними дружиться.

Тут уже спрашивали как исправить ситуацию с MultiPhotos.

Подсказали тут простой фикс, решил поделиться:)

Необходимо в настройках плагина просто заполнить все поля

не только список id но и роли (1,2,3) и список шаблонов после чего начинает работать :)
prnt.sc/czl0s4

правда еще превью не туда ссылается.

Пределываем paramEdit на multiTV

И так, суть состоит в том, чтобы избавится от phx и paramEdit и переделать все доп параметры товаров на multiTV.

И так начнем.
P.S. Если вы устанавливаете SHK из Extras. То там уже изменен нужный файлик для совместимости с multiTV.
github.com/extras-evolution/Shopkeeper/commit/928d54ac4ef167d7178535afedc866692d15ed4b
если же нет то рекомендую обновить, иначе работать не будет.

Теперь наш json из multiTV будет передаваться в корзину и выводится в плесхолдере
[+addit_data+]
Дальше на multiTV можно делать все что душе пожелается.

Далее на примере селекта переделаем наш paramEdit на multiTV
На странице товара вместо
[*size:shk_widget=`select:size:desc_page:first_selected`*]

Вставляем вызов multiTV с нужными классами, чтобы все работало на стандартном js шопкипера.

[[multiTV?
&tvName=`params`
&docid=`[*id*]`
&outerTpl=`@CODE:<select class="addparam" onchange="jQuery.additOpt(this)" name="params__[*id*]">((wrapper))</select>`
&rowTpl=`price-row`
&display=`all`
]]

Чанк price-row
<option value="[[if? &is=`[+iteration+]-1` &math=`on`]]__[+price+]" [[if? &is=`[+iteration+]-1:=:0` &then=`selected="selected"` &math=`on`]]>[+size+]</option>

теперь все работает из коробки с использованием multiTV, что дает нам гораздо больше гибкости, чем paramEdit


Единственный важный момент в данном способе в конфиге multiTV у Вас должны быть обязательно название полей size и price.

Уведомление о заказах в интернет- магазине на мобильный

Приветствую всех!
На днях дорабатывал свой модуль интернет-магазина TSVshop и думал о том, как лучше всего уведомлять менеджера магазина о новых заказах. Конечно, уведомление на электронный адрес — это обязательно. Но что, если человек не так часто сидит за компом? Лучший вариант — дублировать уведомления на мобильный.

Как сделать это без лишнего кодописания (ударение на букву А :) )? Вот придумал простейший и быстрый способ это сделать без единой строчки кода, без подключения разных смс-агрегаторов, без всяких плагинов-шмагинов.


Читать дальше →