+1.13
140 читателей, 251 топик

[EVO] Информация о родителе

Порой необходимо быстро получить информацию о родителе, например вывести заголовок, id и т.п. Для этого есть getPageInfo, но в чистом виде нужную информацию мы не получим. А уж если нам понадобилось значение tv параметра, то придется вызывать getTemplateVar. Чтобы не плодить несколько снппетов набросал один. Ничего такого заумного в нем нет, но все же решил поделиться.


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

[EVO] Сниппет "Сарафанное радио" или поделись с друзьями

Вечер добрый!

Собственно сабж
В последнее время социальные сети, как и реклама в них, стали очень популярны. Поэтому я посчитал необходимым опубликовать сниппет, который выводит на странице иконки социальных сетей. Все минималистично и подходит для любителей все подстраивать под себя.

Чем же он хорош? Ну во-первых — отсутствует JS, а во-вторых — может применяться для мультиязычных сайтов.

Есть Твиттер, Вконтакте, Одноклассники, Фейсбук, Закладки Google и ЖужльGoogle+.

Это альфапервая версия, и надеюсь не последняя. Вызов осуществляется:

[[sRadio]]

Или:
[[sRadio? &layout=`fb, vk, od` &lng=`en` &tpl=`template`]]

В этом случае отображаются иконки Facebook, Вконтакте и Одноклассники c English titles через шаблон в чанке template. Думаю принцип использования понятен.

Сарафанное радио в деле...

Пользуйтесь на здоровье!

Напоминаю, что я не программист, а дизайнер, поэтому с радостью приму любую помощь и советы по доработке кода.

UPD1: Добавил Google+

UPD2: Добавил возможность вывода на разных языках. Создавайте свои переводы в папке sradio/lang/. В наличии Русский и Английский. По умолчанию сниппет использует Русский.

UPD3: Добавил возможность шаблонизации с помощью чанка, параметр вызова &tpl=`название чанка`, плейсхолдеры: [+srurl+], [+srclass+] и [+srtitle+]
Содержимое чанка, аналогичное шаблону поумолчанию:

<a class="[+srclass+]" href="[+srurl+]" title="[+srtitle+]">[+srtitle+]</a>

UPD4: Добавил контроль ошибок и вывод предупреждений о неправильном чанке и отсутствии языкового файла.

[EVO] Мультиязычность это просто (сниппет)

Привет сообщество!


За все время разработки на MODx перед каждым из нас хоть раз становилась задача сделать мультиязычный сайт. Я думаю не все еще перешли на Revo, да и существуют заказы, в которых вся мощь Revo и не требуется.

Итак, впринципе вариантов здесь немного. Мне наиболее понравился этот вариант реализации. Далее речь пойдет о сниппете, в котором есть один существенный недостаток – наличие switch case. Таким образом при добавлении одного дополнительно языка, придется добавить еще один case и дополнить уже существующие. А если языков пять? В общем, в идеале, сниппет должен все делать сам с минимальными начальными условиями.

Сильно не пинайте, так как я не программист, а дизайнер, но знаний хватило, чтобы довольно корявенько переработать этот сниппет для сколь угодно языков.


<?php
/*
 * Рефакторинг сниппета от  http://e-kao.ru/multilingual-2 by Alexander Sharapov
 *
 * lngChange
 * Сниппет вывода иконок переключения языка
 *
 * Вызывайте так: [!lngChange? &langs=`префикс_языка,id_документа_modx;префикс_языка_2,id_документа_modx_2`!]
 * Пример: [!lngChange? &langs=`ru,4;en,5`!]
 */

$langsarr = explode(';', $langs);

foreach ($langsarr as $key => $value) {
	$langvalue = explode(',', $value);
	$langId[$langvalue[0]] = $langvalue[1];
}

$baseurl=$modx->config["base_url"];

