+1.13
133 читателя, 228 топиков

Compare snippet v2.0

Сниппет-сравнялка для вашего сайта.


Готовое(почти) решение для вашего каталога\интернет-магазина.
Добавил класс, тыцнул на кнопочку и оп-ля — сравнялка готова =)

Новая версия старого сниппета. Не такой «дикий», и на много удобней старого.
Гибкая настройка каждого элемента сравнения, мультиязычность, поддержка горизонтальной\вертикальной верстки, удобная настройка списка тв полей.

Документация пока тут
Потом залью в docs.

Преимущеста
  • Быстрая установка и настройка.
  • Поддержка blang.
  • Поддержка горизонтальной(таблица) и вертикальной (блоки) верстки.
  • Удобная настройка списка тв полей для сравнения с возможностю задавать свои поля для разных категорий.
  • Группировка тв по категориям.
  • Подстановка значений из девера документов.
  • Возможность скрывать одинаковые параметры.


Чтобы сравнение работало в фронтенде досточно для кнопки или ссылки доабавить клас «to-compare» и атрибут «data-id» с id товара.
Пример:
<a class="to-compare" data-id="5">Добавить в сравнение</a>

Для елемента с количеством товаров в сравнении необходимо задать class=«compare-count»
Пример:
Количество товаров в сравнении
<div class="compare-count"></div>

После загрузки страницы скрипт пропишет клас «active» для елементов, которые уже есть в списке сравнения.

Вывода списка товаров

Для вывода списка товаров необходимо на странице вызвать сниппет compare

Конфигурация
Задать список тв полей для сравнения можно несколькими способами:
  • Перечислив их в параметре tvList
  • Задать в родительском документе в параметре multiTV «compare»
  • Задать в параметре «tvCategory» id категории тв параметров, через запятую

Пример:
[!compare?
    &showUniqueValues=`0` //выводим все свойста
    &layoutType=`vertical` // вертикальная верстка
    &ownerTpl=`@CODE:<ul class="compare-list js-compare-slider">[+wrapper+]</ul>`
    &blockOuter=`@CODE:<li class="compare-list__item">[+item+][+tvs+]</li>`
    &itemTpl=`tpl.compareItem`
    paramBlockOuter=`@CODE:<ul class="compare-list__descr">[+wrapper+]</ul>`
    paramTpl=`@CODE:<li class="compare-list__descr-item">
    <span class="compare-list__descr-title">[+name+]</span>
    <span class="compare-list__descr-info">[+value+]</span>
</li>`
!]

"Ctrl + f5 нажмите". Плагин EVO

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

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

Защита от спама без каптчи. Плагин.


В прошлом году я писал дополнение, которое проверяло наличие кириллицы в тексте отправляемых сообщений, и если не находило, то отправляло пользователя в вечный бан.
Дополнение отлично отправило несколько тысяч спамеров в бан на ряде моих проектов, но тем не менее, обычные, кириллические рассылки предлагающие взять кредит или увеличить половой орган, все равно проскакивают.

Посему малость дописал решение, используя веб-сервис Akismet. Он платный, но во-первых при больших объемах это не такие и большие деньги, а во-вторых там есть возможность подключить один сайт бесплатно на один аккаунт.

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

Пакет сео-плюшек для ленивых менеджеров



В который раз убеждаюсь, что у программистов мысли рождаются одинаково) Честно, не этот пост послужил отправной точкой для создания нижеследующего пакета) Реально параллельно мысли шли)

Вообщем решил собрать по сусекам все что у меня есть полезного и нужного для СЕО оптимизации и объединить в один пакет.

Что мы умеем?

  • Проставлять alt длля картинок согласно шаблону, с порядковым номеро
  • Проставлять title для ссылок согласно содержанию, а если там пустота — ставить свой текст по шаблону, также с порядковым номером
  • Вытягивать код в одну строку (спасибо Agel_Nash), но оставлять нетронутым тэг pre (лично я не пользовался режением Евгения, именно из-за этого)
  • Убирать внешние ссылки, но оставлять возможность перехода по ним (не забываем в роботе прописать Disallow: /exit.php)
  • Убирать циклиечские ссылки (т.е.ссылки на самих себя) — где-то слышал, что это не зер гуд
  • Формировать ключевики из тэгов h1-h6,b,i,strong и докидывать получившиеся к основным

В принципе и не так много, но весьма полезно.

Минусы решения:
  • Т.к. идет постобработка, то увеличивается время генерации страницы. Хотя я разницы особо и не заметил, ибо там простые, по-сути, математические действия

Плюсы:
  • Установил и оно работает
  • Работает как со старыми, так и с новыми документами, не нужно ничего пересохранять
  • Смотрит не только в поле контента, а по всей странице. Поэтому дополняет «чанки, шаблоны и прочие телевизоры)»
  • Делает MODX реально лучшим движком для СЕО)



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

Удаление старых изображений. Плагинчик.

