1// æç¨¿ãã¼ã¿ãåå¾ 2// script.jsã¨åãã«ã¹ã¿ã ã¨ã³ããã¤ã³ããåç § 3fetch("https://roman-kan.jp/wp-romankan/wp-json/wp/v2/get-post-relation?perpage=30") 4 .then(function(response) { 5 return response.json(); 6 }) 7 .then(function(data) { 8 var posts = data.posts; // æç¨¿ã®é åãæ½åº 9 10 // 1. 表示ãããæç¨¿IDã¨ãæçµçã«è¡¨ç¤ºãããç®æ¨ä»¶æ°ãå®ç¾©ãã¾ãã 11 var offerPostIds = [18299, 18257, 18206, 18228]; 12 var targetCount = 4; // 常ã«4件表示ããã 13 14 // 2. æå®ãããIDã®æç¨¿ãåå¾ããè¦ã¤ãããªããã®(undefined)ãé¤å¤ãã¾ãã 15 var matchedPosts = offerPostIds.map(function(id) { 16 return posts.find(function(post) { 17 return post.id === id; 18 }); 19 }).filter(Boolean); 20 21 // 3. ããè¦ã¤ãã£ãè¨äºã4ä»¶ã«æºããªãå ´åãææ°è¨äºã§ç©´åããã¾ãã 22 if (matchedPosts.length < targetCount) { 23 var shortage = targetCount - matchedPosts.length; // è¶³ããªãä»¶æ°ãè¨ç®ï¼ä»åã¯1ä»¶è¶³ããªãï¼ 24 25 // åå¾ããå ¨è¨äº(30ä»¶)ã®ä¸ãããæå®IDã以å¤ãã®è¨äºã ããæ½åºãã¾ã 26 var latestOtherPosts = posts.filter(function(post) { 27 return offerPostIds.indexOf(post.id) === -1; 28 }); 29 30 // è¶³ããªãä»¶æ°åã ããææ°è¨äºãåãåãã¾ã 31 var fillerPosts = latestOtherPosts.slice(0, shortage); 32 33 // è¦ã¤ãã£ãè¨äºã®ãããã«ãç©´åãç¨ã®ææ°è¨äºãåä½ããã¾ã 34 matchedPosts = matchedPosts.concat(fillerPosts); 35 } 36 37 // 4. 宿ãã4ä»¶ã®ãªã¹ããåã»ã¯ã·ã§ã³ã«å²ãå½ã¦ã¾ã 38 var postsForOffer = matchedPosts; 39 var postsForOffer2 = matchedPosts; 40 var postsForOffer3 = matchedPosts; 41 42 // ãç¥ããç¨ã®æç¨¿ãåå¾ï¼ããã¯å¤æ´ãªãï¼ 43 var categoriesForNewsSlugs = ["info", "media", "recruit"]; 44 var postsForNews = posts.filter(function(post) { 45 return post.category && typeof post.category.slug === 'string' && categoriesForNewsSlugs.indexOf(post.category.slug) !== -1; 46 }).slice(0, 4); 47 48 // 5. 表示å¦çãå®è¡ 49 displayPosts(postsForOffer, "top-section", "ãªãã¡ã¼", "ãå¾ãªå®¿æ³ãã©ã³ã¨ã¤ãã³ãæ å ±", "event,plan"); 50 displayPosts(postsForOffer2, "top-section-2", "ãå¾ãªå®¿æ³ãã©ã³ã¨ã¤ãã³ãæ å ±", "", "event,plan"); 51 displayPosts(postsForOffer3, "top-section-3", "æ¬ã®ãããã", "", "event,plan,special"); 52 displayPosts(postsForNews, "bottom-section", "ãç¥ãã", "ããã«ããã®ãç¥ãã", "info,media,recruit"); 53 }) 54 .catch(function(error) { 55 console.error("æç¨¿ã®åå¾ã«å¤±æãã¾ãã:", error); 56 }); 57 58// æç¨¿è¡¨ç¤ºé¢æ° 59function displayPosts(posts, sectionId, titleEn, titleJp, moreCategories) { 60 var section = document.getElementById(sectionId); 61 if (!section) return; 62 63 // ã»ã¯ã·ã§ã³ã®ã¿ã¤ãã«ã¨ãMoreããªã³ã¯ 64 section.innerHTML = 65 '<h2 class="p-home__title c-title only-mobile">' + 66 '<span class="c-title__inner">' + titleEn + '<span class="c-title__sub">' + titleJp + '</span></span>' + 67 '</h2>' + 68 '<div class="section-inner">' + 69 '<div class="section-header">' + 70 '<div class="item-content only-pc">' + 71 '<h3 class="item-title">' + titleEn + '</h3>' + 72 '<p class="item-highlight">' + titleJp + '</p>' + 73 '</div>' + 74 '<div class="btn-more-1 only-pc button-wrapper">' + 75 '<a class="button-outline" role="button" href="https://www.roman-kan.jp/news/?offset=0&category=' + moreCategories + '" aria-pressed="true" rel="noopener">' + 76 '<div class="button-caption"><span class="button-text">詳ããè¦ã</span></div>' + 77 '</a>' + 78 '</div>' + 79 '</div>' + 80 '<div id="' + sectionId + '-posts" class="posts-container"></div>' + 81 '<div class="btn-more-2 only-mobile button-wrapper">' + 82 '<a class="button-outline" role="button" href="https://www.roman-kan.jp/news/?offset=0&category=' + moreCategories + '" aria-pressed="true" rel="noopener">' + 83 '<div class="button-caption"><span class="button-text">詳ããè¦ã</span></div>' + 84 '</a>' + 85 '</div>' + 86 '</div>'; 87 88 var postsContainer = document.getElementById(sectionId + "-posts"); 89
90 posts.forEach(function(post) { 91 // ãä¿®æ£ç®æããã¼ã¿ã空ã®å ´åã¯ã¹ããããã¦ã¨ã©ã¼ãé²ã 92 if (!post) return; 93 94// var postLink = "https://www.roman-kan.jp/news/post/?p=" + post.id; 95 // outerlinkãããã°ããã使ãããªããã°æ¨æºã®ãªã³ã¯ãä½ã 96 var postLink = post.outerlink ? post.outerlink : ("https://www.roman-kan.jp/news/post/?p=" + post.id); 97 98 // ç»åURLã®åå¾: post.tmbãç´æ¥ä½¿ç¨ 99 var thumbnailUrl = post.tmb || 'https://www.roman-kan.jp/wp-romankan/wp-content/uploads/2021/03/logo_romankan-1.png'; 100 101 // ãµã ãã¤ã«URLãã '-å¹ xé«ã' ã®é¨åãåé¤ 102 // ä¾: "xxxx-300x300.jpeg" ã "xxxx.jpeg" ã«å¤æ 103 var highQualityThumbnailUrl = thumbnailUrl.replace(/-\d+x\d+\.(jpeg|jpg|png|gif|webp)$/i, '.$1'); 104 105 // ã«ãã´ãªã«å¿ããã¯ã©ã¹åã¨ååãåå¾ 106 var categoryName = (post.category && post.category.name) ? post.category.name : ""; 107 var categoryClass = categoryName ? ("category-" + (post.category && post.category.slug ? post.category.slug : "")) : ""; 108 109 // æ¥ä»ã®åå¾ã¨ãã©ã¼ããã 110 // "YYYYå¹´MMæDDæ¥"å½¢å¼ããå¹´ãæãæ¥ãæ½åº 111 var dateMatch = post.date.match(/(\d+)å¹´(\d+)æ(\d+)æ¥/); 112 var year = dateMatch ? parseInt(dateMatch[1], 10) : null; 113 var month = dateMatch ? parseInt(dateMatch[2], 10) : null; 114 var day = dateMatch ? parseInt(dateMatch[3], 10) : null; 115 116 var formattedDate = ""; 117 if (year !== null && month !== null && day !== null) { 118 // Dateãªãã¸ã§ã¯ãã®æã¯0ããå§ã¾ããããmonth - 1 ã¨ãã 119 var postDateObject = new Date(year, month - 1, day); 120 formattedDate = postDateObject.getFullYear() + "/" + (postDateObject.getMonth() + 1) + "/" + postDateObject.getDate(); 121 } else { 122 // æ¥ä»ã®ãã¼ã¹ã«å¤±æããå ´åã®ãã©ã¼ã«ãã㯠123 formattedDate = post.date; // å ã®æååã表示ãããã空ã«ããããªã© 124 } 125 126 var postElement = document.createElement("a"); 127 postElement.href = postLink; 128 postElement.innerHTML = 129 '<img src="' + highQualityThumbnailUrl + '" alt="' + (post.title || '') + '">' + 130 '<p class="post-date">' + formattedDate + '</p>' + 131 '<ul class="' + categoryClass + '"><li>' + categoryName + '</li></ul>' + 132 '<h3>' + (post.title || '') + '</h3>'; 133 postsContainer.appendChild(postElement); 134 }); 135}
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.