if ($modx->documentObject['parent']=='0') {
	$lang=0;
} else {
	$lang=$modx->documentIdentifier;
	do {
		foreach ($modx->documentMap as $mapEntry) {
			$parentId= array_search($lang, $mapEntry);
			if ($parentId) break;
		}
		if ($parentId) $lang=$parentId;
	} while ($parentId);
}

function BaseReplace ($baseurl, $url) {
global $modx;
$url = str_replace(
$modx->config['friendly_url_suffix'], "", $url);
if ($baseurl == "/") return substr ($url, 1); else return str_replace ($baseurl, "", $url);
}

$output='<div class="lng-change">';
foreach ($langId as $key => $value) {
	if ($value == $lang) {
		$lang_name=$key;
	}
}
foreach ($langId as $key2 => $value2) {
	if ($key2<>$lang_name) {
		$output.='<a href="';	
		$url = str_replace ("/$lang_name/", "/$key2/", $modx->makeURL($modx->documentIdentifier));
			if (array_key_exists(BaseReplace ($baseurl,$url), $modx->documentListing))
				$output.=$url;
			else
				$output.=$modx->makeURL($value2);
		$output.='" class="'.$key2.'">'.$key2.'</a>';
	}
}
$output.='</div>';

return $output;
?>


Оригинал сниппета, найдете в статье. Если кто нибудь поможет оптимизировать мой быдлокод, буду очень признателен.

UPD: по совету камрада samz добавил возможность ввода начальных значений через параметр.

[REVO] PageNav

PageNav
Пагинация для ресурсов с поддержкой User Friendly URL.
Пакет можно скачать в Система->Управление пакетами, Загрузить дополнения, поиск -> PageNav или с MODx Extras
Код на github там и пакет, или пакет можно скачать с моего сервера
Читать дальше →

[REVO] VersionX 2.0 finally available!


Сохраняем историю изменений!
Mark Hamstra — возобнавил своё расширение VersionX, которое привёл в работчее чувство.
Читае, rtfm.modx.com/display/ADDON/VersionX
Устанавливаем и обкатываем.
Я долго ждал этого момента и вот он настал!!!
При установке ставим галочки на против снипет, чанк, ресурс и.т.д., т.е. то, что нам нужно, чтобы сохранялись версии.
Пока на обкатке, но проверил — сохраняет изменения...!!!

[REVO] CacheAccelerator 1.0-rc1 для REVO



Сниппет для более продвинутого кэширования сниппетов (с возможностью перехода по страницам и т.п.).
Скачать можно пока здесь.
Автор: Thebat053
Адаптация под MODX Revo: Andchir
Название сниппета: CacheAccelerator

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

[REVO] FileDir [[Revo]]

Тема часто встречаеться, и все пишут костыли, вот в очередгой раз сталкнулся с этим и решил свой костыль написать.
Что он может?
Легко выводить любые типы файлов из директорий, фильтруя на выходе по типу.
Можно создать фото или видео галерею, файловый архив
Читать дальше →

[REVO] MODx Revolution Plugin: ChangeTemplate

ChangeTemplate это плагин для MODx Revolution (2.2.0-pl2). Этот плагин является особенно полезным, когда мы должны контролировать, какие Шаблон наследуется детьми в документах родителя.
С ChangeTemplate пользователю не нужно помнить, какой выбрать шаблон, потому что это делается автоматически с помощью плагина.
Нашел на форуме. может кому и пригодится.
1. Установка
Для установки плагина ChangeTemplate перейдите в раздел «Элементы> Plugins> Новый плагин» и создайте:
Имя плагина: ChangeTemplate
Системные события: OnDocFormRender
Код плагина
Читать дальше →

[EVO] MarkitUp! для EVO

кому лень читать готовый плагин качаем здесь: github.com/Temus/MarkitUp

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

Одной из причин было то что в LS очень уж удобный редактор контента.
Раз нашли в чем проблема то значит ее можно решить:)

в пару кликов стало понятно что это MarkitUp!

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