Разделы

Рейтинг
+50.12
голосов:
42
avatar

Готовые дополнения для MODx  

FlvPlay - проигрыватель видео в формате FLV для MODx Evo

Сниппет может быть использован для создания видеоархива, а можно просто вставлять ролики на сайт
:: Установка
================

— Скачайте и распакуйте .zip архив
— Загрузите папку flvplay в директорию assets/snippets/
— Создайте новый сниппет с именем FlvPlay и вставьте туда php код из файла FlvPlay.php



( Читать дальше )
  • +7
  • 4 сентября 2010, 18:39
  • yar-it
  • 7+7

Альтернатива TransAlias с переводом строки

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


function translate($s_text, $s_lang, $d_lang){
$post_data['q']=$s_text;
$post_data['langpair']=$s_lang.'|'.$d_lang;
$query=http_build_query($post_data);
$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0';
$b=file_get_contents($url.'&'.$query);
$json = json_decode($b, true);
if ($json['responseStatus'] != 200)return false;
return $json['responseData']['translatedText'];
}
global $alias;
if($alias==''){
$alias = translate($_POST['pagetitle'],  'ru', 'en');
$alias = html_entity_decode($alias);
$alias = strtolower($alias);
$patterns = array(' ', ',', '.', '!', '?', '"', '& #39;',  '%');
$replacements = array ('_', '', '', '', '', '', '',  'percent');
$alias = str_replace($patterns, $replacements, $alias);
}

из строчки $patterns = убрать пробел после '&'
Событие OnBeforeDocFormSave. На здоровье)

UPD
По просьбе сообщества, примеры алиасов:
Главная страница — home
Каталог товаров — catalog
топ товары — top_favorites
Вопрос-ответ — faq
Контакты — contact

в общем все, что нужно для средних размеров сайта получается очень даже не плохо.

UPD2
если для исходной строки не будет найден перевод она будет заменена на транслит, таким образом полностью заменяя весь функционал родного TransAlias
Будут предложения по улучшению?

История покупок для зарегистированных пользователей на базе скрипта Shopkeeper

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

Код сниппета «ShopHistory»:

<?php
$dbname = $modx->db->config['dbase'];
$dbprefix = $modx->db->config['table_prefix'];
$mod_table = $dbprefix."manager_shopkeeper";
$mod_config_table = $dbprefix."manager_shopkeeper_config";
$theme = $modx->config['manager_theme'];
$charset = $modx->config['modx_charset'];
$manager_language = $modx->config['manager_language'];
$text="";
	$user_id=$modx->getLoginUserID();
    $count_query = mysql_query("SELECT COUNT(*) FROM $mod_table WHERE userid='".$user_id."'");
    $total = mysql_result($count_query, 0);
	
global $modx, $langTxt;

$langTxt = array(
  "noOrders" => "Заказов нет",
  "currency" => "Валюта",
  "currencyDefault" => "руб.",
   
  "phase1" => "Новый",
  "phase2" => "В процессе выполнения",
  "phase3" => "Отправлен",
  "phase4" => "Выполнен",
  "phase5" => "Возникли проблемы",
  "phase6" => "Оплата получена"
);

    if($total>0){
		$data_query = $modx->db->select("id, short_txt, content, allowed, addit, price, currency, status, DATE_FORMAT(date,'%d.%m.%Y %k:%i') AS date", $mod_table, "userid='".$user_id."'", "id DESC", "");
		$summa=0;
		$num = 1;
		$text1='';
	
		while ($data = mysql_fetch_array($data_query)){
		
			
			$descr = $data['content'];	 
			$L1 = unserialize($descr);
				$result = count($L1);
												
				$text1.='<tr>';	
				$text1.='<td rowspan="'.$result.'" width="20" align="center">'.$data["id"].'</td>';
				$text1.='<td rowspan="'.$result.'" width="100">'.$data["date"].'</td>';	
				$text1.='<td rowspan="'.$result.'" width="160"  class="status'.$data['status'].'" align="center">'.$langTxt['phase'.$data['status']].'</td>';
				
				foreach ($L1 as $i => $value) {
					$document_tvs=$modx->getTemplateVarOutput(true, $value[0]);
					$pagetitle=$document_tvs['pagetitle'];
					$sum = $value[1] * $value[2];
					$text1.='<td width="50%"><a href="[~'.$value[0].'~]">'.$pagetitle.'</a></td>';
					$text1.='<td align="center">'.$value[1].'</td>';
					$text1.='<td align="center">'.$value[2].''.$data['currency'].'</td>';
					$text1.='<td align="center">';					
					$text1.= $sum;
					$text1.= $data['currency'];
					$text1.='</td>';											
					$text1.='</tr>';
					
					$summa = $summa + $sum;	
					++$num;	
				}			
		}
		//подгружаем чанк
		$txt = $modx->parseChunk('producthistory', array(
			'ShopHistory' => $text1,
			'SummaOrder' => $summa
			),
			'[+',
			'+]'
			);
		echo($txt);
    }
	else{
      echo '<div class="nogood">'.$langTxt['noOrders'].'</div>';
    }
