コードのカスタマイズ

コードのカスタマイズ

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

コードスニペットとは、Webサイトの機能を拡張するために追加できる短いコードです。外部のソースプロバイダーが提供するウィジェットやスクリプトをサイトに挿入できます。よく利用されるコードをページに組み込み、Webサイトのヘッダーやフッターに追加してサイト全体に適用したり、コードスニペット要素を使用して特定のページに適用したりできます。

​

Webサイトにページ上部へ戻るフローティングボタンを追加するには 

ページ上部へ戻るフローティングボタンを追加するには、次のコードをコピーして、Webサイトのヘッダー/フッターコードに貼り付けます。特定のページだけに追加する場合は、各ページのヘッダー/フッターコードボックスに追加します。

  1. <style>
  2. .rounded-floating-btn {
  3. position: fixed;
  4. right: 20px;
  5. width: 50px !important;
  6. height: 75px !important;
  7. bottom: 20px;
  8. padding: 15px;
  9. z-index: 5;
  10. border-radius: 2px;
  11. cursor: pointer;
  12. background-color: #101010;
  13. box-shadow: 0 0 25px rgba(0, 0, 0, 0.3);
  14. color: #fff;
  15. font-size: 70%;
  16. font-weight: 400;
  17. }
  18. .floated-btn-svg-icon {
  19. width: 20px;
  20. fill: #fff;
  21. margin: 0 auto;
  22. margin-top: 3px;
  23. }
  24. .rounded-floating-btn .zptext {
  25. margin-top: 3px;
  26. }
  27. </style>
  28. <script>
  29. window.onload=function(){
  30. var div = document.createElement('div');
  31. div.innerHTML='<div class='zpelem-box zpelement zpbox-container zpdefault-section zpdefault-section-bg rounded-floating-btn' data-background-type='none' style='display:none' id='scrollToTop'><div class='floated-btn-svg-icon'><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 268.831 268.832'><path d='M223.255 83.659l-80-79.998c-4.881-4.881-12.797-4.881-17.678 0l-80 80c-4.883 4.882-4.883 12.796 0 17.678 2.439 2.44 5.64 3.661 8.839 3.661s6.397-1.221 8.839-3.661l58.661-58.661v213.654c0 6.903 5.597 12.5 12.5 12.5 6.901 0 12.5-5.597 12.5-12.5V42.677l58.661 58.659c4.883 4.881 12.797 4.881 17.678 0 4.882-4.881 4.882-12.795 0-17.677z'></path></svg></div><div class='zptext zptext-align-center'><p>TOP</p></div></div>';
  32. div.addEventListener('click',function(e){
  33. e.preventDefault();
  34. window.scrollTo(0,0);
  35. })
  36. document.body.appendChild(div);
  37. }
  38. window.onscroll = function() {
  39. var threshold = 50; // Pixels after the scrol to top should show
  40. var scrollToTop = document.getElementById('scrollToTop')
  41. scrollToTop.style.display = (document.body.scrollTop > threshold || document.documentElement.scrollTop > threshold) ? 'block' : 'none';
  42. };
  43. </script>


開始時にすべてのアコーディオンを閉じておくには 

開始時にすべてのアコーディオンを閉じておくには、次のコードをコピーして、Webサイトのヘッダー/フッターコードに貼り付けます。特定のページだけに適用する場合は、各ページのヘッダー/フッターコードボックスに追加します。

  1. <script>
  2. function closeAccordian(){
  3. var accordianHeader = $D.getByClass('zpaccordion-active')
  4. var accordianContent = $D.getByClass('zpaccordion-active-content')
  5. for(var i=0;accordianHeader.length>0;){
  6. $D.removeClass(accordianHeader[i],'zpaccordion-active')
  7. }
  8. for(var i=0;accordianContent.length>0;){
  9. $D.removeClass(accordianContent[i],'zpaccordion-active-content')
  10. }
  11. }
  12. document.addEventListener('DOMContentLoaded',closeAccordian)
  13. </script>

 

