小编Bra*_*lly的帖子

如何在Sphinx TOC中添加主页?

假设我有一个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链接和在本地文件系统上工作的动态路径,即使是在子文件夹中也是如此.

python-sphinx

23
推荐指数
1
解决办法
5405
查看次数

有没有办法删除setRequestHeader()设置的Ajax头?

我正在编写一个JS脚本,该脚本位于一个系统中,该系统现在通过jQuery.ajaxPrefilter()注册的函数中的jqXHR.setRequestHeader()向所有Ajax请求添加自定义XID头.

在我的脚本中,我需要向第三方站点发出Ajax请求,其Access-Control-Allow-Headers未设置为允许此自定义XID标头.

看来我有3个选择:

  1. 找到一种方法来删除$ .ajax()的beforeSend函数中的XID标头,我已经确认在ajaxPrefilter()函数之后调用它.
  2. 完全放弃使用$ .ajax()并自己编写Ajax内容.
  3. 让$ .ajax()指向系统的后端,该后端接受自定义XID标头,并通过cURL向第三方站点执行请求.

选项#1是首选,如果有一个简单的方法,因为它将是最干净和最快的路线.只是无法弄清楚如何.

我试过像这样覆盖它,但它不起作用:

beforeSend: function(jqXHR, settings) {
    jqXHR.setRequestHeader('custom-xid-header', null);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript ajax jquery

18
推荐指数
2
解决办法
2万
查看次数

在Sphinx中包含另一个页面的ToC

我在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主题保存在单独的列表中,并带有自己的标题,介绍段落等.

python-sphinx

10
推荐指数
1
解决办法
3660
查看次数

如何在 PHP 中记录静态类属性

考虑到以下场景,您将静态属性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)。

(这里的用例是一个 …

php phpdoc yii phpstorm

2
推荐指数
1
解决办法
2090
查看次数

标签 统计

python-sphinx ×2

ajax ×1

javascript ×1

jquery ×1

php ×1

phpdoc ×1

phpstorm ×1

yii ×1