MODX рдХреЗ рд▓рд┐рдП рд╕реИрд╕ рдкреНрд▓рдЧрдЗрди

рд╕рд╛рд╕
рд╢реБрд░реБрдЖрддреА: рдПрдХ рдЖрд╕рд╛рди рд▓реЗрдЖрдЙрдЯ рдЙрдкрдХрд░рдг, рдЬреЛ рдореЙрдбреЗрдХреНрд╕ рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдмрдирд╛рддрд╛ рдФрд░ рд╕рдордЭрддрд╛ рд╣реИред

рд╕реИрд╕ - рд╕рд╣реА рд╕реАрдПрд╕рдПрд╕

рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ - рд╕рд╛рд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ CSS рдХреА рдХрдореА (CSS3 рдХреЗ рд▓рд┐рдП рд╕рд╣реА) рдХреЗ рдмрд╣реБрдд рд╕реЗ (рдпрджрд┐ рд╕рднреА рдирд╣реАрдВ) рд╣реИред рдХреБрдЫ рднреА рдирд╣реАрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рд░реВрдмреА рдХреЗ рд░реЗрд▓ рдкрд░ рдкрд╛рд▓рди (рдЬрд╣рд╛рдВ рд╕реЗ рд╕рд╛рд╕ рдХреА рдЬрдбрд╝реЗрдВ рдЖрддреА рд╣реИрдВ) рдХреЛ рдкреНрдпрд╛рд░ рд╕реЗ "рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░" рдХрд╣рддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рд╕реИрд╕ рдХреЛ "рд╕реНрд╡рд╛рдж" рдХреЗ рд▓рд┐рдП рдЖрдЬрд╝рдорд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЖрдЙрдЯ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд▓рдбрд╝рд╛рдХреВ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреИрдорд╛рдиреЗ рдХреЗ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХреЛ $ рдЪрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ , рддрд╛рдХрд┐ рдЕрдЧрд░ рдЙрд╕реЗ рдЕрдЪрд╛рдирдХ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ "рд╕рд╛рдЗрдЯ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╣рд░рд╛ рдмрдирд╛ рджреЗрдВ"!

ModX
рд╣рдорд╛рд░реЗ рд╕рдордп рдХреЗ рд░реБрдЭрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд░рд╣реЛ

рд╕реАрдПрдордПрд╕ MODx рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд PHP рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдХрд┐ sass рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ (re) рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: "php sass parser"

рд╣рдореЗрдВ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ phamlp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрдВрддреНрд░ рдореЗрдВ рд╣реИред рдлрд╛рдорд▓реНрдк рдореЗрдВ рдПрдХ рдФрд░ "рд░реВрдмреА рдорд┐рдард╛рд╕" рднреА рд╣реИ - рдПрдЪрдПрдордПрд▓ (HTML рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди), рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдХрд╣рд╛рдиреА рд╣реИред

MODx рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди

рдХреБрдЫ рд╕рд░рд▓ рдХрджрдо:
1. phamlp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
2. "рд╕рдВрдкрддреНрддрд┐ / рдкреНрд▓рдЧрдЗрдиреНрд╕ / phamlp" рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВ (рдпрд╣ haml рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реИ)
3. "рдПрд▓рд┐рдореЗрдВрдЯреНрд╕" рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди "SASS" рдмрдирд╛рдПрдВ
4. рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:
//    (   ) $style_dir = MODX_BASE_PATH.'assets/css/'; //   $files = scandir(rtrim($style_dir,'/')); //     sass foreach ($files as $sass_file) if (is_file($style_dir.$sass_file) && (strtolower(pathinfo($style_dir.$sass_file,PATHINFO_EXTENSION))=='sass')) { //   md5   .sass  $sass_hash = hash('md5',file_get_contents($style_dir.$sass_file)); //    ( .sasshash )       -  css if (!file_exists($style_dir.$sass_file.'hash')||($sass_hash!=file_get_contents($style_dir.$sass_file.'hash'))) { //   phamlp include_once(MODX_BASE_PATH.'assets/plugins/phamlp/sass/SassParser.php'); //       sass  $sass = new SassParser(array( 'cache'=>false, 'style'=>'expanded', 'vendor_properties'=>array( 'border-radius' => array( '-moz-border-radius', '-webkit-border-radius', '-khtml-border-radius' ), 'border-top-right-radius' => array( '-moz-border-radius-topright', '-webkit-border-top-right-radius', '-khtml-border-top-right-radius' ), 'border-bottom-right-radius' => array( '-moz-border-radius-bottomright', '-webkit-border-bottom-right-radius', '-khtml-border-bottom-right-radius' ), 'border-bottom-left-radius' => array( '-moz-border-radius-bottomleft', '-webkit-border-bottom-left-radius', '-khtml-border-bottom-left-radius' ), 'border-top-left-radius' => array( '-moz-border-radius-topleft', '-webkit-border-top-left-radius', '-khtml-border-top-left-radius' ), 'box-shadow' => array('-moz-box-shadow', '-webkit-box-shadow'), 'box-sizing' => array('-moz-box-sizing', '-webkit-box-sizing'), 'opacity' => array('-moz-opacity', '-webkit-opacity', '-khtml-opacity'), ) )); //  css  file_put_contents( $style_dir.substr($sass_file,0,-4).'css', $sass->toCss($style_dir.$sass_file) ); //   file_put_contents( $style_dir.$sass_file.'hash', $sass_hash ); } } 

5. "рд╕рд┐рд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ" рдЯреИрдм рдкрд░, OnWebPageInit рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░реЗрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рд╡реЗрдм рдкреЗрдЬ рдХреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд▓рдЧрдЗрди рдХреЛрдб рдЪрд▓рд╛рдирд╛ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рд╕рд╛рдЗрдЯ рдкрд░ рдХрд┐рд╕реА рдкреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рд╕рдордп рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп MODx рдШрдЯрдирд╛рдУрдВ (OnWebPagePrerender, OnParseDocument) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
6. рдкреНрд▓рдЧрдЗрди рд╕рд╣реЗрдЬреЗрдВ

рд╕рд╛рд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд MODx рд╡реЗрдм рдПрдбрд┐рдЯрд░ (рдпрд╛ рдиреЛрдЯрдкреИрдб рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдПрдлрд╝рдЯреАрдкреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛) рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (рдЖрдИрдбреАрдИ) рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЙрдкрдХрд░рдг (рдПрдлрд╝рдЯреАрдкреА рдкреНрд░рдмрдВрдзрдХ, рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ, рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг, рдЖрджрд┐)ред

"рд╕рдВрдкрддреНрддрд┐ / рд╕реАрдПрд╕рдПрд╕" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ $ style_dir рдЪрд░ рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдПрдХреНрд╕рдЯреЗрдВрд╢рди .sass рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╣рдо рд╕рд╛рдЗрдЯ рдХреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдпрд╛ рдЦреБрд▓реЗ рдкреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЬрд┐рд╕ рд╕рдордп OnWebPageInit рдИрд╡реЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп SASS рдкреНрд▓рдЧрд┐рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдПрдХ рддрд╛рдЬрд╝рд╛ sass рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ css рд╡рд░реНрдЬрди рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдЧрд╛, рдЬреЛ рддрдм рд╕реЗ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

рд╕рд╛рдЗрдЯ рдХреА рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдкрд░ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдХреИрди рди рдХрд░реЗред

UPD: MODx Evo рдФрд░ MODx Revo рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдХреЗ рдирд╛рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВред

Source: https://habr.com/ru/post/In137747/


All Articles