Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Дополнения

CfgTv: системные настройки из списка ТВ параметров из указанного документа

  • Дополнения
  • CfgTv
2234

CfgTv: системные настройки из списка ТВ параметров из указанного документа

Многие любят и активно юзают настройки сайта через [[getField? name=`tv_name` ...]]], создавая ресурс где все эти настройки в TV лежат. Но вот незадача, каждая такая настройка = 1 запросу, а значит и время генерации больше + неудобно.

А что если делать также, но вызов на странице будет [(cfg_footer_phone)], [(cfg_icq)] и так далее удобно правда?

Решение: CfgTv

Событие: OnBeforeDocFormSave

/**
 * CfgTv 0.1
 * Save TV as system setting from some resourse 
 * 
 *
 * @category    plugin
 * @version     1.0.0b
 * @author      Bumkaka
 * @internal    @properties &ids=ID ресурсов настроек;text;347 &prefix=Префикс;text;cfg_
 * @internal    @events OnBeforeDocFormSave
 * @internal    @modx_category Manager and Admin
 */

$e = &$modx->event;
switch($e->name){
    case 'OnBeforeDocFormSave':
		$list_id = explode(',',$ids);
		if(!in_array($_POST['id'],$list_id)) return;
		
		$SQL = "SELECT * FROM ".$modx->getFullTableName('site_tmplvars').";";
		$result = $modx->db->query($SQL);
		
		while($row = $modx->db->getRow($result)){
			$TVNAME[$row['id']] = $row['name'];
		}
		
		foreach($_POST as $key => $value){
			if (substr($key,0,2)!='tv') continue;
			$id=substr($key,2,strlen($key));
			$name=$prefix.$TVNAME[$id];
			$settings[$name]=$value;
			$SQL="SELECT * FROM ".$modx->getFullTableName('system_settings')." WHERE `setting_name`='".$name."'";
			$count=$modx->db->getRow($modx->db->query($SQL));
			if (!empty($count['setting_name'])){
				$SQL="UPDATE ".$modx->getFullTableName('system_settings')." SET `setting_value`='".$value."' WHERE `setting_name`='".$name."'";
				$modx->db->query($SQL);
			} else {
				$SQL="INSERT into ".$modx->getFullTableName('system_settings')." SET `setting_name`='".$name."',`setting_value`='".$value."'";
				$modx->db->query($SQL);
			}
		}
    break;
}