We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 22588
    • 3 Posts
    Искал я в интернете, искал ... и ни одного законченного треда так и не нашел: возможно ли в MODx Evolution 1.0 создать страницу НЕ из менеджера? Попробовал 3 разные версии docmanager от ur001: страница вроде как нормально создается в менеджере, но выводиться категорически отказывается. Единственное решение - сохранить ЛЮБУЮ страницу в менеджере, тогда и эти страницы, созданные вручную, начинают работать...
    На сайте использую ditto для вывода этих генерируемых страниц - ditto их "не видит". Но и если в менеджере нажать "просмотр", выкидывается 404. Так есть ли какой-то способ создания страниц не из менеджера? Помогите, люди добрые!
    На всякий случай, код добавления страницы:
    function addAd(&$fields){
           require_once('assets/libs/docapi/document.class.inc.php');
           $unique = (time()%10000).rand(10,99);
           $doc = new Document();
           $doc->Set('parent',14);
           $doc->Set('template','ad');
           $doc->Set('alias','ad'.$unique);
           $doc->Set('pagetitle','Объявление №'.$unique);
           $doc->Set('content',$fields['content']);
           $doc->Set('tvemailAd',$fields['email']);
           $doc->Set('tvphoneAd',$fields['phone']);
           $doc->Set('description',$fields['contact']);
           $doc->Set('tvpriceAd',intval($fields['price']) );
           $doc->Save();
           return true;
    }
      • 22588
      • 3 Posts
      Сам же и отвечу на свой пост. Похоже, что все заработало, после того, как я нечестно спер код вставки документа из newspublisher. После 75 строки document.class.inc.php я добавил такой код:
      			$lastInsertId = $modx->db->getInsertId();
      			// put the document in the document_groups it should be in
      			// check that up_perms are switched on!
      			if($modx->config['use_udperms']==1) {
      				if(is_array($parentDocGroupsArray)) {
      					foreach ($parentDocGroupsArray as $dgKey=>$dgValue) {
      						$insertDocSql = "INSERT INTO ".$modx->getFullTableName('document_groups')."(document_group, document) values(".stripslashes($dgValue).", $lastInsertId)";
      						$insertDocRs = $modx->db->query($insertDocSql);
      						if(!$insertDocRs){
      							exit;
      						}
      					} // end foreach
      				} // end if doc group array exists
      			} // end if perms are used
      
      			// Handle privateweb
      			$modx->db->query("UPDATE ".$modx->getFullTableName("site_content")." SET privateweb = 0 WHERE id='$lastInsertId';");
      			$privatewebSql =    "
      				SELECT DISTINCT ".$modx->getFullTableName('document_groups').".document_group 
      				FROM ".$modx->getFullTableName('document_groups').", ".$modx->getFullTableName('webgroup_access')." 
      				WHERE 
      				".$modx->getFullTableName('document_groups').".document_group = ".$modx->getFullTableName('webgroup_access').".documentgroup 
      				AND 
      				".$modx->getFullTableName('document_groups').".document = $lastInsertId;";
      				$privatewebIds = $modx->db->getColumn("document_group",$privatewebSql);
      				if(count($privatewebIds)>0) {
      					$modx->db->query("UPDATE ".$modx->getFullTableName("site_content")." SET privateweb = 1 WHERE id = $lastInsertId;");	
      				}
      
      				// And privatemgr
      				$modx->db->query("UPDATE ".$modx->getFullTableName("site_content")." SET privatemgr = 0 WHERE id='$lastInsertId';");
      				$privatemgrSql =    "
      					SELECT DISTINCT ".$modx->getFullTableName('document_groups').".document_group 
      					FROM ".$modx->getFullTableName('document_groups').", ".$modx->getFullTableName('membergroup_access')." 
      					WHERE 
      					".$modx->getFullTableName('document_groups').".document_group = ".$modx->getFullTableName('membergroup_access')." .documentgroup 
      					AND 
      					".$modx->getFullTableName('document_groups').".document = $lastInsertId;";
      					$privatemgrIds = $modx->db->getColumn("document_group",$privatemgrSql);
      					if(count($privatemgrIds)>0) {
      						$modx->db->query("UPDATE ".$modx->getFullTableName("site_content")." SET privatemgr = 1 WHERE id = $lastInsertId;");	
      					}
      			// end of document_groups stuff!
      			// empty cache
      			include_once $modx->config['base_path']."manager/processors/cache_sync.class.processor.php";
      			$sync = new synccache();
      			$sync->setCachepath("assets/cache/");
      			$sync->setReport(false);
      			$sync->emptyCache(); // first empty the cache

      Может для кого-то это открытие Америки, но я убил на это весь день sad
        • 32725
        • 107 Posts
        Все было бы намного проще, если бы в MODx API были методы для создания ресурсов. Но к сожалению их нет.
        Заглянь в эту тему, http://modxcms.com/forums/index.php/topic,35663.0.html, здесь как раз пишется API для этих целей. Документы можно создавать одной функцией.
          My portfolio
          Самурай без меча подобен самураю с мечом, только без меча.
          • 29487
          • 385 Posts
          paintenzero
          достаточно очистки кэша (последние 5 строчек)