DokuWiki

It's better when it's simple

User Tools

Site Tools


devel:templates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
devel:templates [2016-02-26 17:43]
116.227.43.212 removed
devel:templates [2016-02-26 22:44] (current)
Aleksandr old revision restored (2016-01-24 18:53)
Line 1: Line 1:
 +====== DokuWiki Template Development ======
  
-<​!DOCTYPE html> +You can customize the design of [[:DokuWiki]] by creating ​a new templateA template is determined by mainly some PHP and CSS files stored ​in a directory beyond the ''​<dokuwiki>/lib/tpl/''​ directory.
-<​html>​ +
-<​head>​ +
-     +
-<script type="​text/​javascript">​window.NREUM||(NREUM={});​NREUM.info={"​beacon":"​bam.nr-data.net","​errorBeacon":"​bam.nr-data.net","​licenseKey":"​b445f81adf","​applicationID":"​16508608","​transactionName":"​eldeRkZcXFgBQUtdDVpLH0FcXEc=","​queueTime":​0,"​applicationTime":​115,"​agent":""​}</​script>​ +
-<script type="​text/​javascript">​window.NREUM||(NREUM={}),​__nr_require=function(e,​t,​n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,​function(t){var o=e[n][1][t];​return r(o||t)},​o,​o.exports)}return t[n].exports}if("​function"​==typeof __nr_require)return __nr_require;​for(var o=0;​o<​n.length;​o++)r(n[o]);​return r}({QJf3ax:​[function(e,​t){function n(){}function r(e){function t(e){return e&&​e instanceof n?e:e?a(e,​i,​o):​o()}function s(n,​r,​o){e&&​e(n,​r,​o);​for(var i=t(o),​a=l(n),​u=a.length,​f=0;​u>​f;​f++)a[f].apply(i,​r);​var s=c[w[n]];​return s&&​s.push([h,​n,​r,​i]),​i}function p(e,​t){g[e]=l(e).concat(t)}function l(e){return g[e]||[]}function d(e){return f[e]=f[e]||r(s)}function v(e,​t){u(e,​function(e,​n){t=t||"​feature",​w[n]=t,​t in c||(c[t]=[])})}var g={},​w={},​h={on:​p,​emit:​s,​get:​d,​listeners:​l,​context:​t,​buffer:​v};​return h}function o(){return ​new n}var i="​nr@context",​a=e("​gos"​),​u=e(1),​c={},​f={},​s=t.exports=r();​s.backlog=c},​{1:​12,​gos:"​7eSDFh"​}],​ee:​[function(e,​t){t.exports=e("​QJf3ax"​)},​{}],​3:​[function(e,​t){function n(e,​t){return function(){r(e,​[(new Date).getTime()].concat(i(arguments)),​null,​t)}}var r=e("​handle"​),​o=e(1),​i=e(2);"​undefined"​==typeof window.newrelic&&​(newrelic=NREUM);​var a=["​setPageViewName","​addPageAction","​setCustomAttribute","​finished","​addToTrace","​inlineHit"​],​u=["​addPageAction"​],​c="​api-";​o(a,​function(e,​t){newrelic[t]=n(c+t,"​api"​)}),​o(u,​function(e,​t){newrelic[t]=n(c+t)}),​t.exports=newrelic,​newrelic.noticeError=function(e){"​string"​==typeof e&&​(e=new Error(e)),​r("​err",​[e,​(new Date).getTime()])}},​{1:​12,​2:​13,​handle:"​D5DuLP"​}],​gos:​[function(e,​t){t.exports=e("​7eSDFh"​)},​{}],"​7eSDFh":​[function(e,​t){function n(e,​t,​n){if(r.call(e,​t))return e[t];var o=n();​if(Object.defineProperty&&​Object.keys)try{return Object.defineProperty(e,​t,​{value:​o,​writable:​!0,​enumerable:​!1}),​o}catch(i){}return e[t]=o,​o}var r=Object.prototype.hasOwnProperty;​t.exports=n},​{}],​handle:​[function(e,​t){t.exports=e("​D5DuLP"​)},​{}],​D5DuLP:​[function(e,​t){function n(e,​t,​n,​o){r.buffer([e],​o),​r.emit(e,​t,​n)}var r=e("​ee"​).get("​handle"​);​t.exports=n,​n.ee=r},​{ee:"​QJf3ax"​}],​XL7HBI:​[function(e,​t){function n(e){var t=typeof e;​return!e||"​object"​!==t&&"​function"​!==t?​-1:​e===window?​0:​i(e,​o,​function(){return r++})}var r=1,​o="​nr@id",​i=e("​gos"​);​t.exports=n},​{gos:"​7eSDFh"​}],​id:​[function(e,​t){t.exports=e("​XL7HBI"​)},​{}],​G9z0Bl:​[function(e,​t){function n(){if(!v++){var e=d.info=NREUM.info,​t=f.getElementsByTagName("​script"​)[0];​if(e&&​e.licenseKey&&​e.applicationID&&​t){u(p,​function(t,​n){e[t]||(e[t]=n)});​var n="​https"​===s.split(":"​)[0]||e.sslForHttp;​d.proto=n?"​https://":"​http://",​a("​mark",​["​onload",​i()],​null,"​api"​);​var r=f.createElement("​script"​);​r.src=d.proto+e.agent,​t.parentNode.insertBefore(r,​t)}}}function r(){"​complete"​===f.readyState&&​o()}function o(){a("​mark",​["​domContent",​i()],​null,"​api"​)}function i(){return(new Date).getTime()}var a=e("​handle"​),​u=e(1),​c=window,​f=c.document;​NREUM.o={ST:​setTimeout,​XHR:​c.XMLHttpRequest,​REQ:​c.Request,​EV:​c.Event,​PR:​c.Promise,​MO:​c.MutationObserver},​e(2);​var s=(""​+location).split("?"​)[0],​p={beacon:"​bam.nr-data.net",​errorBeacon:"​bam.nr-data.net",​agent:"​js-agent.newrelic.com/​nr-885.min.js"​},​l=window.XMLHttpRequest&&​XMLHttpRequest.prototype&&​XMLHttpRequest.prototype.addEventListener&&​!/​CriOS/​.test(navigator.userAgent),​d=t.exports={offset:​i(),​origin:​s,​features:​{},​xhrWrappable:​l};​f.addEventListener?​(f.addEventListener("​DOMContentLoaded",​o,​!1),​c.addEventListener("​load",​n,​!1)):​(f.attachEvent("​onreadystatechange",​r),​c.attachEvent("​onload",​n)),​a("​mark",​["​firstbyte",​i()],​null,"​api"​);​var v=0},​{1:​12,​2:​3,​handle:"​D5DuLP"​}],​loader:​[function(e,​t){t.exports=e("​G9z0Bl"​)},​{}],​12:​[function(e,​t){function n(e,t){var n=[],​o="",​i=0;​for(o ​in e)r.call(e,​o)&&​(n[i]=t(o,​e[o]),​i+=1);​return n}var r=Object.prototype.hasOwnProperty;​t.exports=n},​{}],​13:​[function(e,​t){function n(e,​t,​n){t||(t=0),"​undefined"​==typeof n&&​(n=e?​e.length:​0);​for(var r=-1,​o=n-t||0,​i=Array(0>​o?​0:​o);​++r<​o;​)i[r]=e[t+r];​return i}t.exports=n},​{}]},​{},​["​G9z0Bl"​]);</​script>​ +
-    <​title>​(9) 商家接口文档 - Tower</​title>​ +
-    <meta charset="​utf-8"​ /> +
-    <meta http-equiv="​X-UA-Compatible"​ content="​IE=edge,​chrome=1"​ /> +
-<script type="​text/​javascript">​window.NREUM||(NREUM={});​NREUM.info={"​beacon":"​bam.nr-data.net","​errorBeacon":"​bam.nr-data.net","​licenseKey":"​b445f81adf","​applicationID":"​16508608","​transactionName":"​eldeRkZcXFgBQUtdDVpLH0FcXEc=","​queueTime":​0,"​applicationTime":​115,"​agent":""​}</​script>​ +
-<script type="​text/​javascript">​window.NREUM||(NREUM={}),​__nr_require=function(e,​t,​n){function r(n){if(!t[n]){var o=t[n]={exports:​{}};​e[n][0].call(o.exports,​function(t){var o=e[n][1][t];​return r(o||t)},​o,​o.exports)}return t[n].exports}if("​function"​==typeof __nr_require)return __nr_require;​for(var o=0;​o<​n.length;​o++)r(n[o]);​return r}({QJf3ax:​[function(e,​t){function n(){}function r(e){function t(e){return e&&​e instanceof n?e:e?a(e,​i,​o):​o()}function s(n,​r,​o){e&&​e(n,​r,​o);​for(var i=t(o),​a=l(n),​u=a.length,​f=0;​u>​f;​f++)a[f].apply(i,​r);​var s=c[w[n]];​return s&&​s.push([h,​n,​r,​i]),​i}function p(e,​t){g[e]=l(e).concat(t)}function l(e){return g[e]||[]}function d(e){return f[e]=f[e]||r(s)}function v(e,​t){u(e,​function(e,​n){t=t||"​feature",​w[n]=t,​t in c||(c[t]=[])})}var g={},​w={},​h={on:​p,​emit:​s,​get:​d,​listeners:​l,​context:​t,​buffer:​v};​return h}function o(){return new n}var i="​nr@context",​a=e("​gos"​),​u=e(1),​c={},​f={},​s=t.exports=r();​s.backlog=c},​{1:​12,​gos:"​7eSDFh"​}],​ee:​[function(e,​t){t.exports=e("​QJf3ax"​)},​{}],​3:​[function(e,​t){function n(e,​t){return function(){r(e,​[(new Date).getTime()].concat(i(arguments)),​null,​t)}}var r=e("​handle"​),​o=e(1),​i=e(2);"​undefined"​==typeof window.newrelic&&​(newrelic=NREUM);​var a=["​setPageViewName","​addPageAction","​setCustomAttribute","​finished","​addToTrace","​inlineHit"​],​u=["​addPageAction"​],​c="​api-";​o(a,​function(e,​t){newrelic[t]=n(c+t,"​api"​)}),​o(u,​function(e,​t){newrelic[t]=n(c+t)}),​t.exports=newrelic,​newrelic.noticeError=function(e){"​string"​==typeof e&&​(e=new Error(e)),​r("​err",​[e,​(new Date).getTime()])}},​{1:​12,​2:​13,​handle:"​D5DuLP"​}],​gos:​[function(e,​t){t.exports=e("​7eSDFh"​)},​{}],"​7eSDFh":​[function(e,​t){function n(e,​t,​n){if(r.call(e,​t))return e[t];var o=n();​if(Object.defineProperty&&​Object.keys)try{return Object.defineProperty(e,​t,​{value:​o,​writable:​!0,​enumerable:​!1}),​o}catch(i){}return e[t]=o,​o}var r=Object.prototype.hasOwnProperty;​t.exports=n},​{}],​handle:​[function(e,​t){t.exports=e("​D5DuLP"​)},​{}],​D5DuLP:​[function(e,​t){function n(e,​t,​n,​o){r.buffer([e],​o),​r.emit(e,​t,​n)}var r=e("​ee"​).get("​handle"​);​t.exports=n,​n.ee=r},​{ee:"​QJf3ax"​}],​XL7HBI:​[function(e,​t){function n(e){var t=typeof e;​return!e||"​object"​!==t&&"​function"​!==t?​-1:​e===window?​0:​i(e,​o,​function(){return r++})}var r=1,​o="​nr@id",​i=e("​gos"​);​t.exports=n},​{gos:"​7eSDFh"​}],​id:​[function(e,​t){t.exports=e("​XL7HBI"​)},​{}],​G9z0Bl:​[function(e,​t){function n(){if(!v++){var e=d.info=NREUM.info,​t=f.getElementsByTagName("​script"​)[0];​if(e&&​e.licenseKey&&​e.applicationID&&​t){u(p,​function(t,​n){e[t]||(e[t]=n)});​var n="​https"​===s.split(":"​)[0]||e.sslForHttp;​d.proto=n?"​https://":"​http://",​a("​mark",​["​onload",​i()],​null,"​api"​);​var r=f.createElement("​script"​);​r.src=d.proto+e.agent,​t.parentNode.insertBefore(r,​t)}}}function r(){"​complete"​===f.readyState&&​o()}function o(){a("​mark",​["​domContent",​i()],​null,"​api"​)}function i(){return(new Date).getTime()}var a=e("​handle"​),​u=e(1),​c=window,​f=c.document;​NREUM.o={ST:​setTimeout,​XHR:​c.XMLHttpRequest,​REQ:​c.Request,​EV:​c.Event,​PR:​c.Promise,​MO:​c.MutationObserver},​e(2);​var s=(""​+location).split("?"​)[0],​p={beacon:"​bam.nr-data.net",​errorBeacon:"​bam.nr-data.net",​agent:"​js-agent.newrelic.com/​nr-885.min.js"​},​l=window.XMLHttpRequest&&​XMLHttpRequest.prototype&&​XMLHttpRequest.prototype.addEventListener&&​!/​CriOS/​.test(navigator.userAgent),​d=t.exports={offset:​i(),​origin:​s,​features:​{},​xhrWrappable:​l};​f.addEventListener?​(f.addEventListener("​DOMContentLoaded",​o,​!1),​c.addEventListener("​load",​n,​!1)):​(f.attachEvent("​onreadystatechange",​r),​c.attachEvent("​onload",​n)),​a("​mark",​["​firstbyte",​i()],​null,"​api"​);​var v=0},​{1:​12,​2:​3,​handle:"​D5DuLP"​}],​loader:​[function(e,​t){t.exports=e("​G9z0Bl"​)},​{}],​12:​[function(e,​t){function n(e,t){var n=[],​o="",​i=0;​for(o in e)r.call(e,​o)&&​(n[i]=t(o,​e[o]),​i+=1);​return n}var r=Object.prototype.hasOwnProperty;​t.exports=n},​{}],​13:​[function(e,​t){function n(e,​t,​n){t||(t=0),"​undefined"​==typeof n&&​(n=e?​e.length:​0);​for(var r=-1,​o=n-t||0,​i=Array(0>​o?​0:​o);​++r<o;​)i[r]=e[t+r];​return i}t.exports=n},​{}]},​{},​["​G9z0Bl"​]);</​script> +
-    <meta name="​renderer"​ content="​webkit">​ +
-    <meta name="​baidu-site-verification"​ content="​qLDoHdGnb64RHlkm" ​/+
-    <meta name="​alexaVerifyID"​ content="​SIgQikd9LazsFz9M1vPBaQyC4Gw" ​/+
-    <link rel="​dns-prefetch"​ href="//pusher.tower.im">​ +
-    <link rel="​dns-prefetch"​ href="//​avatar.tower.im">​ +
-    <link rel="​dns-prefetch"​ href="//​atttachments.tower.im">​ +
-    <link rel="​shortcut icon" href="/​favicon.ico"​ type="​image/​x-icon"​ /> +
-    <link rel="​icon"​ href="/​favicon.ico"​ sizes="​32x32"​ /> +
-    <link rel="​icon"​ href="/​favicon.ico"​ sizes="​64x64"​ /> +
-    <link rel="​icon"​ href="/​favicon.ico"​ sizes="​128x128"​ /> +
-    <link rel="​apple-touch-icon-precomposed"​ href="/​assets/​mobile/​icon/​icon@512-84fa5f6ced2a1bd53a409013f739b7ba.png"​ />+
  