開始時にすべてのタブを閉じておくには 

すべてのタブを閉じておくには、次のコードをコピーして、Webサイトのヘッダー/フッターコードに貼り付けます。特定のページだけに適用する場合は、各ページのヘッダー/フッターコードボックスに追加します。

  1. <script>
  2. function closeTabs(){
  3. var tabHeader = $D.getByClass('zptab-active')
  4. var tabContent = $D.getByClass('zptab-active-content')
  5. for(var i=0;tabHeader.length>0;){
  6. $D.removeClass(tabHeader[i],'zptab-active')
  7. }
  8. for(var i=0;tabContent.length>0;){
  9. $D.removeClass(tabContent[i],'zptab-active-content')
  10. }
  11. }
  12. document.addEventListener('DOMContentLoaded',closeTabs)
  13. </script>

 

RSS購読ボタンを非表示にするには 

次のCSSコードをコピーし、カスタムCSSセクション([カスタマイズ]→[コード]、[カスタムCSSエディター]タブ)に貼り付けます。

  1. .theme-blog-category-column .theme-blog-category-container.theme-blog-rss-feed {
  2. display: none;
  3. }

 

Sitesで作成したフォームを自動入力するには 

以下のコードをコピーして、Webサイトのヘッダーコードまたはフッターコードに貼り付けます。特定のページでのみ使用する場合は、ページ固有のヘッダーコードまたはフッターコードの入力欄に追加します。

  1. <script type='text/javascript'>
  2. var count = 0;
  3. var autoFillFunction = setInterval(
  4. function() {
  5. count++;
  6. var formElement = document.querySelector('[elname='<form_link_name>']');
  7. if(formElement != null) {
  8. var paramString = window.location.search.substr(1),
  9. paramArray = paramString.split('&');
  10. for(var i=0; i<paramArray.length; i++) {
  11. var fieldName = paramArray[i].split('=')[0];
  12. var fieldValue = paramArray[i].split('=')[1];
  13. var autoFillElement = formElement.querySelector('[name='' + fieldName +'']');
  14. autoFillElement.value = fieldValue;
  15. }
  16. clearInterval(autoFillFunction);
  17. } else if(count > 4) {
  18. clearInterval(autoFillFunction);
  19. }
  20. },2000);
  21. </script>

 

最新のブログ投稿を任意のページに表示するには 

[コードスニペット]を目的の場所にドラッグ&ドロップして、コードスニペット要素を作成します。

