假设我有一个Sphinx项目,其中包含以下来源:
index.rst
installation.rst
templating/
index.rst
module.rst
fieldtype.rst
Run Code Online (Sandbox Code Playgroud)
index.rst(主页)有以下TOC树:
.. toctree::
:titlesonly:
installation
templating/index
Run Code Online (Sandbox Code Playgroud)
我希望我的模板包含一个侧栏,列出所有3个顶级页面(主页,安装,模板/索引).
我已经尝试在主页中添加第二个隐藏的TOC树:
.. toctree::
:hidden:
index
.. toctree::
:titlesonly:
installation
templating/index
Run Code Online (Sandbox Code Playgroud)
这实际上给了我想要的结果,除了它使next变量设置为当前页面.所以这个代码在我的模板中:
Next up: <a href="{{ next.link }}">{{ next.title }}</a>
Run Code Online (Sandbox Code Playgroud)
...始终从主页输出主页链接.不好.
我一直试图将实际的主页链接硬编码到模板的侧边栏中:
{% set homeClass = 'current' if pagename == 'index' else '' %}
<ul class="{{ homeClass }}">
<li class="toctree-l1 {{ homeClass }}"><a class="{{ homeClass }} reference internal" href="/index.html">Home</a></li>
</ul>
{{ toctree() }}
Run Code Online (Sandbox Code Playgroud)
这也有效,除了我不想强迫在Web服务器的webroot上访问文档 - 我希望它们也可以在文件系统中工作.
我不能简单地将URL设置为"index.html",因为当你在templating /中的文件中时,这将不起作用.
我错过了一些明显的东西吗 必须有一种方法可以将主页放入TOC,而不会破坏next链接和在本地文件系统上工作的动态路径,即使是在子文件夹中也是如此.
我正在编写一个JS脚本,该脚本位于一个系统中,该系统现在通过jQuery.ajaxPrefilter()注册的函数中的jqXHR.setRequestHeader()向所有Ajax请求添加自定义XID头.
在我的脚本中,我需要向第三方站点发出Ajax请求,其Access-Control-Allow-Headers未设置为允许此自定义XID标头.
看来我有3个选择:
选项#1是首选,如果有一个简单的方法,因为它将是最干净和最快的路线.只是无法弄清楚如何.
我试过像这样覆盖它,但它不起作用:
beforeSend: function(jqXHR, settings) {
jqXHR.setRequestHeader('custom-xid-header', null);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在plugins/index.html上有以下页面:
Plugin Development
==================
.. toctree::
:hidden:
basics/index
advanced/index
The Basics
----------
- :doc:`basics/gettingstarted`
- :doc:`basics/resources`
- :doc:`basics/i18n`
Advanced Topics
---------------
- :doc:`advanced/models`
- :doc:`advanced/controllers`
- :doc:`advanced/services`
Run Code Online (Sandbox Code Playgroud)
plugin/basics/index.html和plugins/advanced/index.html包含自己的toctree,它们链接到plugins/index.html中列出的相同子页面.所以我想知道的是,有没有办法只包括那些子toctree,而不是像我一样手动列出子页面?
我意识到我可以从toctree中删除:hidden:标志,但重点是我想将Basic/Advanced主题保存在单独的列表中,并带有自己的标题,介绍段落等.
考虑到以下场景,您将静态属性Foo记录为 的实例FooApp,扩展类Bar,并且在运行时发现该静态属性实际上设置为的实例BarApp而不是FooApp:
class Foo
{
/**
* @var FooApp
*/
public static $app;
}
class Bar extends Foo
{
}
Bar::$app = BarApp();
Run Code Online (Sandbox Code Playgroud)
...什么是记录的正确方法,Bar以便清楚地将其静态$app设置为BarApp实例而不是FooApp?
我已经尝试了以下但 PhpStorm 不尊重它,可能是因为@property它不适用于静态属性:
/**
* @property BarApp $app
*/
class Bar extends Foo
{
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我唯一想到的实际上是$bar在代码中覆盖:
class Bar
{
/**
* @var BarApp
*/
public static $app;
}
Run Code Online (Sandbox Code Playgroud)
这有点烦人,因为当理论上额外的文档已经足够时,它会导致额外的代码(例如在使用@propertyand覆盖实例级属性和方法的文档的情况下@method)。
(这里的用例是一个 …