1/* ============================================================================ 2 * demaf-products.js â ëë§í ì íÂ·ë£¨í´ ë°ì´í° ë¨ì¼ ìì¤ (Cafe24 ì ì ì¤ë ì·) 3 * ---------------------------------------------------------------------------- 4 * ì¬ì©ì²: skin30/index_v2.html (ë©ì¸ 루í´), page/find-my-skin-type.html (ì§ë¨ ì±), 5 * page/skin-type-test.html (í¼ë¶íì ì§ë¨), page/landing-v2.html ë±. 6 * ê°ê²©/ì´ë¯¸ì§ ë³ê²½ ì ì´ íì¼ 1ê³³ë§ ìì . 7 * ë¡ë: <script src="/js/demaf-products.js?v=YYYYMMDD"></script> 8 * ì ì: window.DEMAF_PRODUCTS = { 9 * DATA, ITEM, COPY, get(no), url(no), 10 * ROUTINE_TITLE, ROUTINE_MATRIX, TRIAL_KIT, routineLine(items), trialKitFor(items) 11 * } 12 * 13 * ì¤ë ì· ê¸°ì¤ì¼: 2026-08-13 â ì ìíì ìì¸íì´ì§ ì¤ì ê°(og:title / íë§¤ê° / og:image)ê³¼ 14 * ëì¡°í´ ê°±ì íë¤. ì´ì ì¤ë ì·ì EGF ì°íì´ 71,200ì(ì¤ì 98,000ì), ì¸í¸ 4ì¢ ì ê°ê²©Â·ìíëª ì´ 15 * ê°í¸ ì ê°ì¼ë¡ ë¨ì ììë¤. ê°ê²©ì ë°ê¿ ëë ìì¸íì´ì§ ê°ì ê·¸ëë¡ ì®ê¸¸ ê². 16 * ========================================================================== */ 17(function (w) { 18 'use strict'; 19 20 /* ===== ì í ì ì 매í (product_no â ì´ë¦/ê°ê²©/ì´ë¯¸ì§) ===== 21 * name = ìì¸íì´ì§ ë ¸ì¶ëª , short = ì¹´ë·íì ì°ë ì§§ì ì´ë¦ 22 * sale = í ì¸ í매ê°(ìì ëë§). price ë ì ê°. */ 23 var DATA = { 24 /* ê°ë³ ìí */ 25 10202: { name: 'í¼ì¤í¸ ì¸ë¼ ë§ë¥ê¸°ì´ ì¤ë¦¬ì§ë 155ml', short: 'ë§ë¥ê¸°ì´ ì¸ë¼', price: '34,000ì', image: 'https://demaf.kr/web/product/big/202608/11760ab76d1ea630dc3ea2326c71920b.jpg' }, 26 10241: { name: 'í¼ì¤í¸ ì¸ë¼ ë§ë¥ê¸°ì´ ë¼ì´í¸ 155ml', short: 'ë§ë¥ê¸°ì´ ì¸ë¼ ë¼ì´í¸', price: '34,000ì', image: 'https://demaf.kr/web/product/big/202608/b9bfdf90978a8ab7938558642d13c34d.jpg' }, 27 10064: { name: 'íí ë 30% ì°í 60ml', short: 'íí ë 30% ì°í', price: '46,000ì', image: 'https://demaf.kr/web/product/big/202608/b002f34dd4ab8e7cfb3f1b4f429c4147.jpg' }, 28 10238: { name: 'íí ë 10% ì°í 60ml', short: 'íí ë 10% ì°í', price: '38,000ì', image: 'https://demaf.kr/web/product/big/202608/7749257b2dd28dbbc906d6a52cb2fef1.jpg' }, 29 10071: { name: 'EGF í©íì´ë ì°í 60ml', short: 'EGF í©íì´ë ì°í', price: '98,000ì', image: 'https://demaf.kr/web/product/big/202608/eacbb837581937c9f2b11c9e573f9735.jpg' }, 30 10062: { name: 'í¬ë¦¼ì¤ì»´í¸ë£¨ ì¥ë²½ í¬ë¦¼ 50ml', short: 'í¬ë¦¼ì¤ì»´í¸ë£¨ í¬ë¦¼', price: '38,000ì', image: 'https://demaf.kr/web/product/big/202608/b3ccbe3f55a7273c0f36f5fdf1fdf6df.jpg' }, 31 10255: { name: 'í¬ë¦¼ì¤ì»´í¸ë£¨ ì¥ë²½ í¬ë¦¼ ë¼ì´í¸ 50ml', short: 'í¬ë¦¼ì¤ì»´í¸ë£¨ í¬ë¦¼ ë¼ì´í¸', price: '38,000ì', image: 'https://demaf.kr/web/product/big/202608/6645eb4a25bde909f272802d2bea612d.jpg' }, 32 10190: { name: '그린 ìì¹´ í¬ì´ ì°í 50ml', short: '그린 ìì¹´ í¬ì´ ì°í', price: '42,000ì', image: 'https://demaf.kr/web/product/big/202608/8f58103b2f7bc8b4684749bb2a3b89d3.jpg' }, 33 10182: { name: 'ë§ì´ ê¸ë¡ì° ë§ë¥ì¤ì¼ 20ml', short: 'ë§ë¥ì¤ì¼', price: '21,000ì', image: 'https://demaf.kr/web/product/big/202608/5a1547826a59c1d2e646bb07c7bac38f.jpg' }, 34 35 /* ë£¨í´ ì¸í¸ (본í) */ 36 10218: { name: '[ê±´ì±/ê±´ì¡°ë³µí©ì±] ìë¶ ì§ì 루í´', short: 'ìë¶ ì§ì 루í´', price: '118,000ì', sale: '100,300ì', image: 'https://demaf.kr/web/product/big/202608/140c195dd51e23266a994475015c89a1.jpg' }, 37 10247: { name: '[ì§ì±/ì ë¶ë³µí©ì±] í¸ë¬ë¸ ì§ì 루í´', short: 'í¸ë¬ë¸ ì§ì 루í´', price: '110,000ì', sale: '93,500ì', image: 'https://demaf.kr/web/product/big/202608/2f76765f8815b14c91c5ab6f31faec64.jpg' }, 38 10219: { name: '[ê±´ì±/ê±´ì¡°ë³µí©ì±] íë ¥ ê´ì± 루í´', short: 'íë ¥ ê´ì± 루í´', price: '170,000ì', sale: '144,500ì', image: 'https://demaf.kr/web/product/big/202608/888f65de9e59a4425ef4e6fe6cc6e58b.jpg' }, 39 10246: { name: '[ì§ì±/ì ë¶ë³µí©ì±] íë ¥ ëì ì¼ì´ 루í´', short: 'íë ¥ ëì ì¼ì´ 루í´', price: '170,000ì', sale: '144,500ì', image: 'https://demaf.kr/web/product/big/202608/cb23c2da6f0291739dbd36d57d2e9eb1.jpg' }, 40 10240: { name: '[ì§ì±/ì ë¶ë³µí©ì±] 모공 ì¼ì´ 루í´', short: '모공 ì¼ì´ 루í´', price: '110,000ì', sale: '93,500ì', image: 'https://demaf.kr/web/product/big/202608/e90b5c781894eb7832539b40a02ec113.jpg' }, 41 10242: { name: '[ê±´ì±/ê±´ì¡°ë³µí©ì±] ê¿ê´ íë ¥ ì¼ì´ 루í´', short: 'ê¿ê´ íë ¥ ì¼ì´ 루í´', price: '216,000ì', sale: '183,600ì', image: 'https://demaf.kr/web/product/big/202608/2fdd37c503de0decf61f11602778e29b.jpg' }, 42 43 /* ì²´íí¤í¸ (1ì¸ 1í íì · ìì¸íì´ì§ìì 본ì¸ì¸ì¦ í 구매) 44 구 ì°ì»´í¤í¸ 10151/10152 를 ëì²´í ì ê· 3ì¢ . */ 45 10270: { name: '[ì²´íí¤í¸] ì기ì기 ì¥ë²½ í¤í¸(ë§ë¥ê¸°ì´ 50ml + íí ë 30% ì°í 20ml + í¬ì»´ì¸ 15ml)', short: 'ê±´ì±ì© ì²´íí¤í¸', price: '54,000ì', sale: '14,900ì', image: 'https://demaf.kr/web/product/big/202608/aff80dea27c416df54114
4517f1f3eecf0.jpg' }, 46 10271: { name: '[ì§ì±ì© ì²´íí¤í¸] ì기ì기 ì¥ë²½ í¤í¸ for oily skin(ë§ë¥ê¸°ì´ ë¼ì´í¸ 50ml + 그린 ìì¹´ í¬ì´ ì°í 20ml + í¬ì»´ì¸ ë¼ì´í¸ 20ml)', short: 'ì§ì±ì© ì²´íí¤í¸', price: '53,000ì', sale: '14,900ì', image: 'https://demaf.kr/web/product/big/202608/4ddb8fd6a82cb8ca5bb5876b9796ba76.jpg' }, 47 10269: { name: '[ì²´íí¤í¸] ì기ì기 ì¸ì í¤í¸(ë°í¬í´ë ì 50ml + ì¤ì¼í´ë ì 40ml + ì ¤ í´ë ì 30ml)', short: 'ì¸ì ì²´íí¤í¸', price: '30,000ì', sale: '14,900ì', image: 'https://demaf.kr/web/product/big/202608/3608d0a07cb980d440a3ae2f828aecc6.jpg' } 48 }; 49 50 /* ===== ìì´í ë³ì¹ â product_no ===== 51 * â» creamLight ë ì¤ë¦¬ì§ë(10062)ì´ ìë ë¼ì´í¸ ì ì© 10255 ë¡ ì ì . 52 * â» oil(ë§ë¥ì¤ì¼ 10182) ì ê· ì¶ê° â ê±´ì±Ã30-40ë ë£¨í´ ì ì . */ 53 var ITEM = { 54 serum: 10202, // ë§ë¥ê¸°ì´ ì¤ë¦¬ì§ë 55 serumLight: 10241, // ë§ë¥ê¸°ì´ ë¼ì´í¸(ì§ì±ì©) 56 panthenol30: 10064, // íí ë 30% ì°í 57 panthenol10: 10238, // íí ë 10% ì°í 58 egf: 10071, // EGF í©íì´ë ì°í 59 cream: 10062, // í¬ë¦¼ì¤ì»´í¸ë£¨ ì¤ë¦¬ì§ë 60 creamLight: 10255, // í¬ë¦¼ì¤ì»´í¸ë£¨ ë¼ì´í¸ 61 cica: 10190, // 그린 ìì¹´ í¬ì´ ì°í 62 oil: 10182 // ë§ì´ ê¸ë¡ì° ë§ë¥ì¤ì¼ 63 }; 64 65 /* ===== ìì´í ë³ íìì© ì¹´í¼ (ì¤í ë¼ë²¨ + í¨ë¥ í ì¤) ===== 66 * step = ì¤í¨ì¼ì´ ìì(1 ì¸ë¼ â 2 ì°í â 3 í¬ë¦¼). 루í´ì STEP ë³ë¡ ë¬¶ì´ ë³´ì¬ì¤ ë ì´ë¤. */ 67 var COPY = { 68 serum: { step: 1, n: 'ì¸ë¼', w: '첫 ìë¶ì¸µì ë§ë¤ì´ì' }, 69 serumLight: { step: 1, n: 'ì¸ë¼', w: 'ì ë¶ ìì´ ê°ë²¼ì´ ìë¶' }, 70 panthenol30: { step: 2, n: 'ì°í', w: 'ìë¶ì ê°ëê³ ì¥ë²½ì íë³µí´ì' }, 71 panthenol10: { step: 2, n: 'ì°í', w: 'ì§ì±ì© ê°ë²¼ì´ ì¥ë²½ ì¼ì´' }, 72 egf: { step: 2, n: 'ì°í', w: 'í¼ë¶ ì¬ìì ìê·¹í´ ë ¸í ì§í ê°ì ' }, 73 cream: { step: 3, n: 'í¬ë¦¼', w: 'ë°¤ì 모ë ì±ë¶ì ì ê°ì¤ì' }, 74 creamLight: { step: 3, n: 'í¬ë¦¼', w: 'ê°ë²¼ì´ ë§ë¬´ë¦¬ â ë²ë¤ê±°ë¦¼ ìì´' }, 75 cica: { step: 2, n: 'ì°í', w: 'ì§ì íê³ ê·¼ë³¸ë¶í° ì ë¶ì ì¡°ì í´ì' }, 76 /* ì¤ì¼ì ë©ì¸ 루í´(demaf-routines.js ì dry_old)ê³¼ ë§ì°¬ê°ì§ë¡ STEP 1 'ì ì±ì°ê¸°'ìì 77 ì¸ë¼ì ëí´ ì´ë¤. ë¨ë ì¤í ì´ ìëë¼ ì¸ë¼ì ë³´ê°ì¬ë¤. */ 78 oil: { step: 1, n: 'ì¤ì¼', w: 'ë³´ìµÂ·ê´ì±ë¥¼ í층 ëì´ì¬ë ¤ì' } 79 }; 80 81 /* ===== ë£¨í´ ì´ë¦ (í¼ë¶íì ë³) ===== */ 82 var ROUTINE_TITLE = { dry: 'ìë¶ ì§ì 루í´', combo: 'ìë¶/í¸ë¬ë¸ ì§ì 루í´', oily: 'í¸ë¬ë¸ ì§ì 루í´' }; 83 84 /* ===== ë£¨í´ ë§¤í¸ë¦ì¤ (skinType_age_concern) ===== 85 * age: 'young' = 10~20ë, 'adult' = 30~40ë ì´ì / set: 본í ë£¨í´ ì¸í¸ product_no 86 * ìë´ë´(index_skin_type_chat.html)ì´ ì°ë 24+6ì 매í¸ë¦ì¤ë¥¼ ì¬ê¸°ë¡ ì®ê²¨ ê³µì íë¤. */ 87 var ROUTINE_MATRIX = { 88 /* 10~20ë */ 89 'dry_young_concern_1': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 90 'dry_young_concern_2': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 91 'dry_young_concern_3': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 92 'dry_young_concern_4': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 93 'combo_young_concern_1': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 94 'combo_young_concern_2': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 95 'combo_young_concern_3': { items: ['serumLight', 'cica', 'creamLight'], set: 10240 }, 96 'combo_young_concern_4': { items: ['serumLight', 'panthenol30', 'creamLight'], set: 10247 }, 97 'oily_young_concern_1': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 98 'oily_young_concern_2': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 99 'oily_young_concern_3': { items: ['serumLight', 'cica', 'creamLight'], set: 10240 }, 100 'oily_young_concern_4': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 101 /* 30~40ë ì´ì */ 102 'dry_adult_concern_1': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 103 'dry_adult_concern_2': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 104 'dry_adult_concern_3': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 105 'dry_adult_concern_4': { items: ['serum', 'panthenol30', 'egf', 'cream'], set: 10242 }, 106 'combo_adult_concern_1': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 107 'combo_adult_concern_2': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 108 'combo_adult_concern_3': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 109 'combo_adult_concern_4': { items: ['serum', 'panthenol30', 'egf', 'cream'], set: 10242 }, 110 'oily_adult_concern_1': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 111 'oily_adult_concern_2': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 }, 112 'oily_adult_concern_3': { items: ['serumLight', 'cica', 'creamLight'], set: 10240 }, 113 'oily_adult_concern_4': { items: ['serumLight', 'egf', 'creamLight'], set: 10246 }, 114 /* concern_5 = ë³ë¤ë¥¸ ê³ ë¯¼ ìì â í¼ë¶íì ·ëì´ ê¸°ì¤ ëí ë£¨í´ */ 115 'dry_young_concern_5': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 116 'dry_adult_concern_5': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 117 'combo_young_concern_5': { items: ['serum', 'panthenol30', 'cream'], set: 10218 }, 118 'combo_adult_concern_5': { items: ['serumLight', 'cica', 'creamLight'], set: 10240 }, 119 'oily_young_concern_5': { items: ['serumLight', 'cica', 'creamLight'], set: 10240 }, 120 'oily_adult_concern_5': { items: ['serumLight', 'panthenol10', 'creamLight'], set: 10247 } 121 }; 122 123 /* ===== ì²´íí¤í¸ (ë£¨í´ ë¼ì¸ë³) ===== 124 * 본í ì¸í¸ê° ë¶ë´ì¤ë¬ì´ ì¬ëìê² ì ìíë 1ì¸ 1í íì í¤í¸. 125 * íì 기ì¤ì ì¸ë¼Â·í¬ë¦¼ì ë¼ì¸(ì¤ë¦¬ì§ë/ë¼ì´í¸)ì´ë¤. í¤í¸ì ë ì°íê¹ì§ 루í´ê³¼ ëê°ì§ë ìë¤ 126 * â ì: ì§ì± EGF 루í´ìë 그린 ìì¹´ê° ë ì§ì±ì© í¤í¸ë¥¼ ë¶ì¸ë¤. ë¼ì¸ë§ ë§ì¼ë©´ ì²´í 목ì ìë ì¶©ë¶íê³ ,
127 * í¤í¸ ì¢ ë¥ê° 2ê°ë¿ì´ë¼ ì°íê¹ì§ ë§ì¶ë ì¡°í©ì ì¡´ì¬íì§ ìëë¤. 128 * video = í¤í¸ë³ ì¬ì©ë² ìì(YouTube ID) 129 * reviews = ì²´íí¤í¸ SKU ìì²´ì 리뷰 ê°ì(2026-08-13ì ë§ë ì ìíì´ë¼ ìì§ ì ë¤). 130 * formulaReviews = í¤í¸ ìì ë 본í ì±ë¶ 3ì¢ ì 리뷰 ì를 í©ì¹ ê°(2026-08-24 ì¤í¬ëí, 131 * ì¶ì²: ìì¸íì´ì§ "리뷰 ê°ì ì ì²´" í ì¤í¸ + Product JSON-LD aggregateRating.reviewCount 132 * êµì°¨ê²ì¦). â íì¬ page/start.html ì ì´ ê°ì ì ì´ë¤ â ê°ì ì íì´ ê³¼ê±°ì ë¤ë¥¸ 133 * ìíIDë¡ ì¬ë±ë¡ë ì´ë ¥ê¹ì§ ìíë¦¬ë·°ê° í©ì³ì ë³´ì¬ì£¼ë ê°ì¼ ì ìì´ "ì¹´í24 ìì¬ëª° 134 * 리뷰 ìë§" ì구를 ë§ì¡±íëì§ íì í ì ììë¤. ëì ì§ì´ 56(ì²´íí¤í¸ 3ì¢ ì ì©, ì ê· 135 * ìì±)ì ë§ë¤ì´ ì¹´í24ê° ê·¸ ì리ìì ì¤ì ë¡ ë ëí ìí리뷰 ìì ¯ ë ¸ë를 ê·¸ëë¡ ì®ê²¨ 136 * ì°ë ë°©ìì¼ë¡ ë°ê¿¨ë¤(page/start.html ì poolReviewWidget() ì°¸ê³ ) â ì¤ì½íê° íì¤í 137 * ì§ì§ ê°ì´ë¼ ì´ìª½ì´ ì°ì ì´ë¤. ì´ íëë ê·¸ ë°©ìì´ ë§í ëì ì°¸ê³ ì©ì¼ë¡ ë¨ê²¨ ëë¤. 138 * ì¤ë¦¬ì§ë ë¼ì¸ = ë§ë¥ê¸°ì´ ì¤ë¦¬ì§ë(10202) 13,828 + íí ë30%(10064) 22,514 + í¬ì»´ì¸(10062) 12,653 = 48,995 139 * ë¼ì´í¸ ë¼ì¸ = ë§ë¥ê¸°ì´ ë¼ì´í¸(10241) 3,288 + 그린ìì¹´í¬ì´(10190) 3,000 + í¬ì»´ì¸ë¼ì´í¸(10255) 697 = 6,985 */ 140 var TRIAL_KIT = { 141 original: { no: 10270, video: 'DDOzO5UKqtY', reviews: 105, formulaReviews: 48995 }, 142 light: { no: 10271, video: 'dYmbvDJB2dI', reviews: 77, formulaReviews: 6985 }, 143 cleansing: { no: 10269, video: 'DDOzO5UKqtY', reviews: 33 } /* ì¸ì í¤í¸ (ë£¨í´ ë§¤ì¹ ëì ìë, formulaReviews 미측ì ) */ 144 }; 145 146 /* ë£¨í´ ìì´í 구ì±ì´ ì¤ë¦¬ì§ë ë¼ì¸ì¸ì§ ë¼ì´í¸ ë¼ì¸ì¸ì§ */ 147 function routineLine(items) { 148 if (!items || !items.length) return null; 149 if (items.indexOf('serumLight') !== -1 || items.indexOf('creamLight') !== -1) return 'light'; 150 if (items.indexOf('serum') !== -1 || items.indexOf('cream') !== -1) return 'original'; 151 return null; 152 } 153 154 /* ë£¨í´ êµ¬ì±ì ë§ë ì²´íí¤í¸ { no, video } (ìì¼ë©´ null) */ 155 function trialKitFor(items) { 156 var line = routineLine(items); 157 return line ? (TRIAL_KIT[line] || null) : null; 158 } 159 160 /* ===== í¬í¼ ===== */ 161 function url(no) { return '/product/detail.html?product_no=' + no; } 162 function get(no) { return DATA[no] || null; } 163 164 w.DEMAF_PRODUCTS = { 165 DATA: DATA, ITEM: ITEM, COPY: COPY, get: get, url: url, 166 ROUTINE_TITLE: ROUTINE_TITLE, ROUTINE_MATRIX: ROUTINE_MATRIX, TRIAL_KIT: TRIAL_KIT, 167 routineLine: routineLine, trialKitFor: trialKitFor 168 }; 169})(window);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.