次に、以下のコードを貼り付けます。

  1. <script src='https://cdnjs.cloudflare.com/ajax/libs/mustache.js/3.1.0/mustache.js'></script>
  2. <div id='template' style='display:none'>
  3. <div data-element-type='row' class='zprow zpalign-items-flex-start zpjustify-content-flex-start '>
  4. {{#blog_list}}
  5. <div data-element-type='column' class='zpelem-col zpcol-md-4 zpcol-sm-12 zpalign-self- zpdefault-section zpdefault-section-bg '>
  6. <style type='text/css'></style>
  7. <div data-element-type='heading' class='zpelement zpelem-heading '>
  8. <style></style>
  9. <h3 class='zpheading zpheading-style-none zpheading-align-left ' data-editor='true'><a href='{{link}}'>{{title}}</a></h3>
  10. </div>
  11. <div data-element-type='text' class='zpelement zpelem-text '>
  12. <style></style>
  13. <div class='zptext zptext-align-left ' data-editor='true'>
  14. <p>{{{description}}}</p>
  15. </div>
  16. </div>
  17. <div data-element-type='button' class='zpelement zpelem-button '>
  18. <style></style>
  19. <div class='zpbutton-container zpbutton-align-left'>
  20. <style type='text/css'></style><a class='zpbutton-wrapper zpbutton zpbutton-type-primary zpbutton-size-md zpbutton-style-none ' href='{{link}}' target='_blank'><span class='zpbutton-content'>続きを読む</span></a>
  21. </div>
  22. </div>
  23. </div>
  24. {{/blog_list}}
  25. </div>
  26. </div>
  27. <script>
  28. function renderList(list) {

  29. var template = document.getElementById('template').innerHTML;
  30. var rendered = Mustache.render(template, list);
  31. document.getElementById('list').innerHTML = rendered;
  32. }

  33. function getFeeds() {
  34. $X.get({
  35. url: '/blogs/feed',
  36. handler: function() {
  37. var result = this.responseText;
  38. if (window.DOMParser) {
  39. parser = new DOMParser();
  40. xmlDoc = parser.parseFromString(result, 'text/xml');
  41. } else // Internet Explorer
  42. {
  43. xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
  44. xmlDoc.async = false;
  45. xmlDoc.loadXML(result);
  46. }
  47. var items = xmlDoc.getElementsByTagName('item');
  48. renderList({ blog_list: itemsToJSON(items) })
  49. }
  50. });
  51. }

  52. function itemsToJSON(items) {
  53. var blog_list = [];
  54. for (var i = 0; i < items.length; i++) {
  55. var blog_post_json = {};
  56. var blog_post = items[i];
  57. var children = blog_post.children;
  58. for (var j = 0; j < children.length; j++) {
  59. var tagName = children[j].tagName;
  60. blog_post_json[tagName] = children[j].textContent;
  61. }
  62. blog_list.push(blog_post_json);
  63. }
  64. return blog_list;
  65. }
  66. document.addEventListener('DOMContentLoaded', getFeeds);
  67. </script>
  68. <div id='list'>読み込み中…</div>

 

​
メンバーポータルとブログ投稿に関するZoho Flowのトリガー


Zoho Sitesの所有者は、Zoho Flowを通じてポータルへの招待を送信できます。 
ユーザーが招待を承諾してユーザー登録すると、そのユーザーをメンバーポータルのグループに割り当てることができます。
Zoho Sitesの所有者は、Zoho Flowを使用してユーザーをポータルに再招待することもできます。
Zoho CRMなどの外部サービスでの操作に応じて、Zoho Sitesからユーザーを削除することもできます。
Zoho Sitesの所有者は、Zoho Flowのアクションを通じてブログ投稿を作成することもできます。

Zoho Sitesにポップアップを追加するには 

以下のコードをコピーして、Webサイトのヘッダーコード/フッターコードに貼り付けます。特定のページにのみ適用する場合は、各ページ専用のヘッダーコード/フッターコードのボックスに追加します。

手順1:このコードをWebサイトのヘッダーコードに追加します。

  1. <script>
  2. function openPopup(event, class_name) {
  3. event.preventDefault();
  4. var target = $D.getByClass(class_name)[0];
  5. $D.removeClass(target, 'zp-hidden-md');
  6. $D.removeClass(target, 'zp-hidden-sm');
  7. $D.removeClass(target, 'zp-hidden-xs');
  8. var modalContainer = $D.getByClass('modal-content')[0];
  9. modalContainer.appendChild(target);

  10. var closeElement = document.createElement('span')
  11. closeElement.classList += 'close'
  12. closeElement.innerHTML= '&times;'
  13. modalContainer.appendChild(closeElement)

  14. var modal = document.getElementById('myModal');
  15. modal.style.display = 'flex';
  16. var span = document.getElementsByClassName('close')[0];
  17. if (span) {
  18. span.onclick = function() {
  19. modal.style.display = 'none';
  20. }
  21. }
  22. window.onclick = function(event) {
  23. if (modal && event.target == modal) {
  24. modal.style.display = 'none';
  25. }
  26. }
  27. }
  28. </script>


手順2:以下のコードをサイトのフッターコードセクションに追加します。

  1. <div id='myModal' class='modal'><div class='modal-content'></div></div>


手順3:以下のコードをカスタムCSSファイルに追加します。

  1. /* モーダル(背景) */
  2. .modal {
  3. justify-content:center;
  4. display: none; /* 標準では非表示 */
  5. position: fixed; /* 位置を固定 */
  6. z-index: 300; /* 最前面に表示 */
  7. padding-top: 100px; /* ボックスの場所 */
  8. left: 0;
  9. top: 0;
  10. width: 100%; /* 全幅 */
  11. height: 100%; /* 全高 */
  12. overflow: auto; /* 必要に応じてスクロールを有効にする */
  13. background-color: rgb(0,0,0); /* 代替色 */
  14. background-color: rgba(0,0,0,0.4); /* 不透明度を設定した黒 */
  15. }
  16.  
  17. /* モーダルコンテンツ */
  18. .modal-content {
  19. display:inline-flex;
  20. position: relative;
  21. background-color: #fefefe;
  22. margin: auto;
  23. padding: 0;
  24. border: 1px solid #888;
  25. width: 60%;
  26. box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
  27. -webkit-animation-name: animatetop;
  28. -webkit-animation-duration: 0.4s;
  29. animation-name: animatetop;
  30. animation-duration: 0.4s
  31. }
  32.  
  33. /* アニメーションを追加する */
  34. @-webkit-keyframes animatetop {
  35. from {top:-300px; opacity:0}
  36. to {top:0; opacity:1}
  37. }
  38.  
  39. @keyframes animatetop {
  40. from {top:-300px; opacity:0}
  41. to {top:0; opacity:1}
  42. }
  43.  
  44. /* 閉じるボタン */
  45. .close {
  46. color: white;
  47. position: absolute;
  48. top: -13px;
  49. right: -13px;
  50. float: right;
  51. font-size: 20px;
  52. font-weight: bold;
  53. border-radius: 50%;
  54. width: 30px;
  55. height: 30px;
  56. background:#969494;
  57. text-align:center;
  58. }
  59. .close:hover,
  60. .close:focus {
  61. text-decoration: none;
  62. cursor: pointer;
  63. }
  64.  
  65. .modal-header {
  66. padding: 2px 16px;
  67. background-color: #5cb85c;
  68. color: white;
  69. }
  70.  
  71. .modal-body {padding: 2px 16px;}
  72.  
  73. .modal-footer {
  74. padding: 2px 16px;
  75. background-color: #5cb85c;
  76. color: white;
  77. }


手順4:セクションを追加し、[設定]アイコンをクリックして、[表示]タブに移動します。次のように、表示を[すべてのデバイスで非表示]に設定します。














手順5:非表示にしたセクション内の行を選択し、[CSS]タブを選択して、次のように[クラス名]に「target」と入力します。














手順6:ボタンを選択して[JS]タブを選び、openPopup(event,'target')を[関数名]の入力欄に入力し、[イベントの種類]として[onclick]を選択します。次を参照してください。













手順7:サイトを公開します。ボタンをクリックすると、次のように行がポップアップとして開きます。ポップアップに合わせて、必要に応じて行を編集できます。

Notes
メモ:使用する関数はopenPopup(event,'target')です。ここで、「target」はポップアップに変換する要素に入力するクラス名です。

スクリプトを使用して、Zoho Sitesにログインしているユーザーのメールアドレスを取得するには

  1. fetch('/portaluser/userProfile')
  2. .then(response => response.json())
  3. .then(response => {
  4. if(response.status_code == 0) {
  5. var email_address = response.payload.profile.email_address; var zuid = response.payload.profile.zuid;
  6. console.log(zuid);
  7. } else {
  8. console.log('User not present');
  9. }
  10. });
または
  1. $X.get({
        url : '/portaluser/userProfile',
    handler : function() {
    var response = JSON.parse(this.responseText);
    if(response.status_code == 0) {
    var email_address = response.payload.profile.email_address; var zuid = response.payload.profile.zuid;
    console.log(zuid);
    } else {
    console.log('User not present');
    }
    }
    });