-    <link href="/​assets/​application-80d8207fe99832e97f0f9727e31773c9.css"​ media="​all"​ rel="​stylesheet"​ type="​text/​css"​ /> +===== Getting Started =====
-    <script src="/​assets/​application-166bf9e595599ffe8d3de78c38265e96.js"​ type="​text/​javascript"></​script>​+
  
-     +The easiest way to create a new template is by taking an already existing one as starting point. It's a good idea to use the starter template because it is clean and follows the DokuWiki template standards. ​
-    ​+
  
 +  - Install the [[template:​starter]] template (optionally,​ its "​minimal"​ branch is a cleaner starting point)
 +  - Rename the ''​lib/​tpl/​starter''​ directory to ''​lib/​tpl/​yourname''​
 +  - Select the new template in the configuration manager
 +  - Then change your template to your heart'​s desire; to understand how DokuWiki templates are built, have a look at the [[#​directory layout|template files]] and how DokuWiki handles [[CSS]]
 +  - When your template is ready, consider [[#​Publishing a Template on dokuwiki.org|publishing]] it on DokuWiki'​s [[:​template]] page.
  
-    <meta content="​authenticity_token"​ name="​csrf-param"​ /> +===Template naming conventions===
-<meta content="​zP5W10wEK6uz+0r7lKhEOh6t3nr4pQV33UW3yYS8z1U=" name="​csrf-token"​ /> +
-</​head>​+
  
-<body > +A valid template name (directory):​ 
-    <​div id="​page-loading-mask"></​div>​+  * Should only contain the characters a-z and 0-9.  
 +  * Dot ''​.'',​ dash ''​-''​ and underscore ''​_''​ are **not** allowed as: 
 +    * DokuWiki'​s infrastructure doesn'​t support them anywhere 
 +    * Using underscore will also give a [[:​popularity|popularity]] rating of zero.  
 +  * If the same name is used by two different templates 
 +    * they are mutually exclusive and inherent incompatible,​  
 +    * furthermore only one of them can have a template homepage on dokuwiki.org.
  
-    <​script>​ +**It is important to have a unique base field value (i.e. template namein [[devel:​template_info|template.info.txt]] or an already existing template with that name could be overwritten.**
-(function(i,​s,​o,​g,​r,​a,​m){i['​GoogleAnalyticsObject'​]=r;​i[r]=i[r]||function(){ +
-  (i[r].q=i[r].q||[]).push(arguments)},​i[r].l=1*new Date();​a=s.createElement(o),​ +
-  m=s.getElementsByTagName(o)[0];​a.async=1;​a.src=g;​m.parentNode.insertBefore(a,​m) +
-  })(window,​document,'​script','//​www.google-analytics.com/​analytics.js','​ga'​);​+
  
-ga('​create',​ '​UA-10576670-18',​ '​tower.im'​);​ +===== Directory Layout =====
-ga('​send',​ '​pageview'​);​+
  
-</​script>​+Templates should follow the following directory structure (all paths are relative to the template directory). ​
  
 +CSS files are specified in the ''​[[CSS#​style.ini]]''​ file. Use as many files as you like, but you should at least provide one CSS file for the screen presentation and one for printing.
  
-    ​<div class="​wrapper"​+  * ''​<dokuwiki>/​lib/​tpl/<​template>/''​ 
-        +    * ''<​filename>​.css''​ -- [[devel:​css#​templates_styles|template'​s stylesheets]] (if more than a few are provided, it makes sense to group them in a ''​css/''​ subdirectory) 
 +    * ''​script.js''​ -- optional, if your template needs [[devel:​JavaScript]] 
 +    * ''​[[devel:​templates:​main.php]]''​ -- general layout of DokuWiki 
 +    * ''​[[devel:​templates:​detail.php]]''​ -- the image detail page 
 +    * ''​[[devel:​templates:​mediamanager.php]]''​ -- the media-selection popup 
 +    * ''​images/''​ -- all images used in the template (if any) 
 +    * ''​conf/''​ -- configuration files (optional, if configuration is used) 
 +      * ''​default.php''​ -- [[configuration#​default settings]] for the [[devel:​configuration#​template settings]] 
 +      * ''​metadata.php''​ -- [[configuration#​configuration metadata]] describe properties of the settings as used by the Configuration Manager 
 +    * ''​lang/''​ -- language files 
 +      * ''<​lang code>/​lang.php''​ -- [[[[devel:​localization#​template_localization|localization strings]] used in the template (optional, use when needed) 
 +      * ''<​lang code>/​settings.php''​ -- localization strings used in the configuration manager (if configuration is used) 
 +    * ''​style.ini''​ -- see [[devel:​style.ini]] 
 +    * ''​favicon.ico''​ -- favicon (can be overwritten by uploading another one into the root or wiki namespace when [[xref>​tpl_favicon()|tpl_favicon()]] is used) 
 +    * ''​template.info.txt''​ -- A text file with [[devel:​template info|template information]] **required!**
  
-        ​+Handling of configuration settings is analogous to [[common_plugin_functions|plugins]]. Use ''​%%tpl_getConf(<​setting>​)%%''​ to retrieve custom template settings. Saved local settings are stored in DokuWiki'​s global ''​conf/​local.php''​.
  
  
 +===== Inner workings explained =====
  
-    ​+==== Functions ====
  
 +A list of available functions can be found in [[xref>​inc/​template.php|API documentation]]. Some specialities are listed here.
  
-<div class="​header"​> +  * **''​[[xref>tpl_content()]]''​** \\ This function outputs the page body, or in other words the content of your wiki page, including the [[:TOC]]. You can prevent it from outputting the TOC by passing ''​false''​ while calling it: <code php
-    ​<h1 class="​logo"​+tpl_content(false)
-        <a href="​javascript:​;" class="​link-team-menu">​ +</code>This can be used to separate the TOC from the content and place it somewhere else on the screen. See ''​tpl_toc()''​ below for further details.
-            <span class="​name">​上海西拉子软件有限公司</​span>​ +
-            <i class="​twr twr-caret-down"></​i>​ +
-        </a> +
-    </h1>+
  
-    <ul class="​nav"​> +  * **''​[[xref>tpl_toc()]]''​** \\ By default, the ''​tpl_content()''​ function will take care of displaying ​[[:TOC|Table of Contents]] itself, prepending it to the actual page content. If your template uses sidebar or other more complex layout you may want to place the TOC independently from the page content. ​This can be done with the ''​tpl_toc()''​ functionWhen using it, it is important to disable automatic TOC placement by passing the argument ''​false''​ to the ''​tpl_content()''​ function.\\ \\ **Example:​** \\ <code php
-        <li id="​nav-project">​ +<​div ​id="content">​ 
-            <href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​projects"​ data-stack data-stack-root>​项目</​a>​ +    <?php tpl_content(false)?​>
-        </​li>​ +
-        <li id="​nav-events">​ +
-            <a href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​events"​ data-stack data-stack-root>​动态</​a>​ +
-        </​li>​ +
- +
-            <li id="​nav-week">​ +
-                <a href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​weekly_reports"​ data-stack data-stack-root >​周报</​a>​ +
-            </​li>​ +
- +
-        <li id="​nav-calendar">​ +
-            <a href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​calendars"​ data-stack data-stack-fluid data-stack-root>​日历</​a>​ +
-        </​li>​ +
-        <li id="​nav-members">​ +
-            <a href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​members"​ data-stack data-stack-root>​团队</​a>​ +
-        </​li>​ +
-        <li id="​nav-me">​ +
-            <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c?​me=1"​ data-stack data-stack-root>​我自己</​a>​ +
-        </​li>​ +
-    </​ul>​ +
- +
-    <div class="​command-bar">​ +
-        <div class="​search-wrap">​ +
-            <a href="​javascript:;" class="​link-search"​ title="​搜索"><​i class="​twr twr-search"></​i></​a+
-            <form id="​form-search"​ class="​form"​ method="​get"​ action="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​search">​ +
-                <input id="​txt-search"​ type="​text"​ class="​keyword no-border"​ name="​keyword"​ placeholder="​搜索"​ autocomplete="​off"​ /> +
-            </​form>​ +
-        </​div>​ +
- +
-        <div class="​notification-info">​ +
-            <a href="​javascript:;"​ id="​notification-count"​ class="​label unread"​ title="​新的通知"​ data-unread-count="​9"​ data-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​unread_counts">​ +
-                <span class="​twr twr-bell-o bell"></​span>​ +
-                <span class="​num">​9</​span>​ +
-            </​a>​ +
-            <div class="​noti-pop">​ +
-                <div class="​noti-pop-hd">​ +
-                    <span class="​title">​通知</​span>​ +
-                    <a class="​noti-settings"​ href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c/​notification_settings/"​ title="​设置通知发送方式"​ data-stack data-stack-root>​ +
-                        <i class="​twr twr-cog"></​i>​ +
-                    </​a>​ +
-                    <a id="​noti-mark-read"​ class="​mark-as-read"​ href="​javascript:;"​ title="​全部标记为已读">​ +
-                        <i class="​twr twr-check"></​i>​ +
-                    </​a>​ +
-                </​div>​ +
-                <div class="​noti-pop-list notification-list">​ +
-                    <div data-notification-guid="​f34305cc950c48fe8c135453184166e7"​ data-topic-guid="​309dd4b676a743f7b351bd0d37553d27"​ class="​notice unread no-content" data-created-at="​2016-02-24 16:20:06 +0800" data-key-id="​55560890"​ > +
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​f34305cc950c48fe8c135453184166e7"​ +
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​需要在商品列表、店铺列表、首页接口中增加是否收藏字段,在这3个接口查询数据时,同时根据member_id、商品ID&​amp;#​x2F;​店铺ID查询收藏表favor...</span+
-        </​span>​ +
-    </​a>​ +
-    ​<​div ​class="date" ​data-readable-time="​2016-02-24T16:​20:​06+08:​00"></​div+
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​f34305cc950c48fe8c135453184166e7/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>+
 </​div>​ </​div>​
  
-<​div ​data-notification-guid="​ee25c554f267423f8c72f32949fe740b"​ data-topic-guid="​056df64e0f624a3494358a7d3173838d"​ class="​notice unread no-content"​ data-created-at="​2016-02-24 16:19:42 +0800" data-key-id="55560736" > +<div id="sidebar">​ 
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​ee25c554f267423f8c72f32949fe740b"​ +    <?php tpl_toc()?>
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​投诉功能(退款),在订单表中增加一个字段“异常类型”,exception_state,​1:补货,2:退款,同时需要在后台修改订单状态为异常退款或异常补货。...</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-24T16:​19:​42+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​ee25c554f267423f8c72f32949fe740b/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>+
 </​div>​ </​div>​
 +</​code>​The ''​tpl_toc()''​ function renders the TOC from three different sources: a global [[environment#​$TOC]] variable, the page [[metadata]] or the ''​getTOC()''​ method of [[admin plugins]]. Because there is no metadata available for old revisions or preview ''​tpl_toc()''​ can only use the global [[environment#​$TOC]] variable for these cases. Because the [[environment#​$TOC]] variable is filled by the page renderer this will only work when ''​tpl_toc()''​ is called **after** ''​tpl_content()''​. If this is not possible in your template layout you may use output buffering to circumvent the problem. \\ \\ **Example:​**\\ <code php>
 +<?php
 +    // render the content into buffer for later use
 +    ob_start();
 +    tpl_content(false);​
 +    $buffer = ob_get_clean();​
 +?>
  
-<​div ​data-notification-guid="​f8808f83fb264a1393fb9709f19e81f4"​ data-topic-guid="​685bb738adf34d01b0c97630487c0840"​ class="​notice unread no-content"​ data-created-at="​2016-02-23 18:17:51 +0800" data-key-id="55424439" > +<div id="sidebar">​ 
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​f8808f83fb264a1393fb9709f19e81f4"​ +    <?php tpl_toc()?>
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​收货&​amp;#​x2F;​提货流程完成</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-23T18:​17:​51+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​f8808f83fb264a1393fb9709f19e81f4/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>+
 </​div>​ </​div>​
  
-<​div ​data-notification-guid="6d8bea98213546a38b434fc4cf43d00a"​ data-topic-guid="​07ff325ed6b04314814982b1155efbd3"​ class="​notice unread no-content" data-created-at="​2016-02-23 13:34:03 +0800" data-key-id="​55347216" > +<​div ​id="​content">​ 
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​6d8bea98213546a38b434fc4cf43d00a"​ +    <?php echo $buffer?>
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​收货、提货接口给赵相庆和于玲</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-23T13:​34:​03+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​6d8bea98213546a38b434fc4cf43d00a/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>+
 </​div>​ </​div>​
 +</​code>​
  
-<div data-notification-guid="​bbc9c938cfb04290adf6ea2b4434d3bc"​ data-topic-guid="​f71afcabcd7a47b1b5cd4e36e2eed9e3"​ class="​notice unread no-content"​ data-created-at="​2016-02-19 15:48:59 +0800" data-key-id="​54957923"​ > +  * **''​[[xref>​tpl_getConf()|tpl_getConf('​key'​)]]''​** \\ This function is used to access [[configuration|configuration settings]] from within the template.
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​bbc9c938cfb04290adf6ea2b4434d3bc"​ +
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​人工匹配采购需求,特发、聊天部分功能</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-19T15:​48:​59+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​bbc9c938cfb04290adf6ea2b4434d3bc/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>​ +
-</​div>​+
  
-<div data-notification-guid="​7461d026680c4ec7951ca61f99475b96"​ data-topic-guid="​d5c17675e12840a6b649f4d05b458388"​ class="​notice unread no-content"​ data-created-at="​2016-02-19 15:48:48 +0800" data-key-id="​54957877"​ > +  * **''​[[xref>​tpl_getLang()|tpl_getLang('​key'​)]]''​** \\ This function is used to access localized strings ​ of the template. For details see the [[devel:localization]] development documentation.
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​7461d026680c4ec7951ca61f99475b96"​ +
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​赵相庆</​span>​ +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​给欧丽君添加APP任务</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-19T15:48:​48+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​7461d026680c4ec7951ca61f99475b96/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>​ +
-</​div>​+
  
-<div data-notification-guid="​0274aa1797b64a379b1de805e9723a36"​ data-topic-guid="​9dce70f019ad4928a13603a5e45f9ca4"​ class="​notice unread no-content"​ data-created-at="​2016-02-17 10:11:01 +0800" data-key-id="​54607216"​ > +  * Further many other useful template functions are available. Please have look in [[xref>inc/template.php|API documentation]].
-    <class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​0274aa1797b64a379b1de805e9723a36"​ +
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/"​> +
-        <span class="​title">​ +
-            <span class="​actor member">​于玲<​/span> +
-            <span class="​action">​完成了任务</​span>​ +
-            <span class="​target">​接口文档整理(买家、卖家API),参考api.htm的内容,在tower下面的markdown中写</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-17T10:​11:​01+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​0274aa1797b64a379b1de805e9723a36/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>​ +
-</​div>​+
  
-<div data-notification-guid="​adfb973990f94e67ac57c5831031ef83"​ data-topic-guid="​2cf5f5d428ca4c36b1d2db73d1524df1"​ class="​notice unread no-content"​ data-created-at="​2016-02-16 19:16:24 +0800" data-key-id="​54571995"​ > +==== Global Variables And Constants ​==== 
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​adfb973990f94e67ac57c5831031ef83"​ +For complete list of useful global variables and constants please refer to the [[environment]] page.
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <​span class="​title">​ +
-            <span class="​actor member">​于玲</​span>​ +
-            <span class="​action">​为 alex jiang 创建了任务</​span>​ +
-            <span class="​target">​H5扫描仪</​span>​ +
-        </​span>​ +
-    </a+
-    <div class="​date"​ data-readable-time="​2016-02-16T19:​16:​24+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​adfb973990f94e67ac57c5831031ef83/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>​ +
-</​div>​+
  
-<div data-notification-guid="​4fc624bf912c46c9be204c642c0d9664"​ data-topic-guid="​5079e5cb2ed04de2a2a828d5a8757e0f"​ class="​notice unread no-content"​ data-created-at="​2016-02-16 19:05:06 +0800" data-key-id="​54571212"​ > +==== Automated Housekeeping ​====
-    <a class="​link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​4fc624bf912c46c9be204c642c0d9664"​ +
-        data-stack data-stack-root data-parent-name="​全部通知"​ data-parent-url="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/">​ +
-        <span class="​title">​ +
-            <span class="​actor member">​于玲</​span>​ +
-            <span class="​action">​为 alex jiang 创建了任务</​span>​ +
-            <span class="​target">​(需要讨论)好评的排序规则制定</​span>​ +
-        </​span>​ +
-    </​a>​ +
-    <div class="​date"​ data-readable-time="​2016-02-16T19:​05:​05+08:​00"></​div>​ +
-    <a class="​mark-read"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/​4fc624bf912c46c9be204c642c0d9664/​read"​ +
-        title="​标记为已读"​ data-remote="​true"​ data-method="​post"​ data-loading><​i class="​twr twr-check"></​i></​a>​ +
-</​div>​+
  
 +Almost at the bottom of the default template'​s [[devel:​templates:​main.php]] file you'll see a function call to ''​[[xref>​tpl_indexerWebBug()]]''​. The function generates a HTML ''​%%<​img>​%%''​ tag which results in a request to ''​[[:​indexer|lib/​exe/​indexer.php]]''​. This **vital** part of DokuWiki provides important housekeeping work to keep the wiki running smoothly. All templates should include this function, without it the wiki may not function correctly (for example the [[:​search|search index]] wont be built).
  
-                </​div>​ +==== '​dokuwiki' ​class ====
-                <div class="​noti-pop-empty hide">​- 没有新通知 -</​div>​ +
-                <div class="​noti-pop-action">​ +
-                    <a class="​noti-all-link"​ href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​notifications/"​ data-stack data-stack-root>​查看全部</​a>​ +
-                </​div>​ +
-            </​div>​ +
-        </​div>​ +
-        <​div ​class="​account-info">​ +
-            <div class="​member-settings">​ +
-                <a class="​link-member-menu"​ href="​javascript:;"​ title="​alex jiang">​ +
-                    <img class="​avatar"​ src="/​assets/​default_avatars/​nightfall.jpg"​ alt="​alex jiang" /> +
-                    <span class="twr twr-caret-down"></​span>​ +
-                </​a>​ +
-            </​div>​ +
-        </​div>​ +
-    </​div>​ +
-</​div>​+
  
-<script id="​tpl-member-menu"​ type="​text/​html">​ +class named ''​dokuwiki''​ should be added to some content surrounding element (either around everything or at least around ''​tpl_content()''​) in each template'​s [[devel:​templates:​main.php]],​ [[devel:​templates:​detail.php]] and [[devel:​templates:​mediamanager.php]]. This is to make sure that DokuWiki'​s styles don't interfere with other styles if it gets integrated into an existing site with potentially conflicting CSS.
-    <​ul ​class="​menu">​ +
-        <​li>​ +
-            <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c/​settings"​ data-stack-root="​true"​ data-stack="​true">​个人设置</​a>​ +
-        </​li>​ +
-        <​li>​ +
-            <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c/​notification_settings"​ data-stack-root="​true"​ data-stack="​true">​通知设置</​a>​ +
-        </​li>​ +
-        <li class="​part-line"></​li>​ +
-        <​li><​a href="/​roadmap"​ target="​_blank">​最新功能</​a></​li>​ +
-        <​li><​a href="/​users/​sign_out"​ data-method="​DELETE"​ rel="​nofollow">​退出</​a></​li>​ +
-    </​ul>​ +
-</​script>​+
  
-<script id="​tpl-team-menu"​ type="​text/​html">​ +==== Include Hooks ====
-    <ul class="​menu">​ +
-            <​li><​a href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​settings"​ data-stack data-stack-root>​团队账户</​a></​li>​+
  
-            <​li>​ +Include Hooks are simple way to add some static content to your [[:​DokuWiki]] installation without writing your own [[:​Template]]. You can use them for adding ​standard header at the top or a disclaimer at the bottom of each page.
-                <href="/​teams/​10a7a6f8a0044c50a2f15fd37763dcce/​upgrade"​ data-stack data-stack-root>​升级到 Pro 版</a+
-            </li>+
  
-            <p class="​title"><​span>​切换团队<​/span><​/p> +The DokuWiki'​s default template looks for files with special names in the template directory and simply includes them at the correct places when displaying the page. You can add whatever HTML or even PHP you like into these files. Of course this only works if you are using the //default// template or template supporting the [[template:​dokuwiki#​supported_include_hooks|same include hooks]] (like the starter template).
-            <ul class="​menu scroll team-list">​ +
-                        <​li>​ +
-                            <a href="/teams/​3d0ef17700c94c8697b02eacb0b4d291">​采购师-Android开发<​/a+
-                        </​li>​ +
-            </​ul>​ +
-            <li class="​part-line"></​li>​+
  
-        <li class="​small"><​a href="/​launchpad?​skip=1">​创建/​管理团队</​a></​li>​ +===== Converting existing templates =====
-    </​ul>​ +
-</​script>​+
  
 +If you're lacking design skills you can also convert existing templates. There are lots of free options available. If you'd like to publish one of those as well, please make sure it is [[https://​www.gnu.org/​philosophy/​license-list.html#​GPLCompatibleLicenses|GPL2-compatible]].
  
 +  * [[WP_to_DW_template|How to convert a WordPress theme to a DokuWiki template]]
  
-<div class="​container workspace">​ +===== Avoiding problems =====
-    <div class="page " +
-        data-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
-        <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0"​ class="​link-page-behind"​ data-stack>​采购师</​a>​ +
-    </​div>​ +
-    <div class="​page">​+
  
 +Here are a few problems template developers run into and how to avoid them:
  
 +===Don'​t put JavaScript commands in the <​body>​ tag of a page=== ​
 +This includes ''​onLoad''​ and others. Although breaking this rule doesn'​t affect FireFox at all, Internet Explorer (even IE 7) will have JavaScript errors due to the JavaScript required for page editing, and this can result in pages that won't display correctly, and you will find the editing bar will be missing when you need it.
  
-<div class="​page-inner"​ data-since="​2016-02-26 16:37:30 UTC" +===Turn off "Compact CSS and JavaScript files" ​while developing ​template===
-     +
-     +
-     +
-    data-markdown="1" +
-    data-creator-guid="​2b37b8e81bf746a1a5914a980bd5cab4"​ +
-    data-project-creator="​a1b1d834655c4a458c23c898ee6f2d6c"​ +
-     +
-    data-page-name="​商家接口文档"​ id="​page-doc">​ +
- +
- +
- +
-        <div class="​doc-wrap gallery-wrap">​ +
-            <div class="​project-info">​ +
-                <​span>​ +
-                    项目: +
-                    <href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0"​ +
-                        data-stack data-stack-replace data-stack-root +
-                        >​采购师</​a>​ +
-                </​span>​ +
-            </​div>​ +
-            <div class="doc printable"​ data-created-at="​2016-02-16 16:15:29 +0800" data-updated-at="​2016-02-26 23:32:13 +0800">​ +
-    <h3 class="​doc-title">​ +
-        <span class="​document-rest">​商家接口文档</​span>​ +
-    </​h3>​ +
-    <div class="​doc-info">​ +
-        <p> +
-            <span class="​doc-creator">​alex jiang</​span>​ +
-            <span class="​doc-update-time"​ data-readable-time="​2016-02-26T23:​32:​13+08:​00"></​span>​保存 +
-        </​p>​ +
- +
-            <p class="​doc-control">​ +
-                <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​revisions"​ class="​link-doc-revisions"​ data-stack>​查看编辑历史</​a>​ +
-                    <span class="​doc-diff">​ +
-                        或 <a href="​javascript:;"​ class="​link-doc-diff">​对比历史记录</​a>​ +
-                    </​span>​ +
-            </​p>​ +
-    </​div>​ +
-    <div id="​doc-content"​ class="​doc-content editor-style gallery-wrap doc-markdown">​ +
-        <input type="​hidden"​ id="​markdown-content"​ value="​{&​quot;​content&​quot;:&​quot;#​商家接口#​\r\n\r\n\r\n#​商家商品列表#​\r\n\r\n\r\n商品列表(POST)\r\n\u003E /​mobile/​index.php?​act=seller_goods\u0026op=goods_list\r\n\r\n请求参数(POST)\r\n- *key 当前登录令牌\r\n- keyword 商品搜索关键字\r\n- search_type 搜索类型,默认0 0-商品名称 1-商家货号 2-商品CommonID\r\n- goods_type 商品类型,默认online online-在售商品 offline-仓库商品 lockup-禁售商品\r\n\r\n返回参数\r\n- goods_list\r\n- goods_commonid 商品CommonID\r\n- goods_name 商品名称\r\n- goods_price 商品价格\r\n- goods_storage_sum 商品库存\r\n- goods_addtime 商品发布时间(2015-1-1)\r\n- goods_image 商品图片URL\r\n- goods_state 商品状态 0-仓库 1-在售 10-禁售\r\n- goods_lock 商品锁定 0-未锁 1-已锁\r\n\r\n#​商品上架#​\r\n调用接口(post)\r\n\u003E/​mobile/​index.php?​act=seller_goods\u0026op=goods_show\r\n\r\n\r\n请求参数\r\n- key 当前登录令牌\r\n- commonids[] 商品公共编号(SPU)\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​1\&​quot;​}}\r\n\r\n操作错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n#​商品下架#​\r\n\r\n调用接口(post)\r\n\r\n ​ \u003E/​mobile/​index.php?​act=seller_goods\u0026op=goods_unshow\r\n\r\n请求参数\r\n\r\n- key 当前登录令牌\r\n- commonids[] 商品公共编号(SPU)\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​1\&​quot;​}}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n\r\n#​ 商家系统推荐采购需求\r\n调用接口(post)\r\n\u003E/​mobile/​index.php?​act=api_seller_sundry\u0026op=requirement_for_seller_self\r\n\r\n请求参数(POST)\r\n- *key 当前登录令牌\r\n- member_id 用户编号\r\n- city_id 城市编号\r\n\r\n返回参数\r\n- id  ID \r\n- title  标题\r\n- goods_name ​ 商品名称\r\n- industry_name ​ 行业名称\r\n- gc_id  需求ID \r\n- goods_class_name ​ 商品分类 \r\n- brand_name ​ 品牌名称\r\n- price  价格\r\n- goods_photo ​ 图片 \r\n- city_id ​ 城市ID\r\n- city_name ​ 城市名称\r\n- member_id ​ 用户ID\r\n- goods_number ​ 商品数量\r\n- state \r\n- note  备注\r\n- create_time ​ 发布时间\r\n- counts\r\n- spec  商品属性\r\n- member_info ​ 用户信息\r\n\r\n#​ 符合商家行业的采购需求\r\n调用接口(post)\r\n\u003E/​mobile/​index.php?​act=api_seller_sundry\u0026op=requirement_for_seller\r\n\r\n请求参数(POST)\r\n- *key 当前登录令牌\r\n- industry_name 行业名称\r\n- city_id 城市编号\r\n\r\n返回参数\r\n- id  ID \r\n- title  标题\r\n- goods_name ​ 商品名称\r\n- industry_name ​ 行业名称\r\n- gc_id  需求ID \r\n- goods_class_name ​ 商品分类 \r\n- brand_name ​ 品牌名称\r\n- price  价格\r\n- goods_photo ​ 图片 \r\n- city_id ​ 城市ID\r\n- city_name ​ 城市名称\r\n- member_id ​ 用户ID\r\n- goods_number ​ 商品数量\r\n- state \r\n- note  备注\r\n- create_time ​ 发布时间\r\n- counts\r\n- spec  商品属性\r\n- member_info ​ 用户信息\r\n\r\n#​店铺详情\r\n\r\n请求接口(get)\r\n\r\n\u003E/​mobile/​index.php?​act=store\u0026op=store_info\r\n\r\n请求参数\r\n\r\n- store_id 店铺ID\r\n- key 登录令牌\r\n\r\n返回数据\r\n\r\n - store_id ​   商家ID\r\n - store_name ​   商家名称 ​ \r\n - store_keywords ​  ​商家标签 \r\n - store_avatar ​   商家头像\r\n - store_servicecredit ​   商家星级 \r\n\r\n#​商家订单列表\r\n请求接口(post)\r\n\r\n\u003E/​mobile/​index.php?​act=seller_order\u0026op=order_list_by_type\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- search_type 订单类型\r\n- search_state 订单状态\r\n\r\n返回数据\r\n\r\n -  order_id ​  ​订单ID ​ \r\n -  order_sn ​  ​订单SN ​  \r\n -  pay_sn ​  ​支付sn\r\n -  store_id ​  ​店铺ID \r\n -  store_name ​  ​店铺名称 ​ \r\n -  buyer_id ​  ​采购师id\r\n -  buyer_name ​    ​采购师名\r\n -  goods_amount ​  ​商品总价 ​ \r\n -  order_amount ​  ​订单总价 \r\n -  shipping_fee ​  ​运费 ​ \r\n -  evaluation_state ​ 评价状态\r\n -  order_state ​  ​订单类型 ​ \r\n -  is_special ​  ​是不是特发订单\r\n -  is_reissue ​  ​是不是补发订单 \r\n -  delivery_time ​ 送货时间\r\n -  delivery_address ​  ​送货地址 \r\n -  remark ​  ​留言 ​  \r\n -  is_evaluate_cgs ​ 是否收藏采购师 \r\n -  is_evaluate_store ​  ​是否收藏店铺 \r\n -  buyer_avatar ​  ​采购师图片 \r\n -  buyer_reputation_scores ​  ​采购师星级 \r\n -  goods_list ​  ​商品信息\r\n\r\n#​商家确认订单\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=seller_order\u0026op=change_state_for_confirm\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- order_sn 订单sn\r\n- shipping_fee 订单运费\r\n- delivery_address 取货地址\r\n(取货地址和订单运费二取一)\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​操作成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n#​商家取消订单\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=seller_order\u0026op=order_cancel\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- order_id 订单id\r\n- order_cancel_original_state 取消前的状态\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​操作成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n\r\n#​商家确认发货\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=seller_order\u0026op=order_deliver_send\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- order_id 订单id\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​1\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n#​异常时的补货\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=seller_order\u0026op=order_replenishment\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- order_sn 订单sn\r\n- is_reissue 是否是补发订单 是1 否0\r\n- is_special 是否是特发订单 是1 否0 \r\n- reissue_number 补发数量\r\n- reissue_price 补发价格 始终为0\r\n\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​补货成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​参数错误\&​quot;​}}\r\n\r\n\r\n#​评价采购师\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=api_seller_sundry\u0026op=evaluation\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- order_sn 订单sn\r\n- store_id 店铺id\r\n- evaluate_person_id 被评价人id\r\n- evaluate_who_id 评价人id\r\n- evaluation_score 评价星级\r\n- evaluation_reasons 评价内容\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​评价成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​不能重复评价\&​quot;​}}\r\n\r\n#​商家关注采购师列表\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=member_favorites_cgs\u0026op=favorites_list\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n\r\n返回数据\r\n- fav_id ​ 关注id\r\n- fav_time ​ 关注事件\r\n- cgs_name ​ 采购师名称\r\n- cgs_avatar_url ​ 采购师头像\r\n- reputation_scores ​ 采购师星级\r\n\r\n#​商家关注采购师\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=member_favorites_cgs\u0026op=favorites_add\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- fav_id 用户id\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​收藏采购师成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n-\&​quot;​code\&​quot;:​400,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​您已经收藏了该采购师\&​quot;​}}\r\n\r\n#​商家取消关注采购师\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=member_favorites_cgs\u0026op=favorites_del\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- fav_id 用户id\r\n\r\n操作成功\r\n\r\n- 操作成返回\&​quot;​1\&​quot;​\r\n- {\&​quot;​code\&​quot;:​200,​\&​quot;​datas\&​quot;:​\&​quot;​取消关注采购师成功\&​quot;​}\r\n\r\n错误\r\n\r\n- 出现错误返回error,error内为错误信息\r\n-\&​quot;​code\&​quot;:​400,​\&​quot;​datas\&​quot;:​{\&​quot;​error\&​quot;:​\&​quot;​取消关注采购师失败\&​quot;​}}\r\n\r\n#​店铺评价记录\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=api_seller_sundry\u0026op=evaluation_record\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- evaluate_type 评价类型 1:我评价的记录 2:评价我的记录\r\n\r\n\r\n返回数据\r\n- id id\r\n- order_sn 订单sn\r\n- store_id 商家id\r\n- evaluate_who_id 评价人id\r\n- evaluate_person_id 被评价人id\r\n- evaluation_score 评价星级\r\n- evaluation_reasons 评价内容\r\n- date_time 评价时间\r\n- member_id 用户id\r\n- member_avatar 用户头像\r\n- member_name 用户名\r\n\r\n#​采购师被评价记录\r\n调用接口\r\n\u003E/​mobile/​index.php?​act=api_seller_sundry\u0026op=evaluation_record\r\n\r\n请求参数\r\n\r\n- key 登录令牌\r\n- evaluate_type 评价类型 1:我评价的记录 2:评价我的记录\r\n- cgs_id 采购师id\r\n\r\n返回数据\r\n- id id\r\n- order_sn 订单sn\r\n- store_id 商家id\r\n- evaluate_who_id 评价人id\r\n- evaluate_person_id 被评价人id\r\n- evaluation_score 评价星级\r\n- evaluation_reasons 评价内容\r\n- date_time 评价时间\r\n- member_id 用户id\r\n- member_avatar 用户头像\r\n- member_name 用户名\r\n\r\n\r\n#​浏览历史纪录列表\r\n\r\n\u003E/​mobile/​index.php?​act=member_browse_history\u0026op=browse_history_list\r\n\r\n请求参数:(post)\r\n\r\nbrowse_type 浏览类型 ​ goods为商品,​store为店铺,​cgs为采购师,cgxq为采购需求\r\nkey 登录令牌\r\n\r\n返回数据\r\n\r\n采购需求:\r\n ​       browse_id 采购需求ID\r\n ​       browse_type cgxq为采购需求\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       cgxq_name ​ 采购需求名称\r\n ​       cgxq_pic ​ 采购需求图片\r\n ​       cgxq_product_name ​ 采购需求产品名称\r\n ​       cgxq_amount ​ 采购需求数量\r\n ​       cgxq_price ​ 采购需求商品单价\r\n ​       log_msg ​ 浏览备注\r\n\r\n商品:\r\n ​       browse_id 商品ID\r\n ​       browse_type goods为商品\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       goods_name 商品名称\r\n ​       goods_image ​ 商品图片\r\n ​       gc_id 商品分类ID\r\n ​       log_price 商品浏览时价格\r\n ​       log_msg 浏览备注\r\n商铺:\r\n ​       browse_id 店铺ID\r\n ​       browse_type store为店铺\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       store_id 店铺ID\r\n ​       store_name 店铺名称\r\n ​       sc_id 店铺分类ID\r\n ​       log_msg 浏览备注\r\n采购师:\r\n ​       browse_id 采购师ID\r\n ​       browse_type cgs为采购师\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       cgs_name 采购师昵称\r\n ​       log_msg 浏览备注\r\n\t\t\r\n\t\t\r\n#​添加浏览历史纪录\r\n\r\n\u003E/​mobile/​index.php?​act=member_browse_history\u0026op=browse_history_add\r\n\r\n请求参数:(post)\r\n\r\nbrowse_type 浏览类型 ​ goods为商品,​store为店铺,​cgs为采购师,cgxq为采购需求\r\nkey 登录令牌\r\n采购需求:\r\n ​       browse_id 采购需求ID\r\n ​       browse_type cgxq为采购需求\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       cgxq_name ​ 采购需求名称\r\n ​       cgxq_pic ​ 采购需求图片\r\n ​       cgxq_product_name ​ 采购需求产品名称\r\n ​       cgxq_amount ​ 采购需求数量\r\n ​       cgxq_price ​ 采购需求商品单价\r\n ​       log_msg ​ 浏览备注\r\n\r\n商品:\r\n ​       browse_id 商品ID\r\n ​       browse_type goods为商品\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       goods_name 商品名称\r\n ​       goods_image ​ 商品图片\r\n ​       gc_id 商品分类ID\r\n ​       log_price 商品浏览时价格\r\n ​       log_msg 浏览备注\r\n商铺:\r\n ​       browse_id 店铺ID\r\n ​       browse_type store为店铺\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       store_id 店铺ID\r\n ​       store_name 店铺名称\r\n ​       sc_id 店铺分类ID\r\n ​       log_msg 浏览备注\r\n采购师:\r\n ​       browse_id 采购师ID\r\n ​       browse_type cgs为采购师\r\n ​       member_id 会员ID\r\n ​       member_name 会员名\r\n ​       browse_time 浏览时间\r\n ​       cgs_name 采购师昵称\r\n ​       log_msg 浏览备注\r\n\r\n返回数据\r\n\r\n&#​x27;​1&#​x27;​\r\n\r\n\r\n#​删除浏览历史纪录\r\n\r\n\u003E/​mobile/​index.php?​act=member_browse_history\u0026op=browse_history_del\r\n\r\n请求参数:(post)\r\n\r\nbrowse_type 浏览类型 ​ goods为商品,​store为店铺,​cgs为采购师,cgxq为采购需求\r\nbrowse_id 商品ID或店铺ID或采购师ID或采购需求ID\r\nkey 登录令牌\r\n\r\n返回数据\r\n\r\n&#​x27;​1&#​x27;&​quot;​}"​ /> +
-    </​div>​ +
-</​div>​ +
- +
-        </​div>​ +
- +
-        <div class="​comments streams">​ +
-            <div class="​event event-common event-document-add"​ id="​event-45440157"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​from"​ target="​_blank"><​img alt="​于玲"​ class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​winter.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-45440157"​ data-created-at="​2016-02-16T16:​15:​29+08:​00"​ class="​event-created-at">​ +
- 2016-02-16 16:15 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​link-member"​ target="​_blank">​于玲</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 创建了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​新建文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-            <div class="​event event-common event-document-edit"​ id="​event-45440326"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​from"​ target="​_blank"><​img alt="​于玲"​ class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​winter.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-45440326"​ data-created-at="​2016-02-16T16:​16:​12+08:​00"​ class="​event-created-at">​ +
- 2016-02-16 16:16 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​link-member"​ target="​_blank">​于玲</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 编辑了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​接口文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-            <div class="​event event-common event-document-edit"​ id="​event-45440904"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​from"​ target="​_blank"><​img alt="​于玲"​ class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​winter.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-45440904"​ data-created-at="​2016-02-16T16:​18:​42+08:​00"​ class="​event-created-at">​ +
- 2016-02-16 16:18 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​link-member"​ target="​_blank">​于玲</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 编辑了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​接口文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-             +
-<div class="​comment"​ id="​f603f18ed1ca4239ade5fe9e5572d60c"​ data-creator-guid="​a1b1d834655c4a458c23c898ee6f2d6c">​ +
-    <a class="​avatar-wrap"​ href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c/"​ target="​_blank">​ +
-        <img class="​avatar"​ src="/​assets/​default_avatars/​nightfall.jpg"​ width="​50"​ height="​50"​ /> +
-    </​a>​ +
- +
-    <div class="​comment-actions ">​ +
-        <div class="​actions">​ +
-            <a href="​javascript:;"​ class="​reply">​ +
-                <i class="​twr twr-reply"></​i>​ +
-            </​a>​ +
-            <a href="/​comments/​f603f18ed1ca4239ade5fe9e5572d60c/​like"​ +
-                class="​like"​ data-remote="​true"​ data-loading="​true"​ data-method="​post">​ +
-                <i class="​twr twr-thumbs-o-up"></​i>​ <span class="​count"></​span>​ +
-            </​a>​ +
-            <a href="​javascript:;"​ class="​more"​ data-visible-to="​creator,​admin">​ +
-                <i class="​twr twr-bars"></​i>​ +
-            </​a>​ +
-        </​div>​ +
-    </​div>​ +
- +
-    <div class="​comment-main">​ +
-        <div class="​info">​ +
-          <a class="​author"​ href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c/"​ data-stack data-stack-root>​alex jiang</​a>​ +
-          <a class="​create-time"​ href="#​f603f18ed1ca4239ade5fe9e5572d60c"​ title="​2016-02-16 16:32" data-readable-time="​2016-02-16T16:​32:​54+08:​00"></​a>​ +
-        </​div>​ +
- +
-        <div class="​comment-content editor-style"><​p><​img src="​https://​s.tower.im/​emoji/​smiley.png"​ width="​20"​ height="​20"​ alt="​smiley"​ data-emoji="​true"​ data-non-image="​true"><​img src="​https://​s.tower.im/​emoji/​thumbsup.png"​ width="​20"​ height="​20"​ alt="​thumbsup"​ data-emoji="​true"​ data-non-image="​true"><​br></​p></​div>​ +
- +
-    </​div>​ +
- +
-    <div class="​tpl-comment-actions-menu">​ +
-        <a href="/​comments/​f603f18ed1ca4239ade5fe9e5572d60c/​edit"​ class="​edit"​ +
-            data-visible-to="​creator"​ data-remote="​true"​ data-loading="​true"​ data-method="​get">​ +
-            编辑 +
-        </​a>​ +
-        <a href="/​comments/​f603f18ed1ca4239ade5fe9e5572d60c/​destroy"​ class="​del"​ +
-            data-visible-to="​creator,​admin"​ data-remote="​true"​ data-method="​post"​ data-confirm="​确定要删除这条回复吗?">​ +
-            删除 +
-        </​a>​ +
-    </​div>​ +
-</​div>​ +
- +
- +
-            <div class="​event event-common event-document-edit"​ id="​event-45444490"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​from"​ target="​_blank"><​img alt="​于玲"​ class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​winter.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-45444490"​ data-created-at="​2016-02-16T16:​35:​26+08:​00"​ class="​event-created-at">​ +
- 2016-02-16 16:35 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​2b37b8e81bf746a1a5914a980bd5cab4"​ class="​link-member"​ target="​_blank">​于玲</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 编辑了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​商家接口文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-            <div class="​event event-common event-document-edit"​ id="​event-45983216"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c"​ class="​from"​ target="​_blank"><​img alt="​alex jiang" class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​nightfall.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-45983216"​ data-created-at="​2016-02-20T20:​21:​01+08:​00"​ class="​event-created-at">​ +
- 2016-02-20 20:21 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c"​ class="​link-member"​ target="​_blank">​alex jiang</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 编辑了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​商家接口文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-            <div class="​event event-common event-document-edit"​ id="​event-46854379"​ +
-    data-ancestor-guid="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-    data-ancestor-name="​采购师"​ +
-    data-ancestor-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0">​ +
- +
- <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c"​ class="​from"​ target="​_blank"><​img alt="​alex jiang" class="​avatar"​ src="​https://​tower.im/​assets/​default_avatars/​nightfall.jpg"​ /></​a>​ +
- <i class="​icon-event"></​i>​ +
- +
- <div class="​event-main">​ +
- <div class="​event-head">​ +
- <a href="#​event-46854379"​ data-created-at="​2016-02-26T23:​32:​13+08:​00"​ class="​event-created-at">​ +
- 2016-02-26 23:32 +
- </​a>​ +
- <span class="​event-actor">​ +
- <a href="/​members/​a1b1d834655c4a458c23c898ee6f2d6c"​ class="​link-member"​ target="​_blank">​alex jiang</​a>​ +
- </​span>​ +
- <span class="​event-action">​ +
- 编辑了文档 +
- </​span>​ +
- <span class="​event-text">​ +
- <​span class="​emphasize">​ +
- <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​document-rest"​ data-stack="​true">​商家接口文档</​a>​ +
- </​span>​ +
- </​span>​ +
- </​div>​ +
- </​div>​ +
-</​div>​ +
- +
-</​div>​ +
- +
-<script type="​text/​html"​ id="​tpl-fold-comment">​ +
-    <div class="​event event-common event-fold-comment"​ id="​event-fold">​ +
-        <i class="​icon-event"></​i>​ +
- +
-        <div class="​event-main">​ +
-            <div class="​event-head">​ +
-                <a href="​javascript:;"​ class="​link-fold-comment">​查看更早的 {{ comments_num }} 条讨论</​a>​ +
-            </​div>​ +
-        </​div>​ +
-    </​div>​ +
-</​script>​ +
- +
- +
-            <div class="​detail-star-action">​ +
-                <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​star?​muid=c50753e8bb7f4898908521e7315737ef"​ class="​detail-action detail-action-star"​ data-itemid="​509058"​ data-itemtype="​Document"​ data-loading="​true"​ data-method="​post"​ data-remote="​true"​ rel="​nofollow"​ title="​关注">​关注</​a>​ +
-            </​div>​ +
- +
-            <div class="​detail-actions">​ +
-                <div class="​item">​ +
-                    <a href="​javascript:​window.print()">​打印</​a>​ +
-                </​div>​ +
- +
-                <div class="​item">​ +
-                    <span class="​detail-action detail-action-edit edit-locked hide" data-tooltip="​alex jiang 正在编辑"​ data-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​is_locked">​编辑<​i class="​twr twr-lock"></​i></​span>​ +
-                    <a href="​javascript:;"​ class="​detail-action detail-action-edit-real " data-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​edit">​编辑</​a>​ +
-                </​div>​ +
- +
- +
-                <div class="​item detail-action-move"​ data-visible-to="​admin,​creator">​ +
-                    <a href="​javascript:;"​ class="​detail-action">​移动</​a>​ +
-                    <div class="​confirm">​ +
-                        <form class="​form form-move"​ action="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​move"​ method="​post"​ data-remote="​true">​ +
-                            <p class="​title">​移动文档到项目</​p>​ +
-                            <p> +
-                                <select data-project="​65ce6bde07514f2989eebd66cde3fbf0"​ class="​choose-projects loading"></​select>​ +
-                                <input type="​hidden"​ name="​tpuid">​ +
-                            </​p>​ +
-                            <p> +
-                                <button type="​submit"​ class="​btn btn-mini"​ disabled data-disable-with="​正在移动...">​移动</​button>​ +
-                                <button type="​button"​ class="​btn btn-x cancel">​取消</​button>​ +
-                            </​p>​ +
-                        </​form>​ +
-                    </​div>​ +
-                </​div>​ +
- +
-                <div class="​item"​ data-visible-to="​admin,​creator">​ +
-                    <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef"​ class="​detail-action detail-action-del"​ data-confirm="​确定要删除这篇文档吗?"​ data-method="​delete"​ data-remote="​true"​ data-stack-replace="​true">​删除</​a>​ +
-                </​div>​ +
-            </​div>​ +
- +
- +
-        <script type="​text/​html"​ id="​tpl-dir-popover">​ +
-            <div class="​change-dir-popover">​ +
-    <​h3>​选择文件夹</​h3>​ +
-    <div class="​dirs"​ data-url="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​folders">​ +
-        <div class="​node create-folder"​ data-url="">​ +
-            <i class="​icon-folder twr twr-folder"></​i>​ +
-            <form class="​form"​ action="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​dirs"​ method="​post"​ data-remote="​true">​ +
-                <div class="​form-item">​ +
-                    <div class="​form-field">​ +
-                        <input type="​text"​ name="​name"​ class="​label no-border"​ data-validate="​required;​length:​0,​255"​ data-validate-msg="​文件夹名称不能为空;​文件夹名称最长255个字符"​ id="​txt-dir-name"​ placeholder="​创建文件夹">​ +
-                        <a href="​javascript:;"​ class="​link-submit-dir disabled">​ +
-                            <i class="​twr twr-check-circle"></​i>​ +
-                        </​a>​ +
-                    </​div>​ +
-                </​div>​ +
-            </​form>​ +
-        </​div>​ +
-    </​div>​ +
-    <div class="​remove-dir">​ +
-        <a href="​javascript:;"​ class="​link-remove-dir">​移出文件夹</​a>​ +
-    </​div>​ +
-</​div>​ +
- +
- +
-        </​script>​ +
- +
-        <script type="​text/​html"​ id="​tpl-doc-diff-popover">​ +
-            <div class="​popover-diff">​ +
-                <ul class="​doc-versions">​ +
-                        <​li>​ +
-                            <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​diff?​v1=6&​amp;​v2=5"​ class="​link-diff version"​ data-method="​get"​ data-remote="​true"​ data-version-editor="​alex jiang" data-version-time="​2016-02-20 20:​21:​00">​ +
-                                <span class="​info">​ +
-                                    <span class="​version-time">​2016-02-20 20:​21:​00</​span>​ +
-                                    <span class="​version-editor">​ +
-                                        alex jiang +
-                                    </​span>​ +
-                                </​span>​ +
-</​a> ​                       </​li>​ +
-                        <​li>​ +
-                            <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​diff?​v1=6&​amp;​v2=4"​ class="​link-diff version"​ data-method="​get"​ data-remote="​true"​ data-version-editor="​于玲"​ data-version-time="​2016-02-16 16:​35:​26">​ +
-                                <span class="​info">​ +
-                                    <span class="​version-time">​2016-02-16 16:​35:​26</​span>​ +
-                                    <span class="​version-editor">​ +
-                                        于玲 +
-                                    </​span>​ +
-                                </​span>​ +
-</​a> ​                       </​li>​ +
-                        <​li>​ +
-                            <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​diff?​v1=6&​amp;​v2=3"​ class="​link-diff version"​ data-method="​get"​ data-remote="​true"​ data-version-editor="​于玲"​ data-version-time="​2016-02-16 16:​18:​42">​ +
-                                <span class="​info">​ +
-                                    <span class="​version-time">​2016-02-16 16:​18:​42</​span>​ +
-                                    <span class="​version-editor">​ +
-                                        于玲 +
-                                    </​span>​ +
-                                </​span>​ +
-</​a> ​                       </​li>​ +
-                        <​li>​ +
-                            <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​diff?​v1=6&​amp;​v2=2"​ class="​link-diff version"​ data-method="​get"​ data-remote="​true"​ data-version-editor="​于玲"​ data-version-time="​2016-02-16 16:​16:​12">​ +
-                                <span class="​info">​ +
-                                    <span class="​version-time">​2016-02-16 16:​16:​12</​span>​ +
-                                    <span class="​version-editor">​ +
-                                        于玲 +
-                                    </​span>​ +
-                                </​span>​ +
-</​a> ​                       </​li>​ +
-                        <​li>​ +
-                            <a href="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​diff?​v1=6&​amp;​v2=1"​ class="​link-diff version"​ data-method="​get"​ data-remote="​true"​ data-version-editor="​于玲"​ data-version-time="​2016-02-16 16:​15:​29">​ +
-                                <span class="​info">​ +
-                                    <span class="​version-time">​2016-02-16 16:​15:​29</​span>​ +
-                                    <span class="​version-editor">​ +
-                                        于玲 +
-                                    </​span>​ +
-                                </​span>​ +
-</​a> ​                       </​li>​ +
-                </​ul>​ +
-            </​div>​ +
-        </​script>​ +
- +
-      +
- +
-     +
-<div class="​comment comment-form new">​ +
-    <form class="​form form-editor form-new-comment"​ method="​post"​ data-remote="​true"​ +
-        action="/​projects/​65ce6bde07514f2989eebd66cde3fbf0/​docs/​c50753e8bb7f4898908521e7315737ef/​comment"​ +
-+
- +
-        <a class="​avatar-wrap"​ target="​_blank">​ +
-            <img class="​avatar"​ width="​50"​ height="​50"​ /> +
-        </​a>​ +
- +
-        <div class="​comment-main">​ +
-            <div class="​form-item">​ +
-                <div class="​form-field">​ +
-                    <div class="​fake-textarea"​ data-droppable>​点击发表评论</​div>​ +
-                    <​textarea id="​txt-new-comment"​ tabindex="​1"​ autofocus +
-                        data-validate="​custom"​ data-autosave="​new-comment-content"​ +
-                            data-mention-group="​65ce6bde07514f2989eebd66cde3fbf0"​ +
-                            data-mention-type="​project"​ +
-                        class="​comment-content hide" name="​comment_content"></​textarea>​ +
-                </​div>​ +
-            </​div>​ +
- +
-            <div class="​form-item notify hide">​ +
-                <div class="​notify-title">​ +
-                    <div class="​notify-title-title">​发送通知给:</​div>​ +
-                    <div class="​notify-title-summary hide">​ +
-                        <span class="​receiver"></​span>​ +
-                        <span class="​change-notify">​ +
-                            [ <a href="​javascript:;"​ class="​link-change-notify">​更改</​a>​ ] +
-                        </​span>​ +
-                    </​div>​ +
-                    <div class="​notify-title-select">​ +
-                        <span unselectable="​on"​ data-subgroup="​-1"​ class="​group-select">​所有人</​span>​ +
-                            <span data-subgroup="​67718"​ unselectable="​on"​ class="​group-select">​ +
-                                采购师 +
-                            </​span>​ +
-                    </​div>​ +
-                </​div>​ +
- +
-                <div class="​form-field">​ +
-                    <ul class="​member-list">​ +
-                        <​li>​ +
-                            <​label>​ +
-                                <input type="​checkbox"​ tabIndex="​-1"​ value="​a1b1d834655c4a458c23c898ee6f2d6c"​ +
-                                     ​checked +
-                                    data-subgroup="​0"​ /> +
-                                <span title="​alex jiang">​alex jiang</​span>​ +
-                            </​label>​ +
-                        </​li>​ +
-                        <​li>​ +
-                            <​label>​ +
-                                <input type="​checkbox"​ tabIndex="​-1"​ value="​046270fa399d4045b22f1218121474ff"​ class=visitor +
-                                     +
-                                    data-subgroup="​67718"​ /> +
-                                <span title="​欧丽君">​欧丽君</​span>​ +
-                            </​label>​ +
-                        </​li>​ +
-                        <​li>​ +
-                            <​label>​ +
-                                <input type="​checkbox"​ tabIndex="​-1"​ value="​f8dd8929e97d4c02a0538965b4a8efbf"​ +
-                                     +
-                                    data-subgroup="​67718"​ /> +
-                                <span title="​王龙翔">​王龙翔</​span>​ +
-                            </​label>​ +
-                        </​li>​ +
-                        <​li>​ +
-                            <​label>​ +
-                                <input type="​checkbox"​ tabIndex="​-1"​ value="​2b37b8e81bf746a1a5914a980bd5cab4"​ +
-                                     +
-                                    data-subgroup="​67718"​ /> +
-                                <span title="​于玲">​于玲</​span>​ +
-                            </​label>​ +
-                        </​li>​ +
-                        <​li>​ +
-                            <​label>​ +
-                                <input type="​checkbox"​ tabIndex="​-1"​ value="​f79e4945fccc4c83a87683ebcce47d31"​ +
-                                     +
-                                    data-subgroup="​67718"​ /> +
-                                <span title="​赵相庆">​赵相庆</​span>​ +
-                            </​label>​ +
-                        </​li>​ +
-                    </​ul>​ +
-                </​div>​ +
-             +
-            </​div>​ +
- +
-            <div class="​hide form-buttons">​ +
-                <button tabindex="​1"​ type="​submit"​ class="​btn btn-primary btn-create-comment"​ +
-                    data-disable-with="​正在发送...">​发表评论</​button>​ +
-                <button tabindex="​2"​ type="​button"​ class="​btn btn-x btn-cancel-create-comment">​取消</​button>​ +
-            </​div>​ +
-        </​div>​ +
-    </​form>​ +
-</​div>​ +
- +
- +
- +
- +
-    <script type="​text/​html"​ id="​comments-liked-list">​ +
-         +
-    </​script>​ +
- +
-</​div>​ +
-    </​div>​ +
-</​div>​ +
- +
-<div class="​footer">​ +
- &copy; <a href="​http://​mycolorway.com"​ target="​_blank">​彩程设计</​a>​ +
-</​div>​ +
  
-    </​div>​+Some template developers experience problems with DokuWiki cacheing CSS and JS files due to this option being on, although this has been hard to pinpoint. To be safe, turn this off temporarily.
  
-    <input type="​hidden"​ id="​d18n-enabled"​ value="false" ​/> +===Use "forced refreshing" ​after you make changes to CSS files=== 
-    <input type="​hidden"​ id="​server-time"​ value="​2016-02-27 00:​37:​30"​ /> +You can accomplish this by pressing Ctrl+F5 or by holding down shift-control-alt and hitting the refresh button in your browser.
-        <​input type="​hidden"​ id="​team-guid" value="​10a7a6f8a0044c50a2f15fd37763dcce"​ /> +
-        <input type="​hidden"​ id="​team-name" value="​上海西拉子软件有限公司"​ /> +
-        <input type="​hidden"​ id="​team-enable-pusher"​ value="​true"​ /> +
-        <input type="​hidden"​ id="​user-visit-welcome-project-before"​ value="​true"​ /> +
-        <input type="​hidden"​ id="​user-email"​ value="​alex_jiang@okmelon.com" /> +
-        <input type="​hidden"​ id="​unused-bubbles"​ value="​12,​13,​14"​ /> +
-        <input type="​hidden"​ id="​member-id"​ value="​2883763"​ /> +
-        <input type="​hidden"​ id="​member-guid"​ value="​a1b1d834655c4a458c23c898ee6f2d6c"​ /> +
-        <input type="​hidden"​ id="​member-nickname"​ value="​alex jiang" /> +
-        <input type="​hidden"​ id="​member-avatar"​ value="/​assets/​default_avatars/​nightfall.jpg"​ /> +
-        <input type="​hidden"​ id="​member-timezone"​ value="​Asia/​Shanghai"​ /> +
-        <input type="​hidden"​ id="​conn-guid"​ value="​ec2e32d7b22f65f2d412be8d9247fd4a"​ /> +
-        <input type="​hidden"​ id="​beta"​ value="​false"​ />+
  
-        <input type="​hidden"​ id="​member-admin"​ /> +This is not due to how DokuWiki works, but how current browsers cache files. Browsers cache stylesheets even when new versions are available, so you will need to do this.
-        <input type="​hidden"​ id="​member-owner"​ />+
  
 +===== Publishing a Template on dokuwiki.org =====
  
-        <href="/​help"​ target="​_blank"​ id="​link-feedback">​ +If you created ​template, please share it with the community. Just create a page named after your template in the [[:​template]] namespace. E.g. if your template folder is named ''​sample''​ create ​page ''​template:​sample''​ here in the wiki.
-    <i class="​twr twr-weixin"></​i>​帮助 +
-</a+
-<script type="​text/​html"​ id="​tpl-wechat-qrcode-popover">​ +
-    <​h5>​微信在线客服</​h5>​ +
-    <​p><​img alt="​Wechat_qrcode"​ src="/​assets/​wechat_qrcode-7aa30ad1d4a2a15336d32bf4f36d3295.jpg" /></​p>​ +
-    <p class="​desc">​扫码获取帮助</​p>​ +
-</​script>​+
  
 +The page should contain all needed documentation on how to install and use the template. Adding screenshots might be a good idea as well.
  
-            <script type="​text/​javascript"​ charset="​utf-8"​ src="​https://​pusher.tower.im/​2.2.3/​pusher.min.js"></​script>​ +At the top of the template page a few metadata fields have to be filled in. A description of each field can be found on the [[plugin:repository#​template_entry|Repository Plugin]] page.
-            <script src="/​assets/​pusher-4ed024c55579731d7d5163c4297836e0.js" type="​text/​javascript"></​script>​+
  
-     +From version Ponder Stibbons on an automated update signalling is possible. For the update process to work properly it is necessary that the date “Last updated on” on the template'​s wiki page equals the date in the file [[devel:​template_info|template.info.txt]] in the source tarball/zip file. If this is not the case the update will not take place or the “Update” signal persists.
-</body> +
-</​html>​+
  
 +Uploads are not allowed on dokuwiki.org,​ so you need to host your template files somewhere else. We recommend to manage your source with a Revision Control System like [[git]]. If you do, it's easiest to use a public repository host like [[https://​github.com|GitHub]] which also offers a bug tracker for your repository.
devel/templates.txt · Last modified: 2016-02-26 22:44 by Aleksandr