Кстати, кто не знает, то админу можно отправлять уведомления через API

//function sendAlert($type, $to, $from, $subject, $msg, $private= 0) {}
$modx->sendAlert('alert',1,1,'Активация сайта','Ошибка отправки письма на email: '.$email."<br />".$mail->ErrorInfo."",1);

Только если будете пользоваться этой функцией, то учтите, что она не фильтрует параметры. Т.е. SQL-injection возможна в каждом параметре. Поэтому предварительно данные нужно обрабатывать через $modx->db->escape();
В любом случае, придется делать решение более настраиваемым и гибким.
Да, в планах вообще добавить параметр для сортировки вывода комментариев, уведомления на e-mail (да\нет), прикрепление файлов, документов, к сообщениям. Возможно пересылка сообщений.
А вообще хотелось бы для начала реализовать все это на ajax, чтоб было красивее и быстрее. Быстрее и красивее.
возможность прятать прочитанные сообщения
Эта возможность есть, только реализована не в полной мере. По нажатию кнопки Удалить сообщение меняет status на -1 и просто не показывается в ленте.

Постараюсь сделать тестовый сайт для полной оценки сего. Очень хотелось бы оптимизировать все sql запросы для быстроты работы.

А за идеи спасибо!
Такого добра в интернете, которое «Может и пригодилось бы» очень много, откройте для себя GitHub, смотрите чужой код, берите куски, используйте по необходимости.
  • avatar alooze
  • 1
На вид неплохая игрушка. Но если не делать упор на социальную сеть, то может получиться решение для гораздо более широкого применения. Как вариант — сделать механизм расширенной обратной связи с админами сайта. Обычной формы «Задать вопрос» иногда недостаточно.

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

Для концепта, повторюсь, получилось очень симпатично. Если бы еще не на Денвере было сделано, чтобы можно было оценить примерную скорость работы — было бы еще нагляднее.

Что касается структуры БД — я бы добавил еще id вызова и/или parent, как это сделано в Jot. Никогда не знаешь, к чему придется привязывать вызов ленты комментариев. А поля в таблице — дело наживное, может быть даже придется потом сделать отдельную таблицу для дополнительных полей сообщения.
  • avatar intzar
  • 0
Спасибо за ответ, но это не совсем то что нужно. При таком варианте происходит уменьшение размеров, а потом образается то что лишнее.
Возможно ли именно размеры не уменьшать, а только вырезать по заданным размерам центр?
  • avatar Flexx
  • 0
Может и пригодилось бы.
  • avatar Flexx
  • 0
Пробуй так
<img src="[[phpthumb? &input=`[+image+]` &options=`w_265,h=149,zc=1`]]" alt="[+pagetitle+]" title="[+pagetitle+]" />
Добавить в конфигурацию вызова zc_1

Ну или в конфигурацию самого сниппета.
Пробовали и font-face)
  • avatar Ronef
  • 0
Может лучше @font-face?
Небольшое гугление на тему
Function eregi() is deprecated

Дает вполне внятный ответ: заменить eregi() на preg_match()
  • avatar bav55
  • 2
Валентин, приветствую! Мне было бы интересно немного узнать подробности, поскольку то, что вы пишете в тексте (включая перевод документов и т.п.) я пока совершенно не умею делать. К сожалению, на сегодня, все ссылки на картинки и сам сайт — не работают :-(
Хотелось бы все же глянуть как оно устроено. Спасибо!
Интересные задачки вы решаете!
Я не видел чтобы кто-то выкладывал исходники скриптов разрабатываемых сайтов, тем более специфических, т.е. не универсальных!
Где можно посмотреть на «свой большой сниппет с кэшированием товаров»?
Ах, как вовремя! А я вчера мозг себе выломал, почему у меня похожий счет с ± в заказе не пашет. А тут глянул: дык все понятно, не надо умничать было. Эх, как бы отучиться думать витиевато :)
У меня получилось вот так

//default settings
$dir = $modx->getOption('dir',$scriptProperties,'assets/');
$tpl = $modx->getOption('tpl',$scriptProperties,'tplFileDir');
$tplOut = $modx->getOption('tplOut',$scriptProperties,'tplFileDirOut');
$fcache = $modx->getOption('fcache',$scriptProperties,null);
$cachetime = $modx->getOption('cachetime',$scriptProperties,0);
$start = $modx->getOption('start',$scriptProperties,0);
$limit = $modx->getOption('limit',$scriptProperties,0);
$offset = $modx->getOption('offset',$scriptProperties,0);
$class = $modx->getOption('class',$scriptProperties,'fd');
$filetip = isset($filetip) ? explode(',',$filetip) : array('jpg','png','gif');
$probel = '';

$base_path = $modx->getOption('base_path');
if($modx->getCacheManager() && isset($fcache)){
  $keyc = md5('filedir::dir:'.implode('', $scriptProperties));
  $out = $modx->cacheManager->get($keyc);
  if (isset($out)){
    $modx->setPlaceholder('total',$out['total']);
    return $out['out'];
  }else{
    $inCache = false;
  }
}
// check for the presence of slash
if ($dir{0} == '/') $dir = substr($dir,1);
if (substr($dir, -1) != '/') $dir .= '/';
// verify the existence of a directory
if(!is_dir($dir)) return 'Error! directory does not exist.'; 

$sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
$x=1;
$out='';
$output = array();
$stack = array();
if ($handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != ".." && $file != "Thumb.db") {
          $rash = array_pop(explode('.',$file));
          $fname = str_replace('.'.$rash, '', $file);
          if(in_array($rash, $filetip)){ 
            $size = filesize($dir.$file);
            $fdclass = trim(strlen($class)) > 0 ? $class.'_'.$rash : $rash;
            $sizef = round($size/pow(1024, ($i = floor(log($size, 1024)))), $i > 1 ? 2 : 0) . $sizes[$i];
            if($size != 0){
              if(($x-1 < $limit+$start+$offset && $x > $offset+$start) || ($offset == $start && $offset == $limit)){
                //$out .= $modx->getChunk($tpl,array('file'=>$dir.$file, 'fname'=>$fname, 'size'=>$sizef, 'fidx'=>$x, 'fdclass'=>$fdclass));
                array_push($stack,$modx->getChunk($tpl,array('file'=>$dir.$file, 'fname'=>$fname, 'size'=>$sizef, 'fidx'=>$x, 'fdclass'=>$fdclass)));
              }
              $x++;
            }
          }
        } 
    }
    closedir($handle);
    natsort($stack);
    $stackstring = implode(", ", $stack);

    $stackstring = ereg_replace(',', $probel, $stackstring);
    echo $stackstring;
}
if (!$inCache && isset($fcache)){
  $modx->cacheManager->set($keyc, $output, $cachetime);
}

$modx->setPlaceholder('total',$x-1);
return $output['out'];
Ага. И от момента. Думаю мою статью о наводнении в Крымску большей части кликали.
  • avatar tiptop
  • 0
Ну у меня тогда до 100 в месяц доходило, но это напрямую зависит от контента.
Понимаю) Консоль вещь не заменимая)
Будет шикарно)