$analytics = $modx->getObject('cgSetting', array('key' => 'solo.analytics'));
if (!$analytics) {
$analytics = $modx->newObject('cgSetting');
$analytics->fromArray(array(
'key' => 'solo.analytics',
'label' => 'Google Analytics code',
'xtype' => 'textfield',
'description' => 'Fill in your Google Analytics Tracking ID (like UA-XXXXXXX-X) to activate Analytics.',
'is_required' => '0',
'sortorder' => '5',
'value' => '',
'group' => $soloSiteSettings->get("id")
));
$analytics->save();
}$setSiteName = $modx->getOption('change_sitename', $options, false);
if ($setSiteName) {
$siteName = $modx->getOption('sitename', $options);
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting site name to: ' . $siteName);
$setting = $modx->getObject('modSystemSetting','site_name');
$setting->set('value', $siteName);
$setting->save();
}How do I set a custom context setting in this resolver?
This question has been answered by multiple community members. See the first response.
$key = 'some_setting_key';
$setting = $modx->getObject('modContextSetting', array('key' => $key));
if ($setting) {
$setting->set('value', 'myvalue');
$setting->save();
} else {
$modx->log(modX::LOG_LEVEL_ERROR, 'No setting with key ' $key . ' found');
}
/* Set desired value for error page */
$errorPage = $modx->getOption('error_page');
/* Or just $errorPage = 12 */
$contexts = array('nl', 'web');
foreach ($contexts as $context) {
/* Get setting if it exists */
$setting = $modx->getObject('modContextSetting',
array(
'context_key' => $context,
'key' => 'error_page',
)
);
if (! $setting) {
/* Create setting */
$setting = $modx->newObject('modContextSetting');
$setting->set('context_key', $context);
$setting->set('key', 'error_page');
)
/* Set value and save */
$setting->set('value', $errorPage);
$setting->save();
}
Console running...
Attempting to install package with signature: modx_start-1.0.0-pl
Package found...now preparing to install.
Grabbing package workspace...
Workspace environment initiated, now installing package...
Skipping vehicle object of class modContextSetting (data object exists and cannot be upgraded); criteria: Array ( [key] => MODX Start )
Attempting to preserve files at E:/Projects/localhost/test/core/components/modx_start into archive E:/Projects/localhost/test/core/packages/modx_start-1.0.0-pl/modCategory/6d64d29e2a5deddfd631b3c4f583b742.0.preserved.zip
Attempting to preserve files at E:/Projects/localhost/test/assets/components/modx_start into archive E:/Projects/localhost/test/core/packages/modx_start-1.0.0-pl/modCategory/6d64d29e2a5deddfd631b3c4f583b742.1.preserved.zip
<?php
$modx =& $object->xpdo;
$setSiteName = $modx->getOption('change_sitename', $options, false);
if ($setSiteName) {
$siteName = $modx->getOption('sitename', $options);
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting site name to: ' . $siteName);
$setting = $modx->getObject('modSystemSetting','site_name');
$setting->set('value', $siteName);
$setting->save();
}
$addCorePages = $modx->getOption('add_core_pages', $options, false);
if ($addCorePages) {
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting Error Page ID to 2 in site settings.');
$errorPage = $modx->getObject('modSystemSetting','error_page');
$errorPage->set('value', '2');
$errorPage->save();
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting Default Template to 2 in site settings.');
$default_template = $modx->getObject('modSystemSetting','default_template');
$default_template->set('value', '2');
$default_template->save();
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting Site Unavailable page ID to 3 in site settings.');
$site_unavailable_page = $modx->getObject('modSystemSetting','site_unavailable_page');
$site_unavailable_page->set('value', '3');
$site_unavailable_page->save();
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting Unauthorized Page ID to 4 in site settings.');
$unauthorized_page = $modx->getObject('modSystemSetting','unauthorized_page');
$unauthorized_page->set('value', '4');
$unauthorized_page->save();
/* Add context setting 1 */
$contexts = array('web');
$errorPage = $modx->getOption('error_page');
foreach ($contexts as $context) {
/* Get setting1 if it exists */
$setting1 = $modx->getObject('modContextSetting',
array(
'context_key' => $context,
'key' => 'error_page',
)
);
if (! $setting1) {
/* Create setting */
$setting1 = $modx->newObject('modContextSetting');
$setting1->set('context_key', $context);
$setting1->set('key', 'error_page');
)
/* Set value and save */
$setting1->set('value', $errorPage);
$modx->log(xPDO::LOG_LEVEL_INFO,'Setting error_page to 2 for web context');
$setting1->save();
}
}
$modx->log(xPDO::LOG_LEVEL_INFO,'Finished adding site settings');
return true;