Информационная связь с потребителем, безусловно, реально стабилизирует социометрический рейтинг, не считаясь с затратами. Стиль менеджмента стабилизирует конвергентный анализ зарубежного опыта, оптимизируя бюджеты. Емкость рынка вырождена. Стратегический маркетинг, не меняя концепции, изложенной выше, основан на тщательном анализе данных.
А если серьёзно, это просто блог.
Тогда, возможно, Вы попали туда куда нужно.
Я занимаюсь созданием сайтов "под ключ".
Оцените качество работы, посмотрев
портфолио. Если Вы не рассчитываете на демпинг, связаться со мной можно при помощи формы обратной связи.
TVimageResizer plugin
Для MODx уже создано не мало плагинов, которые изменяют размеры картинок. Самым удобным и универсальным я могу назвать DirectResize. Этот и подобные ему плагины парсят HTML-код, проверяют размеры картинок и если нужно "ресайзят" их. Всё очень удобно и просто. Но когда картинок на странице очень много (например каталог товаров), то естественно время генерации страницы и нагрузка на сервер существенно возрастают. Также из-за такого плагина нагрузка может быть значительной при большой посещаемости ресурса.
На днях у меня появилась задача вставлять маленькие картинки без их последующего увеличения. Такие картинки обычно вставляют в анонс новостей или в каталоге продукции. В моем случае эта картинка должна была служить ссылкой на страницу с подробным описанием где уже вставляется картинка побольше. Ресурсов сервера на такую простую задачу и времени на ресайз "вручную" стало очень жалко и я создал плагин TVimageResizer.
С помощью этого плагина создание уменьшенных копий картинок существенно облегчается. Для прикрепления фото к материалу я использую параметр (TV). Нужно только загрузить фотографию любого размера и задать нужные размеры для уменьшенной копии. Можно задать размеры, которые будут использоваться по умолчанию.


Для установки нужно создать плагин с именем TVimageResizer и вставить код. В поле "Конфигурация" нужно вставить такую строку:
&th_width=Max.width;int;150 &th_height=Max.height;int;110 &prefix=prefix;int;_t |
Далее отметить системные события OnDocFormRender и OnBeforeDocFormSave.
Код плагина:
//<?php //*********************************** //TVimageResizer plugin v1.2 //Andchir http://wdevblog.net.ru //*********************************** // Description: Resizing images of Template Variables // Configuration: &th_width=Max.width;int;150 &th_height=Max.height;int;110 &prefix=prefix;int;_t // System Events: OnDocFormRender, OnBeforeDocFormSave //*********************************** if(!isset($prefix)) $prefix="_t"; if(!isset($th_width)) $th_width=150; if(!isset($th_height)) $th_height=110; global $content; global $tmplvars; $doc_id = $content['id']; $template = $content['template']; $fullpath = $modx->config['base_path']; define(IMAGE_CLASS,"GD"); $e = &$modx->Event; $output = ""; $tb_tmplvars = $modx->getFullTableName('site_tmplvars'); $tb_tmplvar_values = $modx->getFullTableName('site_tmplvar_contentvalues'); require_once('./media/ImageEditor/Classes/Thumbnail.php'); if ($e->name == 'OnDocFormRender') { $result = $modx->db->select('id,name', $tb_tmplvars, "type='image'"); $tvs = ''; while ($row = $modx->db->getRow($result)) $tvs .= ",'" . $row['name'] . "'"; $tvs = substr($tvs, 1); $output = <<< EOT <!-- TVimageResizer --> <script type="text/javascript"> var imageNames = [$tvs]; window.onDomReady(function() { for (var i = 0; i < imageNames.length; i++) { var elem = $('tv' + imageNames[i]) if (elem) { var field1 = new Element('input',{type:'checkbox', name:'rsz[]', id:'rsz'+(i+1), value:imageNames[i]}); var label = new Element('label',{for:'rsz'+(i+1)}); var field2 = new Element('input',{type:'text', size:'5', name:'rszwidth[]', value:$th_width}); var field3 = new Element('input',{type:'text', size:'5', name:'rszheight[]', value:$th_height}); elem.getParent().adopt(field1).adopt(label.appendText('resize')).adopt(field2).appendText('x','after').adopt(field3); } } }); </script> <!-- /TVimageResizer --> EOT; $e->output($output); } if ($e->name == 'OnBeforeDocFormSave') { if(isset($_POST['rsz'])){ echo $override_tv; foreach ($_POST['rsz'] as $k=>$v) { if(!empty($_POST['tv'.$v])){ $s_value = $_POST['tv'.$v]; $ext = substr($s_value, strpos($s_value, ".")+1, strlen($s_value)); if(!strstr($s_value, $prefix.".".$ext) && !empty($s_value)){ $new_value = str_replace('.jpg',$prefix.'.jpg',$s_value); if(file_exists("../$new_value")) unlink("../$new_value"); $th_width = $_POST['rszwidth'][$k] ? $_POST['rszwidth'][$k] : $th_width; $th_height = $_POST['rszheight'][$k] ? $_POST['rszheight'][$k] : $th_height; $thumbnailer = new Thumbnail($th_width,$th_height); $thumbnailer->createThumbnail($fullpath.$s_value, $fullpath.$new_value); $tmplvars[$v][1] = $new_value; } } } } } //?> |

Написать комментарий
Ответов: 7
Ответ #12 дата : Mon November 09, 2009, 23:26:28
Ответов: 7
Ответ #11 дата : Mon November 09, 2009, 23:15:32
Ответов: 7
Ответ #10 дата : Fri August 14, 2009, 08:14:05
Ответов: 5
Ответ #9 дата : Thu July 16, 2009, 09:12:33