Разделы

  
 

Некорректная обработка URL без постфикса

Обнаружил у MODx ошибку в обработке URL'ов без постфиксов. Т.е. он успешно открывает URL как с постфиксом, так и без него.

Например, вот страница документации. А теперь можете попробовать открыть ее же, но убрав из адреса .html — результат тот же (не публикую тут ссылку во избежаение индексации).

По непонятным мне причинам (ссылки-то все с постфиксами) у одного из разработанных мной сайтов оба варианта страниц начали попадать в индекс.

Кто-нибудь сталкивался с этим? Решал ли как-нибудь?
  • 0
  • 7 ноября 2010, 18:47
  • burik
  • 8

[plugin] RedirectMap 1.0

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

( Читать дальше )
  • +5
  • 17 октября 2010, 13:35
  • Carw
  • 25

YAMS & MODx = нереальное количество SQL запросов

Добрый день.

Столкнулся со следующим. Мультиязычный сайт на MODx+YAMS (8 языков) при генерации страницы тратит на это до 900 (!!11 o_0) SQL запросов.

На каждой странице есть меню, в каталоге есть вызовы Ditto.

После кеширования, конечно на вывод страницы затрачивается 3 SQL запроса и все это совершенно быстро.

Все это происходит от совершенно нереального количества вызовов мультиязычного сниппета YAMS.

Кто-нибудь сталкивался с такой вот свиньей от YAMS?

Кто-нибудь может перевести мой вопрос корректно, а я его направлю разработчику YAMS.

UPD: вот список запросов, что системы вызывает, одному мне кажется, что это многовато?

Проблема в том, что непонятно что со всем этим добром делать. Как это реструктуризовывать.
  • 0
  • 1 октября 2010, 15:10
  • pitbull
  • 6

REVO vs EVO

Подскажите, для каких сайтов лучше использовать REVO, а для каких EVO?

Заранее спасибо :)
  • +2
  • 22 сентября 2010, 18:18
  • VJiK
  • 18

Сохранение пароля на админку в Google Chrome (Evo).

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

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

Мелочь а приятно!

Обновление демо-версий MODx

Демонстрационные версии успешно переехали на новый сервер и обновились до последних релизов.

Демо-версия MODx 1.0.4: evo.modx-demo.ru
Демо-версия MODx 2.0.0: revo.modx-demo.ru

Логин: admin
Пароль: demo
  • +2
  • 2 августа 2010, 23:42
  • Carw
  • 28

SBShop 0.1a - альфа-версия интернет-магазина для MODx

Спешу поделиться с вами очень радостной новостью. Наконец-то разработка электронного магазина для MODx под кодовым названием SBShop приобрела некий ощутимый и рабочий вид. Первая альфа!

Информации очень много, поэтому не буду вдаваться в лирику и перейду к делу. Описывать буду как все устроено, а не «как сделать магазин».

( Читать дальше )
  • +9
  • 20 июня 2010, 00:57
  • Carw
  • 114

Делаем xml-карту сайта для Google и Яндекса на Evo

Недавно после создания сайта озаботился проблемой xml карты для Гугла и Яндекса. Решение нашел, правда доя старой версии МОДх, порывшись на англо-форумах нашел решение на базе старых разработок:

Создаем сниппет Sitemap и вставляем в него код:

<?php
//откуда начать
$startid = (isset($startid)) ? $startid : 0;
//в каком формате выводить результат (url или xml)
global $formatSP; 
$formatSP = (isset($format)) ? $format : 'xml';
//название TV-параметра, по которому отмечаются запрещенные для вывода элементы
global $excludeTVSP;
$excludeTVSP = (isset($excludeTV)) ? $excludeTV : 'sitemap_exclude';
//номера шаблонов которые запрещается выводить (0 - blank)
global $excludeTemplatesSP;
$excludeTemplatesSP = (isset($excludeTemplates)) ? $excludeTemplates : '';
	$excludeTemplatesSP = explode(",", $excludeTemplatesSP);
//номера ID-шников которые выводить надо, но их дочерние элементы - нет	
global $excludeChildsSP;
$excludeChildsSP = (isset($excludeChilds)) ? $excludeChilds : '';
	$excludeChildsSP = explode(",", $excludeChildsSP);	
//номера ID-шников которые не надо выводить
global $excludeIdSP;
$excludeIdSP = (isset($excludeDocs)) ? $excludeDocs : '';
	$excludeIdSP = explode(",", $excludeIdSP);	

