Разделы

Рейтинг
+32.51
голосов:
27
avatar

Tips & tricks  

Установка CKEditor в MODx Evolution


Подробная инструкция под катом
Поправлен глюк с ссылками в EVO 1.0.3


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

Библиотека 3B Module

Увидел топик Carw'а «Табы в своем модуле» и вспомнил о своей недавней разработке. Это маленькая библиотечка, которая генерирует html код основных элементов модуля.


( Читать дальше )
  • +3
  • 22 марта 2010, 22:11
  • burik
  • 4+4

Табы в своем модуле

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

<script type="text/javascript" src="media/script/tabpane.js"></script>
<div class="sectionBody">
	<div class="tab-pane" id="docManagerPane"> 
		<script type="text/javascript"> 
			tpResources = new WebFXTabPane(document.getElementById("docManagerPane")); 
		</script>
		<div class="tab-page" id="tab1">
			<h2 class="tab">Название таба 1</h2>
			<script type="text/javascript">tpResources.addTabPage(document.getElementById("tab1"));</script>
			Содержимое первого таба здесь.
		</div>
		<div class="tab-page" id="tab2">
			<h2 class="tab">Название таба 2</h2>
			<script type="text/javascript">tpResources.addTabPage(document.getElementById("tab2"));</script>
			Содержимое второго таба здесь.
		</div>
		...
	</div>
</div>
  • +3
  • 22 марта 2010, 11:53
  • Carw
  • 3+3

Phx and Parser limits

Если MODx перестал обрабатывать выражения PHx и выводит их в чистом виде, но все правильно написано, вы в шоке и не знаете что делать — поздравляю!

Решение:
Основное описание на английском.

Краткое описание:
Исчерпан лимит на длину регулярных выражений в PHP.

Вот эта незатейливая строчка, например в коде PHx или в конфиге MODx сэкономит нервы:
ini_set('pcre.backtrack_limit', '16000000');


Так-то! ;)

Одинаковые шаблоны и разные TV для страниц

На сайте есть много страниц, которые выглядят одинаково, но на страницах используются разные TV параметры. Другими словами код HTML для них одинаковый, а параметры должны быть разные.

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

Решил возложить почетные обязанности по сбережению мозга редактора на ManagerManager и PHx. Докладываю, с задачей он справился!

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

DirectResize, phpThumb и нагрузка на сервер

Сего дня как удивительную картину наблюдал.

На сайте стоит DirectResize 0.9, да-да, тот самый который через phpThumb все выдает. Просто решил протестировать в работе, не спрашивайте уж зачем.

Так вот, сие чудо при создании превьюх в каталоге, с достаточно маленькими картинками (порядка 30 картинок, примерно 1-100кб каждая) заваливал хостинг.

Панель управления говорила, что:

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

Создаем собственную сборку MODx

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

Мне надоело после каждой инсталляции MODx проделывать кучу повторяющихся действий.

Давайте разберемся как можно настроить установку MODx под свои нужды. Тем более, что в релизе Evolution об это мельком сказано, однако документации на этот счет — нет.


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

phx: согласование числительных

В топике Ditto: вывод количества комментариев к документам за один запрос фигурировал сниппет для phx, который занимается тем, что правильно склоняет существительные, относящиеся к числительным, например «32 комментария, 147 арбузов».

Работает он так:
комментар[+jotcount:declension=`ий|ия|иев`+]
Первое окончание соответствует единственному числу, а также числам, оканчивающимся на цифру 1. Второе окончание используется, когда число оканчивается на 2,3 или 4. Третья форма используется во всех других случаях.

Привожу код сниппета:

<?php
if(strlen($options)>0) {

$data = explode("|",trim($options));
$num = $output;
$res = $data[0];

if($num%10 > 1 && $num%10<5) $res = $data[1];
if($num%10 > 4 || $num%10==0) $res = $data[2];
if($num%100>10 && $num%100<20) $res = $data[2];

return($res);
}
?>


Вполне возможно, что этот сниппет не учитывает каких-то частных случаев, поэтому поправки приветствуются :)

Ditto: вывод количества комментариев к документам за один запрос



Дано: список публикаций с возможностью комментирования каждой из них через Jot

Требуется: вывести список публикаций с количеством комментариев к каждой из них (на манер community.modx-cms.ru), с минимальным количеством запросов к базе.


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

PHX: Вырезание нужных плейсхолдеров

Есть у меня небольшой сниппет, который позволяет устанавливать плейсхолдер непосредственно в тексте документа/чанка/шаблона. Текст его таков:
<?
$modx->setPlaceholder($name,$value);
?>

но суть не в этом.

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

После долгого копания в недрах, вышел я на PHx включив debug-режим (если кто не знал, у плагина такое есть). В результате в логах прочитал следующее:
44 [01:26:31] Cleaning unsolved tags:
brand
brand
collection_name

т.е. получается PHx взял и удалил мои теги, т.к. они по его мнению не используются. :( большой и толстый FAIL.

Ну ладно полез я в код PHx и решил закоментировать следующие строчки (63 строка плагина):
preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)((\1|\))\]~s', $template, $matches);
      if ($matches[0]) {
      $template = str_replace($matches[0], '', $template);
      $this->Log("Cleaning unsolved tags: \n" . implode("\n",$matches[2]) );
    }

отвечающие как раз этот самый эффект.
Всё заработало. Однако есть смутные сомнения, что это выражение вырезало различные бяки из вывода MODx, которые теперь будут периодически появлятся.
Вот вопрос состоит в том, что бы модифицировать регулярку так, чтобы оно удаляло всё что не нужно, но нормальные плейсхолдеры, TV-параметры не трогало.

Прошу помочь мне в этом. Спасибо.