Skip to content

Instantly share code, notes, and snippets.

@andronex
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andronex/e79e49daa43e8fbe5bc3 to your computer and use it in GitHub Desktop.
Save andronex/e79e49daa43e8fbe5bc3 to your computer and use it in GitHub Desktop.
Плагин для MODX Revo. Проверяет обязательность заполнения META полей для публикуемых ресурсов + плагин для типографирования сохраняемого контента ресурсов. Работает через API typograf.ru
<?php
/**
* Повешать плагин на событие OnBeforeDocFormSave
* Название любое
* meta description в поле description
* meta keywords в поле introtext
*/
$eventName = $modx->event->name;
switch($eventName) {
case 'OnBeforeDocFormSave':
if (($resource->published) || $mode == 'new') {
if (empty($resource->description) || empty($resource->introtext)) {
$modx->event->output('Не заполнено одно или два поля для формирования META тегов!');
return null;
}
/*Если нужно типографирование, то в это место вставить код из соседнего файла*/
}
break;
}
<?php
/**
* Плагин для события OnBeforeDocFormSave
* Типографирует содержимое сохраняемого или публикуемого ресурса перед сохранением в базу.
* Для корректной простановки тегов параграфов <p></p> нужно абзацы в поле "Содержимое ресурса"
* разделять пустой строкой.
*/
$eventName = $modx->event->name;
switch($eventName) {
case 'OnBeforeDocFormSave':
if (($resource->published) || $mode == 'new') {
/*Если нужен запрет на сохранение ресурсов с пустыми meta полями, то вставить в это место код из соседнего файла*/
if($content = &$resource->content) {
$myCurl = curl_init();
$xml = '<?xml version="1.0" encoding="windows-1251" ?>
<preferences>
<nowraped insert="0" nonbsp="1" length="0">
<start><![CDATA[<nobr>]]></start>
<end><![CDATA[</nobr>]]></end>
</nowraped>
</preferences> ';
curl_setopt_array($myCurl, array(
CURLOPT_URL => 'http://www.typograf.ru/webservice/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(array('text' => $content, 'chr' => 'UTF-8', 'xml' => $xml))
));
if($response = curl_exec($myCurl)) $resource->set('content', $response);
curl_close($myCurl);
return null;
}
}
break;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment