Топики пользователя «grinant»

Тюнинг MODx Revolution. Загрузка страницы менее чем за 0,4 сек. при > 1 000 000 документов

Видимо на данном ресурсе должна быть ссылка на топик:
www.free-lance.ru/blogs/view.php?tr=633517

Лично сам не разбирался, но возможно кому-то пригодится

php-программист.

В долгоиграющий проект (муз-соц сеть) требуется php-программист

Знания:

php 5.3 (ООП),
javacript (jQuery)
БД: mysql

Желателен опыт работы с git, redmine;

Хотелось бы умение работать в консоли linux
(не администрирование, основные знания).

Поверхностное понимание тонкостей работы с Apache, Nginx, Memcached, Mecachedb.

HTML\СSS — по умолчанию включены.

От нас: Постоянная своевременная помесячная оплата.
Работа удаленная, но предполагает полную занятость.

От вас хотелось бы увидеть более развернутое резюме о ваших талантах,
Возможно есть opensource наработки, которые можно посмотреть.
Чем больше информации укажите тем лучше.

Можно на e-mail: loguntsov@gmail.com
Все вопросы можно оставлять тут, постараюсь на них ответить.

MODx Evo на Github

Я может открою Америку, но теперь вся работа у разработчиков ведется на GitHUB
Адрес где можно посмотреть на это чудо: https://github.com/modxcms/evolution/

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

— P.S. Все срочно переходим с SVN на Git. Эта вещь того стоит.

MODX with SVN

В процессе работы с MODx я понял один большой недостаток работы с данной CMS.

Хоть разработчики и позиционируют данную разработку как CMF, но почему то они не подумали о конечных разработчиках, о командной разработке сайтов на базе данной CMS/CMF, а именно о том что класть код в БД не очень хорошо, и SVN к этому делу не прикрутишь (а хотелось бы).

Хотелось бы отделить код которые пишут разработчики под MODx от контента который хранится по сути дела там же.
Хотелось бы хранить всю верстку и т.п. информацию в SVN.

Этим топиком я ищу своих единомышленников.

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

Вопрос: может кто то занимался этой тематикой и изобрел свой велосипед?

P.S. Я говорю про MODx Evo, c Revo не знаю как дела обстоят.

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-параметры не трогало.

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

Передача произвольного количества данных в чанк вывода Ditto

В продолжении темы о передаче параметров в Ditto решил развить идею дальше.

вот код расширения placeholders.extender.inc.php:

<?
  // Преобразует все не стандартные переменные внутри вызова Ditto в плейсхолдеры для подстановки в чанк
  $std_var=array('config','dateFormat','dateSource','debug','depth','display','ditto_base','documents','extenders','filter',
'format','globalFilterDelimiter','hiddenFields','hideFolders','id','keywords','language','localFilterDelimiter',
'noResults','paginate','paginateAlwaysShowLinks','parents','phx','queryLimit','removeChunk','save','seeThruUnpub',
'showInMenuOnly','showPublishedOnly','sortBy','sortDir','start','startID','total','tpl','tplAlt','tplCurrentDocument','tplFirst',
'tplLast','tplPaginateNext','tplPaginatePrevious','tplTrunc','trunc','truncAt','truncLen','truncOffset','truncText','where' );

foreach($modx->event->params as $name=>$value) 
{
  if (!in_array($name,$std_var)) {
    $func=create_function($resource,"{ return '".addslashes($value)."'; }");
    $placeholders[$name]=array("","$func");
  }
}
?>


теперь можно писать так:
[[Ditto? &extenders=`placeholders` &some_data=`здесь какие либо данные` ]]

в результате в чанке &tpl будет доступен следующий плейсхолдер:
[+some_data+], значение его думаю вам понятно какое. Таких плейсхолдеров может быть много — очень много. Стандартные параметры Ditto в плейсхолдеры не превращаются.

Передача TV-параметров и других данных в шаблон Ditto

Иногда требуется передать ТV-параметр в шаблон Ditto для дальнейшей его обработки сниппетами нижнего уровня.

В Ditto имеется такое понятие как extenders — расширения, которые находятся в /assets/snippets/ditto/extenders/.

Моё расширение по имени documents.extender.inc.php выглядит так

<?
  // Новый плейсхолдер для перемещения данных из вызова Ditto в вызов других сниппетов шаблона $tpl
  $func=create_function($resource,"{ return '$docs'; }");
  $placeholders['parent_documents']=array("","$func");
?>


вызывается так:
[[Ditto? &tpl=`chunk` &extenders=`documents` &docs=`10,23,90,34,78`]]

в результате таких манипуляций, в шаблоне Ditto (чанк из &tpl) любые вызовы плейсхолдера
[+parent_documents+] будут заменятся на значение параметра &docs.

Вообще, честно говоря, концепция extenders очень интересная, только вот документации по ней не встречал.

MySQLFTPServer

Давно было дело. Долголь иль коротколь но созрела у меня идея доступа к БД MODx через файловые менеджеры типа FAR. Подумалось — сделалось :)

Представляю Вашему вниманию очень сырое и незаконченное приложение на C# (проект Visual Studio 2008):

MySQLFTPServer,

которое позволяет осуществить доступ к таблицам MODx и достаточно красиво редактировать сниппеты, чанки и документы :)

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

Приложение делалось на основе некоторого FTP-сервера написаного на C# и спокойно скачанного с интернета (название не помню, но вроде CSFTP).

Насколько помниться (а разработка приложения был в январе-феврале 2009 года), структура каталогов следующая (по уровню вложенности):
1. Имя БД
2. Имя таблицы
3. Имя идентификатора строки в таблице (выбирается колонка с primary ключем)
4. Имя колонки в таблице.
Дальше можно в FARe жать F4 и редактировать, в дальнейшем оно само (с помощью FARa) заливается на сервер (читай в БД) :)

Кто понимает C# и имеет достаточно свободного времени, может покопаться в нем и развить идею дальше, т.к. на мой взгляд приложение перспективное :)

P.S. На данный момент MS VS 2008 у меня не установлен, поэтому запустить сервер у себя на машине не смог, однако в архиве вроде есть екзешник для дебага.

Путь к документу в title

Уважаемые, вопрос элементарный, но к сожалению я раньше как-то обходился без всего этого. И так:

требуется сформировать путь к документу:
Документ — Новости — и т.д.

т.е. breadcrumbs только наоборот и без ссылок.

Кто чем пользуется?