?>


Код чанка «producthistory»:

<table>
	<tr><th>№</th><th>Дата</th><th>Статус</th><th>Состав заказа</th><th>Кол-во</th><th>Цена за 1 ед.</th><th>Общая сумма</th></tr>
	[+ShopHistory+]
	</table>
	Общая стоимость всех заказов: [+SummaOrder+] руб.


На нужной странице просто вызываем сниппет [!ShopHistory!]

vjikSimpleNews - Модуль простых новостей

Модуль предназначен для работы с простейшими новостями (дата + текст новости).
Работа с новостями происходит на странице модуля. Вывод новостей на сайт осуществляется с помощью сниппета.

Скриншот страницы модуля:



Скачать можно тут: http://predvoditelev.ru/page/vjiksimplenews/

UPD 21.09.2010 — Вышла версия 0.2.1 (исправлен баг)
UPD 17.09.2010 — Вышла версия 0.2 (добавлена пагинация)
  • +2
  • 16 июля 2010, 09:05
  • VJiK
  • 6+6

[!UPDATE!] Модуль скрипт интернет-магазина addShop BETA для MODx

Предлагаем вашему вниманию модуль «скрипт интернет-магазина addShop» v0.1b
(модуль использует свои собственные таблицы).

DEMO
в админку доступ временно не предоставляется

Общий функционал скрипта интернет магазина:
* исправлено много мелких недочетов и багов (детских болезней) [!UPDATE!]
* выборка и сравнение товаров по параметрам (идеально для магазинов для продажи цифровой и автомобильной техники, например для магазина автомобильных шин)
* переработаны параметры [!UPDATE!]
* перенос категорий — добавлено [!UPDATE!]
* перенос товаров из категории в категорию — добавлено [!UPDATE!]
* группы для параметров — добавлено [!UPDATE!]
* поиск по каталогу товаров;
* мультивалютность;
* ЧПУ
* уведомление о заказах на e-mail;
* группы клиентов — добавлено [!UPDATE!]
* скидки — добавлено [!UPDATE!]
* интеграция с веб-пользователями
* в сборку добавлен Dumper [!UPDATE!]
* экспорт данных в формате yandex.market (скоро!)
* Google Sitemap (скоро!)

Функциональность товаров:

* Возможность ввода описания товаров в формате HTML с форматированием.
* Неограниченное количество картинок для товаров.
* Автоматическая нарезка картинок до указанных размеров.
* Перегенерация картинок
* Автоматическая установка водяных знаков на все картинки товаров.(в планах)
* Для каждого товара, категории могут быть заданы уникальные значения мета-тегов title, description, keywords.
* 4 цены для разных групп покупателей


( Читать дальше )

Слайд-шоу со ссылками

Тут понадобилось мне слайд-шоу, которое могло бы меняя картинки, менять и соответсвующие им ссылки.

Нашел в сети неплохое решение на jQuery и переложил его в сниппет для MODx.
Описание в тексте, будут вопросы пишите. Мож сгодится кому?

PS Да, не забудте кинуть яваскрипт в assets/js/

Не знаю как файл прикрепить, поэтому вот: rapidshare.com/files/382101769/slideshow.rar

Свой проект с использованием этого сниппета еще не запустил, но на странице автора исходного кода можно посмотреть то, что можно получить применив сей сниппет: workshop.rs/projects/jqfancytransitions/

P.S. Ребятки, как же он красиво работет на больших рисунках. Число полос уменьшите до 10-15 и ващееее :-)

Snippet prevnextPage



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

Собственно для этого мною и был написан сниппет prevnextPage

Он делает простую вещь, устанавливает плейсхолдеры [+pnp_prev+] и [+pnp_next+]. Шаблон плейсхолдера можно задать как в коде так и в чанке. Можно установить префикс для плейсхолдеров, для множественного вызова на странице.

Сниппет проверит, если он вызван в документе, который не расположен в интересующей нас папке, то он благоразумно оставит плейсхолдеры пустыми.

В общем не вижу преград для его использования =)

( Читать дальше )

JotAdminNotify На главной странице админки отображается количество неопубликованных коментариев снипета Jot



На главной странице админки отображается количество неопубликованных коментариев снипета Jot


( Читать дальше )

jHtmlArea - MM виджет для IntroText



Выпала свободная минутка… в час ночи :D и решил воплотить идею прикручивания легкого WYSIWYG редактор на поле IntroText (использовал jHtmlArea — как вы догадались).
Честно давно не гуглил на эту тему — возможно что-то подобное уже есть или даже конкретно это… но пофик, интереснее самому разобраться :)
Сделал наиболее просто — кастомный виджет для ММ.



( Читать дальше )

Сниппет MiniNEWS v0.3.4

Обновлён 01.03.2010 в 10.24

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

MiniNews делает 3 запроса к базе.

Прошу использовать при желании.

И конечно же прошу совета:
Как использовать плейсхолдеры типа [+body+] в сниппете — такое ощущение что MODx их вырезает с корнем?


( Читать дальше )