рдПрдХ рд╕рдЪреНрдЪреЗ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдХреЗ рд░реВрдк рдореЗрдВ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ MODx рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛, рд▓реЗрдЦреЛрдВ рдХреЗ рдвреЗрд░ рдФрд░ MODx CMF рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдмреЗрд╣рдж рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдерд╛ред рдХреНрд░рд╛рдВрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдореЗрд░реЗ рдорд▓реНрдЯреА-рдбреЛрдореЗрди "рд╣рдореНрд╕рдЯрд░" рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднрдпрд╛рдирдХ рдЖрдХрд╛рд░ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИ рд╣реИред рдмрд╣реБ-рдбреЛрдореЗрди рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рдерд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ MODx рдХреНрд░рд╛рдВрддрд┐ рдкрд░ рдПрдХ рдмрд╣реБ-рдбреЛрдореЗрди рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ред рдореИрдВрдиреЗ рдЗрдВрдЬрди рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдбреЛрдореЗрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХрд░ рджреАред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╣реА рдорд▓реНрдЯреА-рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╕рдВрджрд░реНрднреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдк-рдбреЛрдореЗрди рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ index.php рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдмрд┐рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
switch($_SERVER['SERVER_NAME']) { case 'sub1.domain.tld': $modx->initialize('sub1'); break; case 'sub2.domain.tld': $modx->initialize('sub2'); break; case 'sub3.domain.tld': $modx->initialize('sub3'); break; default: $modx->initialize('web'); }
рдпрджрд┐, рдХрд╣реЗрдВ, рдмрд╣реБрднрд╛рд╖рд╛рд╡рд╛рдж рдЖрдкрдХреЗ рд╕рдВрджрд░реНрдн рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рддреЛ рдЖрдк рдпрд╣ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
switch($_SERVER['SERVER_NAME']) { case 'domain.ru': case 'www.domain.ru': $modx->initialize('ru'); break;
рдФрд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рдкреЛрд░реНрдЯрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЬрд╣рд╛рдВ рдЙрдк-рдбреЛрдореЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ / рдбреЛрдореЗрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмрджрд▓рддреА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдХреЗ рд╕рд╛рде рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рд╣реИред рдпрд╣ рдЖрдкрдХрд╛ рдирд┐рдЬреА рд╕рд░реНрд╡рд░ рдпрд╛ рдЖрдкрдХреА рдкрд╕рдВрджреАрджрд╛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ VDS-ka рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЙрдк-рдбреЛрдореЗрди рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдк livejournal.com рдХрд╛ рдЕрдкрдирд╛ рдПрдирд╛рд▓реЙрдЧ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ ...
рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рд╣реИ; рдореИрдВрдиреЗ рдЕрднреА рддрдХ MODx рдХреНрд░рд╛рдВрддрд┐ рдПрдкреАрдЖрдИ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдПрдХ рд╕рдВрджрд░реНрдн рдФрд░ рдПрдХ рдЙрдкрдбреЛрдореЗрди рдмрдирд╛рдирд╛ рдПрдХ рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдФрд░ рд╣реИред рдпрд╣рд╛рдВ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЙрдк-рдбреЛрдореЗрди рд╣реЛрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреИрд╕реЗ рдХрд╣рд▓рд╛рдПрдВрдЧреЗред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрджрд┐ рд╕рдВрджрд░реНрдн рдЙрдкрд╕рдореВрд╣ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИ:
define("myRootDomain","domain.tld"); $ctxKey = 'web'; if (preg_match('#(\w+).'.myRootDomain.'#si',$_SERVER['SERVER_NAME']) > 0) { $ctxKey = preg_replace('#(\w+).'.myRootDomain.'#si','\1',$_SERVER['SERVER_NAME']); if ($ctxKey == 'www') $ctxKey = 'web'; }
MODx рдореЗрдВ рдореБрдЦреНрдп рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрджрд░реНрдн рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ,
reference_setting рдЯреЗрдмрд▓ ред рдкрд╣рд▓реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрджрд░реНрднреЛрдВ (рдХреБрдВрдЬреА, рд╡рд┐рд╡рд░рдг, рдкреНрд░рджрд░реНрд╢рди рдХреНрд░рдо) рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ, рд╕рдВрджрд░реНрдн рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рдпрд╛рдж рд░рдЦреЗрдВ, рдЖрдо рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрдареЛрдВ, рд╣реЛрд╕реНрдЯ рдФрд░ рдкрд╕рдВрдж рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА? рдпрд╣ рд╕рдм рд╡рд╣рд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдФрд░ рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА:
$SQL = "SELECT * FROM ".$table_prefix." WHERE `key`='http_host' AND `value`='".$_SERVER['SERVER_NAME']."'";
рдпрджрд┐ рдкреБрд░рд╛рдиреЗ рдЗрд╡реЛрд▓реНрдпреВрд╢рди рдореЗрдВ рд╕рдВрджрд░реНрдн рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдереА, рддреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛрдЧрд╛:
$ctxKey = 'web'; if ($result = $modx->db->query($SQL)) if ($row = mysql_fetch_assoc($result)) $ctxKey = $row['context_key'];
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, MODx рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ MODx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рдЧреНрд░рдВрдЯ рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ MODx рдХреНрд░рд╛рдВрддрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ xPDO рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдмрд╛рддрдЪреАрдд рд╣реИред
MODx рдХреНрд░рд╛рдВрддрд┐ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рд╕рд╣рд┐рдд Google рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдХрд┐ MODx рдХреНрд░рд╛рдВрддрд┐ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд▓реЗрдХрд┐рди,
рдХреЛрд░ / рдореЙрдбрд▓ / modx / modx.php рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рд╛:
$pluginEventTbl= $this->getTableName('modPluginEvent'); $eventTbl= $this->getTableName('modEvent'); $pluginTbl= $this->getTableName('modPlugin'); $propsetTbl= $this->getTableName('modPropertySet'); $sql= " SELECT Event.name AS event, PluginEvent.pluginid, PropertySet.name AS propertyset FROM {$pluginEventTbl} PluginEvent INNER JOIN {$pluginTbl} Plugin ON Plugin.id = PluginEvent.pluginid AND Plugin.disabled = 0 INNER JOIN {$eventTbl} Event ON {$service} Event.name = PluginEvent.event LEFT JOIN {$propsetTbl} PropertySet ON PluginEvent.propertyset = PropertySet.id ORDER BY Event.name, PluginEvent.priority ASC "; $stmt= $this->prepare($sql); if ($stmt && $stmt->execute()) { while ($ee = $stmt->fetch(PDO::FETCH_ASSOC)) { $eventElementMap[$ee['event']][(string) $ee['pluginid']]= $ee['pluginid'] . (!empty($ee['propertyset']) ? ':' . $ee['propertyset'] : ''); } }
рдпрд╣ modX рд╡рд░реНрдЧ рдХреЗ getEventMap рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИред рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рд▓рдВрдмреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ:
$ctxCur = 'web'; $ctxQur = "SELECT * FROM `".$table_prefix."context_setting` WHERE `key`='http_host' AND `value`='".$_SERVER['SERVER_NAME']."'"; $ctxSQL = $modx->prepare($ctxQur); if ($ctxSQL && $ctxSQL->execute()) if ($ctxRes = $ctxSQL->fetch(PDO::FETCH_ASSOC)) $ctxCur = $ctxRes['context_key']; $modx->initialize($ctxCur);
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ http_host рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╣реА рд╕рдВрдХреЗрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рдХрд╛ рдирд╛рдо рдЙрдкрдбреЛрдореЗрди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рдо рдХреЗ рд▓рд┐рдП рд╣реИред рдореЗрд░реА рдЕрдЧрд▓реА рдмрд╛рдЗрдХ рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!