По мотивам вот этого топика написал плагин, который удаляет старые, неиспользуемые, изображения.
В отличии от предыдущего скрипта, мой использует Ajax, так что количество файлов в папке не на что не влияет.

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

Еще одна реализация вставки нескольких картинок с текстом (custom TV).

Выглядит так.

Ссылка для скачивание — MultiPhotosText
Сделано через custom TV.
Требует установленного плагина TINYMCE.
Используется jQuery и jQuery UI.
Сниппет готового нет, но трудностей с его написанием не должно быть по примеру multiphotos.
Результат сохраняется в json строке:
{«1»:{«img_url»:«путь к картинке», «text»: «сам текст»}}

Можно сортировать картинки, перетаскиваются за серое поле.
Написал для использования в карусели где есть картинки плюс текст с небольшими элементами форматирования.
Есть проблемы, после того как прикрутил возможность сортировки вылезли косяки (надеюсь исправить в следующей версии).
1) При первой попытке перетащить картинку экран дергается, пока не отследил почему.
2) При перетаскивании не видно текста, когда отпускаешь кнопку мышки текст встает на свое место. Это известная проблема с TINYMCE.
3) Не всегда картинки меняются местами, особенно это касается если хочешь поставить картинку первой или последней. В середину перемещаются легко. Если две картинки проще добавить третье поле, поменять местами и удалить пустое поле.
(Пытался исправить ситуацию с помощью параметра distance в jquery ui sortable не помогло)
4) Дизайн, не с первого взгляда понятно что можно сортировать, плюс мелкие кнопки для добавления/удаления картинки.

Манипуляций с самими картинками (изменения размера, обрезание) не происходят. Считаю что картинки для галерей необходимо готовить дизайнеру.

EditDocs - модуль для редактирования,импорта, экспорта, апдейта полей базы & TV параметров (Evo) update 05.07.2017

Я долго пользовался Fast content csv для разных случаев, но в последних версиях evo он работал через раз и разбираться не очень хотелось, решил запилить свое решение.
Модуль умеет:

1)Редактировать основные поля и TV группы документов разной вложенности.
2)Импортировать из Excel или Calc
3)Обновлять таблицы из Excel или Calc и производить сравнение по выбранному TV.
4)Экспортировать в CSV с
Читать дальше →

MODx Letters (бывший EasyNewsletter)

Upd-доступно для установки из Extras!
UPD проверьте папку cache в корне модуля и добавьте ее если она отсутствует!!!
Переписал EasyNewsletter.

Сервисы почтовой рассылки сейчас очень популярны. Однако не все компании прибегают к платным услугам рассылки и подписки на новости. Главные задачи сервиса почтовых рассылок: ведение клиентской базы и рассылка им писем. Очень важным этапом подготовки к внедрению сервиса почтовых рассылок является правильная настройка домена для того, чтобы письма, отправленные на адреса, не попадали в спам. Сюда входит не только правильная настройка mx-записей, но и настройка dkim и spf.
Читать дальше →

Костыль для защиты документа в зависимости от группы пользователя

В версиях до 1.2.1-d9.1.0 почему-то не хотели работать права пользователей. Для решения этой проблемы можно обновиться до последней версии, либо присобачить нижеследующее решение.

Лечение:

В файле manager/includes/secure_web_documents.inc.php комментим строчку 26:
$modx->db->update('privateweb = 1', $modx->getFullTableName("site_content"), "id IN (".implode(", ",$ids).")");


Выполняем запрос к mySql:
Update `modx_site_contnet` set privateweb=0

Обратите внимание, что префикс может быть иным

Далее создаем плагин на OnWebPageInit, вставляем:
$e = $modx->event;

if ($e->name == 'OnWebPageInit') {
	if ($_SESSION['mgrInternalKey']) return;
	$currentID = $modx->documentIdentifier;
	$modx->db->query('Update '.$modx->getFullTableName('site_content').' set privateweb=0 where id='.$currentID); 
	
	$errorPage = $modx->getConfig('unauthorized_page');
	$errorPage = $modx->makeUrl($errorPage);
	$sql = 'Select GROUP_CONCAT(`document_group`) from '.$modx->getFullTableName('document_groups').' where `document`='.$currentID;
	//echo $sql;
	//exit();
	$dg = $modx->db->getValue($sql);
	if (!$dg) return;
	if (!$_SESSION['webInternalKey']) $modx->sendRedirect($errorPage);
	
	$wg = $modx->db->getValue('Select GROUP_CONCAT(`webgroup`) from '.$modx->getFullTableName('webgroup_access').' where `documentgroup` in ('.$dg.')');
	
	$access = $modx->db->getValue('Select count(*) from '.$modx->getFullTableName('web_groups').' where `webgroup` in ('.$wg.') and `webuser`='.$_SESSION['webInternalKey']);
	if (!$access) $modx->sendRedirect($errorPage);
	
}

Должно заработать. Проверял на сайте с 1.2-d8.1.4