【问题标题】:Adding Joomla menu for new component directly in DB (Joomla 2.5)直接在 DB (Joomla 2.5) 中为新组件添加 Joomla 菜单
【发布时间】:2013-06-13 02:24:05
【问题描述】:

我想在开发阶段为新组件添加菜单。由于它还没有准备好安装,我没有创建清单(xml)文件。我只想直接从数据库中在后端的组件中添加一个菜单项。

我得到了here的信息。但它适用于 joomla 1.5 - 它提到的表在 joomla 2.5 中不存在,因此(显然)它不起作用。

有什么想法可以在 joomla 2.5 中做同样的事情吗?

【问题讨论】:

    标签: php joomla joomla2.5 joomla-extensions


    【解决方案1】:

    在尝试了 `#__menu` 表后,我发现了许多有趣的功能。

    joomla 安装数据库中有一个名为#__menu 的数据库表。每列的功能如下所述。


    id(INT) 主键。
    title(VARCHAR) 菜单的显示名称。非常重要的领域。
    菜单类型(VARCHAR) *判断菜单是否为“主菜单”、“顶部菜单”、“左侧菜单”……。 管理菜单应该具有“主要”价值。但是它们是否显示在后端由'client_id'字段(见下文)决定,而不是在这里。*
    alias(VARCHAR) “title”的别名。但无论是否填充,它都不会产生任何影响。我试图填充它并将“标题”字段留空。然后菜单变成了空白。但是,如果我将“别名”留空并填写“标题”,则菜单会显示文本。
    note(VARCHAR) 备注(或注释)。
    path(VARCHAR) 在浏览器地址栏中显示的路径名。它不必与“链接”信息相关。 (但必须填写“路径”和“链接”字段才能使菜单正常工作)。
    链接(VARCHAR) 网址。告诉单击菜单时系统将去往何处。重要。
    type (VARCHAR) 判断菜单是组件还是 url(external link) ... 。 (似乎,这只是一个“额外”信息——对菜单没有明显影响)。
    已发布 (TINYINT)
    1 – 已发布。 0 – 未发布。在前端隐藏/显示菜单。

    parent_id (INT)
    0-“主要项目根”值。它应该只存在一次。
    1- 列出第一级的菜单项。
    x- 如果此值被赋予另一个菜单的 id,那么它将自动成为子(二级)菜单并“弹出”其父菜单。

    级别 (INT) 级别应反映其在菜单层次结构中的位置。例如。如果菜单的父级为 1 级,则其级别必须为 2。如果其父级为 5 级,则必须为 6 级菜单。但 Joomla 似乎通过查看其父母来计算其实际水平并忽略此值。
    component_id (INT) 组件ID。值取自 #__extensions 表。 (但清空这个字段似乎没有任何效果)。
    排序 (INT) 排序(标准 joomla 列)。
    checked_out (INT) 签出(标准 joomla 列)。
    checked_out_time (TIMESTAMP) 退房时间(标准 joomla 列)。
    browserNav (TINYINT) ?
    访问 (INT) 非常重要的字段。
    1 – 公开
    2 – 仅限注册用户。
    3 – 特殊用户(例如经理和管理员)

    img (VARCHAR) 如果您希望菜单有背景图片,则为图片路径。
    template_style_id (INT) 在查看与此菜单关联的页面时附加的模板 ID。
    params (TEXT) 组件配置数据。
    lft (INT) ?
    rgt (INT) ?
    主页 (TINYINT) Joomla 必须有一个且只有一个默认页面。这个值决定了这一点。
    1 – 此页面为默认页面。
    0 – 不是默认值。 只有一个菜单的值必须为 1。(大部分时间是“家”)。
    语言 (CHAR) 菜单显示的语言。
    client_id (TINYINT)
    0 – 向公众开放。
    1 – 后端菜单。 即使菜单被赋予一个后端菜单项作为 parent_id,如果“client_id”的值为 0,菜单也不会显示在管理端。 但是无论你在“菜单类型”字段中给出什么值,只要“client_id”值为 1,它就会显示在后端。


    场景:
    菜单类型 => 'main' client_id =>'1', published=> 1/0: 在这种情况下菜单只显示在后端。发布的值无效。

    Menutype=> ‘mainmenu’, ‘client_id’=>1, published=>1: 菜单在后端和前端都显示。发布的价值决定了它的知名度。 'menutype' 值是否是 'main' 、'mainmenu'、'top-menu' ……对其在后端的可见性没有影响——只有“client_id”很重要。

    Menutype=> 'mainmenu', 'client_id'=>1, published=>0: 对管理端的效果与上述场景相同。但在前面,菜单是不可见的(发布状态为 0)。

    【讨论】:

    • lft 等于我猜的父 ID。因为我说它有效。
    【解决方案2】:

    试试这个,

    在 Joomla 1.6 及以后的组件详细信息存储表是#__extensions

    您也设置了详细信息#__menu 表。

    希望对你有帮助。

    【讨论】:

    • 我查看了#__menu 表。但不清楚哪个记录是管理员,哪个是站点菜单项。我看不到任何用于将菜单分类为管理站点菜单的标识标志。你能解释更多吗?
    • 有一个字段叫access,等级在那里给出。
    • 那么在后端(管理端)的扩展列表中显示的菜单级别是多少? (不仅在后端,而且在扩展列表中。)
    • 尝试使用其他菜单的值,例如:1 根据您的要求
    • 我在表格中添加了一条记录,最后我可以在后端创建一个菜单。但到目前为止,“访问”值没有任何效果。(我尝试使用两个值 0/1,但在这两种情况下都出现了)。
    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2013-04-20
    • 2012-10-12
    • 1970-01-01
    • 2013-03-15
    • 2012-11-24
    相关资源
    最近更新 更多