We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31309
    • 70 Posts
    OnDocFormSave
      • 897
      • 1,620 Posts
      ресурсы-управление ресурсами-плагины-новый плагин
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
        • 1611
        • 591 Posts
        А дальше по примеру любого плагина, проверяешь какое событие произошло (хороший стиль) и если твое, то делаешь свои грязные дела. Ну и не забудь нужную тебе галочку поставить на вкладке «системные события».
          • 25463
          • 61 Posts
          Вот, на всякий случай представляю Вам пример.
          Добавление дочернего подраздела в свежедобавленный раздел

          require_once($modx->config[’base_path’]."assets/libs/docapi/docmanager.class.inc.php");
          require_once($modx->config[’base_path’]."assets/libs/mylib.php");

          $e = &$modx->Event;
          switch ($e->name)
          {
          case "OnDocFormSave":
          $id=$params[’id’];
          $doc=&$modx->getDocument($id,’*’);

          $tvars=&$modx->getTemplateVarOutput(’*’,$id, 1);

          $tpl=$doc[’template’];

          // Все эти действия выполнять только для новых документов
          if ($doc[’id’]==GetMaxContentId())
          {

          // Если вводим новый год , то добавляем 12 записей с месяцами
          if ($tpl==10)
          {
          // Добавить 12 записей - месяцев
          for ($ii=1;$ii<13;$ii++)
          {

          $strm=$ii;
          if ($ii<10)
          $strm=’0’.$strm;
          $dd=new Document();
          $dd->Set(’parent’,$doc[’id’]);
          $dd->Set(’template’,11);
          $dd->Set(’alias’,$strm);
          $dd->Set(’pagetitle’,$strm);
          $dd->Set(’type’,’document’);
          $dd->Set(’hidemenu’,0);
          $dd->Set(’menuindex’,$ii);
          $dd->Save();
          };

          // Указать, что текущий документ - папка
          $ddp=new Document($doc[’id’]);
          $ddp->Set(’isfolder’,1);
          $ddp->Save();
          }
          };

          break;
          default :
          return; // stop here - this is very important.
          break;
          };

          Данный пример добавляет для нового раздела типа "год" (код шаблона = 10) 12 подразделов типа "месяц" (код шаблона = 11)

          Для работы с новыми документами используется класс известный класс Document

          Выражение if ($doc[’id’]==GetMaxContentId()) определяет, является ли вводимая запись новой
          Функция GetMaxContentId() написана мной и определяет ID последнего введенного раздела и
          в данном случае описана в файле assets/libs/mylib.php
          ее код:

          // Получить максимальное значение числового поля в определенной таблице
          function GetMaxFieldValue($tablename, $fieldname)
          {
          global $modx;
          $strSQL=’select max(’.$fieldname.’) as max_value from ’.$tablename;
          if ($result=$modx->dbQuery($strSQL))
          {
          while( $row = $modx->db->getRow( $result ))
          {
          return $row[’max_value’];
          };
          };

          return 0;
          };

          // Получить максимальное значение в таблице содержимого
          function GetMaxContentId()
          {
          return GetMaxFieldValue(’modx_site_content’,’id’);
          };
            • 31136
            • 72 Posts
            Quote from: roman_yrv at May 29, 2009, 01:40 AM

            Выражение if ($doc[’id’]==GetMaxContentId()) определяет, является ли вводимая запись новой
            А что мешает для этого использовать значение ’mode’ массива $params события? Здесь все просто, либо mode=’new’ либо mode=’upd’.