Skip to content
html
<!doctype html>
<html lang="en">
  <include file="Ringtones:top" />
  <script async="async" src="https://www.google.com/adsense/search/ads.js"></script>
  <script type="text/javascript" charset="utf-8">
    (function (g, o) {
      (g[o] =
        g[o] ||
        function () {
          (g[o]['q'] = g[o]['q'] || []).push(arguments);
        }),
        (g[o]['t'] = 1 * new Date());
    })(window, '_googCsa');
  </script>
  <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
    <defs>
      <symbol id="icon-down" viewBox="0 0 512 512">
        <path
          d="M382.56,233.376C379.968,227.648,374.272,224,368,224h-64V16c0-8.832-7.168-16-16-16h-64c-8.832,0-16,7.168-16,16v208h-64
            c-6.272,0-11.968,3.68-14.56,9.376c-2.624,5.728-1.6,12.416,2.528,17.152l112,128c3.04,3.488,7.424,5.472,12.032,5.472
            c4.608,0,8.992-2.016,12.032-5.472l112-128C384.192,245.824,385.152,239.104,382.56,233.376z"
          fill="#fff"
        />
        <path
          d="M432,352v96H80v-96H16v128c0,17.696,14.336,32,32,32h416c17.696,0,32-14.304,32-32V352H432z"
          fill="#fff"
        />
      </symbol>
    </defs>
  </svg>
  <body>
    <include file="Public:header" />
    <div class="wrapper">
      <div class="searchpage">
        <div class="row-ls">
          <h2 class="search-tl">{$q} ringtones</h2>
          <div class="mobileads"><include file="Ads:ads01" /></div>
          <php> if(!empty($result)){ </php>
          <div class="row-me" id="content">
            <volist id="result" name="result" key="index">
              <div class="row-item">
                <div class="row-curlink" audio>
                  <div class="ringend">
                    <svg
                      xmlns="http://www.w3.org/2000/svg"
                      version="1.1"
                      style="height:45px;width:45px"
                    >
                      <rect
                        x="0"
                        y="0"
                        height="45"
                        width="45"
                        rx="8"
                        ry="8"
                        style="fill: #fb8240"
                      />
                      <circle cx="22.5" cy="22.5" r="15" stroke-width="1" fill="#fff" />
                    </svg>
                    <svg
                      t="1663827526728"
                      class="icon"
                      viewBox="0 0 1024 1024"
                      version="1.1"
                      xmlns="http://www.w3.org/2000/svg"
                      p-id="829"
                      width="20"
                      height="20"
                      style="position:absolute;top:12.5;left:15"
                      fill="#fb8240"
                    >
                      <path
                        d="M780.8 475.733333L285.866667 168.533333c-27.733333-17.066667-64 4.266667-64 36.266667v614.4c0 32 36.266667 53.333333 64 36.266667l492.8-307.2c29.866667-14.933333 29.866667-57.6 2.133333-72.533334z"
                        p-id="830"
                      ></path>
                    </svg>
                  </div>
                  <div class="ringstart">
                    <svg
                      xmlns="http://www.w3.org/2000/svg"
                      version="1.1"
                      style="height:45px;width:45px"
                    >
                      <rect
                        x="0"
                        y="0"
                        height="45"
                        width="45"
                        rx="8"
                        ry="8"
                        style="fill: #fb8240"
                      />
                      <circle cx="22.5" cy="22.5" r="15" stroke-width="1" fill="#fff" />
                    </svg>
                    <svg
                      t="1663834339925"
                      class="icon"
                      viewBox="0 0 1024 1024"
                      version="1.1"
                      xmlns="http://www.w3.org/2000/svg"
                      p-id="2655"
                      width="20"
                      height="20"
                      fill="#fb8240"
                      style="position:absolute;top:12.5;left:13"
                    >
                      <path
                        d="M319.618435 145.655358c-30.518061 0-55.258535 24.740474-55.258535 55.258535l0 622.170169c0 30.518061 24.740474 55.258535 55.258535 55.258535s55.258535-24.740474 55.258535-55.258535l0-622.170169C374.876969 170.395832 350.136495 145.655358 319.618435 145.655358z"
                        p-id="2656"
                      ></path>
                      <path
                        d="M704.381565 145.655358c-30.518061 0-55.258535 24.740474-55.258535 55.258535l0 622.170169c0 30.518061 24.740474 55.258535 55.258535 55.258535s55.258535-24.740474 55.258535-55.258535l0-622.170169C759.6401 170.395832 734.899626 145.655358 704.381565 145.655358z"
                        p-id="2657"
                      ></path>
                    </svg>
                  </div>
                  <div class="search-item-name">{$result.name}</div>
                  <audio
                    data-play="false"
                    class="audio"
                    src="__CDN__/ringtones/mp3/{$result.mp3_name}"
                  ></audio>
                </div>
                <div class="search-item-time">{$result.times}s</div>
                <div class="search-category-list">
                  <if condition="empty($result['tag']) neq true">
                    <volist id="tag" name="result.tag">
                      <span class="search-item-category">
                        <a href="__ROOT__/ringtones/{$tag.slug}.html">{$tag.name}</a>
                      </span>
                    </volist>
                    <else />
                    <span class="search-item-category">
                      <a href="__ROOT__/ringtones/{$result.cate_slug}.html">{$result.cate_name}</a>
                    </span>
                  </if>
                </div>
                <div class="search-download-box">
                  <a
                    class="search-item-download"
                    href="__ROOT__/ringtones/{$result.id}/{$result.slug}.html{$append}"
                  >
                    <svg class="download-icon">
                      <use xlink:href="#icon-down"></use>
                    </svg>
                    <span>Download</span>
                  </a>
                </div>
              </div>
              <if condition="$index eq 6">
                <div class="mobileads">
                  <include file="Ads:ads02" />
                </div>
              </if>
              <if condition="$index eq 12">
                <div class="mobileads">
                  <include file="Ads:ads03" />
                </div>
              </if>
            </volist>
          </div>
          <php> }else{ </php>
          <div class="noresult">
            <p class="noresult-tl"> Your search <b>- {$q} - </b>did not match any documents. </p>
            <p>Suggestions:</p>
            <ul class="noresult-ls">
              <li class="noresult-item"> Make sure that all words are spelled correctly. </li>
              <li class="noresult-item">Try different keywords.</li>
              <li class="noresult-item">Try more general keywords.</li>
              <li class="noresult-item">Try fewer keywords.</li>
            </ul>
          </div>
          <php> } </php>
        </div>
      </div>
    </div>
    <include file="Public:footer" />
    <script>
      /** 音乐播放器功能
       * 获取 id 为 content 的标签下所有具有 audio 属性的 div 标签并将其组成名为「audioList」的类数组
       * 将「audioList」类数组转换为「audioList」数组
       * 获取「aduioList」数组的最后12项并将其定义为临时数组「tempList」
       * 遍历该临时数组并为每一项加入点击事件
       *    点击事件功能如下:
       *       暂停所有正在播放的音乐
       *       当音乐播放状态为暂停并触发点击事件时
       *          播放音乐、更改播放状态、隐藏播放按钮、显示暂停按钮
       *       反之
       *          暂停音乐、更改播放状态、显示播放按钮、隐藏暂停按钮
       *       监听播放状态
       *       当音乐正在播放时
       *          隐藏播放按钮、显示暂停按钮
       *       反之
       *          显示播放按钮、隐藏暂停按钮
       */
      function audioCtrl() {
        var audioList = document.querySelectorAll(`#content div[audio]`);
        audioList = Array.prototype.slice.call(audioList);
        var tempList = audioList.slice(-12);
        for (var j = 0; j < tempList.length; j++) {
          tempList[j].addEventListener('click', function () {
            // querySelectorAll 方法捕获的内容都是数组,故在方法后加[0]意为获取数组的第0项,即当前dom元素
            tempList.forEach((item) => {
              item.querySelectorAll('audio')[0].pause();
            });
            var audio = this.querySelectorAll('audio')[0];
            var ringStart = this.querySelectorAll('.ringstart')[0];
            var ringEnd = this.querySelectorAll('.ringend')[0];
            var duration = this.getAttribute('data-times');
            var status = audio.getAttribute('data-play');
            if (status == 'false') {
              audio.play();
              audio.setAttribute('data-play', 'true');
              ringEnd.style.display = 'none';
              ringStart.style.display = 'block';
            } else {
              audio.pause();
              audio.setAttribute('data-play', 'false');
              ringStart.style.display = 'none';
              ringEnd.style.display = 'block';
            }
            // 加入监听事件的目的是当切换播放的音乐时,其他按钮都能回到暂停状态
            audio.addEventListener('playing', function () {
              ringStart.style.display = 'block';
              ringEnd.style.display = 'none';
            });
            audio.addEventListener('pause', function () {
              ringStart.style.display = 'none';
              ringEnd.style.display = 'block';
            });
          });
        }
      }

      window.onload = function () {
        audioCtrl();
        function GetRect(element) {
          let rectbox = element.getBoundingClientRect();
          let top = document.documentElement.clientTop ? document.documentElement.clientTop : 0;
          let left = document.documentElement.clientLeft ? document.documentElement.clientLeft : 0;
          return {
            top: rectbox.top - top,
            bottom: rectbox.bottom - top,
            left: rectbox.left - left,
            right: rectbox.right - left
          };
        }
        var viewHeight = document.documentElement.clientHeight;
        let total = true;
        let page = 2;
        let q = '<php>echo $q</php>'; // 关键词

        $(window).scroll(function () {
          let obj = GetRect(moreFlag);
          if (obj.top < viewHeight && obj.bottom >= viewHeight) {
            if (total) {
              loadMore();
            }
          }
        });

        function loadMore() {
          total = false;
          $.ajax({
            url: '__ROOT__/search_list/',
            type: 'POST',
            data: {
              q: q,
              page: page
            },
            dataType: 'json',
            success: function (data) {
              if (data.code == 200) {
                let list = data.list;
                let ads = `<div class="mobileads"><include file="Ads:ads_more"/></div>`;
                if (list && list.length) {
                  let contentHtml = '';
                  list.forEach((item, index) => {
                    // 循环遍历返回结果数组
                    var tagHtml = ''; // 定义tagHtml为空字符串,用于渲染tag标签
                    if (item.tag.length != 0) {
                      // 当tag标签数长度不为0时
                      item.tag.forEach((t, num) => {
                        // 循环便利tag标签数组将其组成tag标签组
                        tagHtml += `                
                                                <span class="search-item-category">
                                                    <a href="__ROOT__/ringtones/${t.slug}.html">${t.name}</a>
                                                </span>
                                            `;
                      });
                    } else {
                      // 当tag标签数长度为0时 渲染下列标签
                      tagHtml = `
                                            <span class="search-item-category">
                                                <a href="__ROOT__/ringtones/${item.cate_slug}.html">${item.cate_name}</a>
                                            </span>   
                                        `;
                    }
                    contentHtml =
                      `
                                        <div class="row-item">
                                            <div class="row-curlink" audio> 
                                                <div class="ringend">
                                                    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="height:45px;width:45px">
                                                        <rect x="0" y="0" height="45" width="45" rx="8" ry="8" style="fill: #fb8240"/>
                                                        <circle cx="22.5" cy="22.5" r="15"  stroke-width="1" fill="#fff" />
                                                    </svg>
                                                    <svg t="1663827526728" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="829" width="20" height="20" style="position:absolute;top:12.5;left:15" fill="#fb8240"><path d="M780.8 475.733333L285.866667 168.533333c-27.733333-17.066667-64 4.266667-64 36.266667v614.4c0 32 36.266667 53.333333 64 36.266667l492.8-307.2c29.866667-14.933333 29.866667-57.6 2.133333-72.533334z" p-id="830"></path></svg>
                                                </div>
                                                <div class="ringstart">
                                                    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="height:45px;width:45px">
                                                        <rect x="0" y="0" height="45" width="45" rx="8" ry="8" style="fill: #fb8240"/>
                                                        <circle cx="22.5" cy="22.5" r="15"  stroke-width="1" fill="#fff" />
                                                    </svg>
                                                    <svg t="1663834339925" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2655" width="20" height="20" fill="#fb8240" style="position:absolute;top:12.5;left:13"><path d="M319.618435 145.655358c-30.518061 0-55.258535 24.740474-55.258535 55.258535l0 622.170169c0 30.518061 24.740474 55.258535 55.258535 55.258535s55.258535-24.740474 55.258535-55.258535l0-622.170169C374.876969 170.395832 350.136495 145.655358 319.618435 145.655358z" p-id="2656"></path><path d="M704.381565 145.655358c-30.518061 0-55.258535 24.740474-55.258535 55.258535l0 622.170169c0 30.518061 24.740474 55.258535 55.258535 55.258535s55.258535-24.740474 55.258535-55.258535l0-622.170169C759.6401 170.395832 734.899626 145.655358 704.381565 145.655358z" p-id="2657"></path></svg>
                                                </div>
                                                <div class="search-item-name">${item.name}</div>
                                                <audio data-play="false" class="audio" src="__CDN__/ringtones/mp3/${item.mp3_name}"></audio>
                                            </div>
                                            <div class="search-item-time">${item.times}s</div>
                                            <div class="search-category-list">
                                               ` +
                      tagHtml +
                      ` 
                                            </div>
                                            <div class="search-download-box">
                                                <a class="search-item-download" href="__ROOT__/ringtones/${item.id}/${item.slug}.html{$append}">
                                                    <svg class="download-icon">
                                                        <use xlink:href="#icon-down"></use>
                                                    </svg>
                                                    <span>Download</span>
                                                </a>
                                            </div>
                                        </div>
                                    `;
                    let allContentHtml = '';
                    if ((index + 1) % 6 == 0) {
                      allContentHtml = contentHtml + ads;
                    } else {
                      allContentHtml = contentHtml;
                    }
                    $('#content').append(allContentHtml);
                  });
                  page++;
                  total = true;
                  audioCtrl();
                }
              }
            }
          });
        }
      };
    </script>
  </body>
</html>