$out = getDocs($startid);

if ($formatSP=='url')
{
	$output = "<ul class=\"sitemap\">$out</ul>";
}
else
{
	$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
	$output .='<urlset '."\n";
	$output .='xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ';
	$output .='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ';
	$output .='xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 ';
	$output .='http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" ';
	$output .='>';
	$output .= $out;
	$output .= '</urlset>';
}
return $output;


# gets list of published documents with properties
function getDocs($startid)
{
	global $modx,$formatSP,$excludeTVSP,$excludeTemplatesSP,$excludeChildsSP,$excludeIdSP;
	// get children documents
	$docs = $modx->getActiveChildren($startid,'menuindex','asc','id,editedon,template,published,deleted,searchable,pagetitle,type'); 
	// add sub-children to the list
	foreach ($docs as $key => $doc)
	{
		$tv = $modx->getTemplateVar($excludeTVSP,'*',$doc['id']);
		if (($tv['value']!=1) 
			&& (!in_array($doc['template'],$excludeTemplatesSP))
			&& ($doc['type']=='document')
			&& ($doc['id']!=$modx->documentIdentifier)
			&& ($doc['published'])
			&& (!$doc['deleted'])
			&& (!in_array($doc['id'],$excludeIdSP))
			)// tv default value is overriden (including empty)
		{
			if (in_array($doc['id'],$excludeChildsSP))
				$child='';
			else
				$child = getDocs($doc['id']);
			if ($doc['id'] == $modx->config['site_start'])
				$url = '[(site_url)]';
			else
				$url = '[(site_url)][~'.$doc['id'].'~]';
			if($formatSP=='url')
			{
				$date = date("d-m-Y", $doc['editedon']);
				$output .= "<li>";
				$output .= "<a href=\"$url\">".$doc['pagetitle']."</a>";
				if ($child) $output.="<ul>$child</ul>";
				$output .= "</li>\n";
			}else
			{
				$date = date("Y-m-d", $doc['editedon']);
				$output .= "\t<url>\n";
				$output .= "\t\t<loc>$url</loc>\n";
				$output .= "\t\t<lastmod>$date</lastmod>\n";
				$output .= "\t</url>\n";
				$output .= $child;
			}
		}
	}
	return $output;
}
?>

Пусть Вас не смущает то, что в коде указаны старые версии. Просто не стал править=) В самом коде внесены пара строчек изменений по сравнению с эталонным от старых МОДх.


Выбор «Показывать/не показывать» в карте сайта:
— создаем TV "sitemap_exclude"
— тип Dropdown List Menu
— возможные значения Показывать==0||Не показывать==1
— по умолчанию
— отмечаем все шаблоны, какие нужно

Далее создаем в корне сайта документ «Карта сайта»:
— тип содержимого html/xml
— убрать галочку у html-редкатора (Очень важно!!!)
— псеводним sitemap.xml
— шаблон blank
— в тело документа вставляем:
[!SiteMap? &format=`xml` &excludeTV=`sitemap_exclude` &excludeTemplates=`` &excludeChilds=``!]


Параметры:
excludeTemplates — не отправлять в карту сайта документы с таким ID шаблона
excludeChilds — не показывть в карте дочерние документы этих папок

Индекс в ЧПУ должен быть отключен, иначе получится sitemap.xml.tml например.

UPD 13.01.11, топик обновлен, добавлены параметры вызова и специальный TV параметр

Работает в 1.0.2 и выше.

Шпаргалки для MODx Evolution

Сегодня попались интересная страница на Вики с подборкой свежих шпаргалок.

Есть там следующее (в PDF):

Wayfinder & Breadcrumbs Cheatsheet 1.1
Ditto & Reflect Cheatsheet 1.2
DocParsers API Cheatsheet 1.0
Basic Cheatsheet 1.3

Правда, советую периодически посещать саму страницу т.к. она может обновляться.
  • +9
  • 6 февраля 2010, 16:48
  • iJack
  • 8

Релиз MODx Evolution 1.0.1 + MODx Revolution 2.0.0-beta-4

Вечернее посещение оф. форума привело к двум чудесным темам:
1) MODx Evo 1.0.1 Release Candidate is Ready
2) Help us test 1.0.1 RC

О чём речь, думаю, всем понятно :) А для тех, кто в танке немного русских букав о том, что написано в этих темах.


( Читать дальше )
  • +7
  • 16 октября 2009, 19:18
  • iJack
  • 42