codeigniter 类别 -> 子类别 -> 子子类别系统

2023-12-25

好的,所以我很新codeigniter从我现在所学到的来看,我不知道如何创建一个动态category -> subcategory -> subsubcategory system。您能给我一些指导吗...一些参考资料,任何可以指导我应该学习什么来实现这一目标的东西?谢谢

我应该得到我的URL像这样www.site.com/category/subcategory/subsubcategory/etc..., 你知道我的意思。


我已经为 PyroCMS 中的页面管理器完成了此操作,但这并不是一件容易的事。

每个页面都有自己的 slug 和 Parent_id,然后为了读取正确的页面,它会循环遍历每个页面 slug 并加入子页面。它知道有多少个孩子,因此如果有 5 个孩子,它会选择第 5 个自连接表。

这是代码示例:

public function get_by_path($segments = array())
{
 // If the URI has been passed as a string, explode to create an array of segments
 if(is_string($segments))
    {
     $segments = explode('/', $segments);
    }

 // Work out how many segments there are
    $total_segments = count($segments);

// Which is the target alias (the final page in the tree)
    $target_alias = 'p'.$total_segments;

    // Start Query, Select (*) from Target Alias, from Pages
    $this->db->select($target_alias.'.*');
    $this->db->from('pages p1');

    // Loop thorugh each Slug
    $level = 1;
    foreach( $segments as $segment )
    {
        // Current is the current page, child is the next page to join on.
        $current_alias = 'p'.$level;
        $child_alias = 'p'.($level - 1);

        // We dont want to join the first page again
        if($level != 1)
        {
            $this->db->join('pages '.$current_alias, $current_alias.'.parent_id = '.$child_alias.'.id');
        }

        // Add slug to where clause to keep us on the right tree
        $this->db->where($current_alias . '.slug', $segment);

        // Increment
        ++$level;
    }

    // Can only be one result
    $this->db->limit(1);

    return $this->db->get()->row();
}

这有点疯狂,但效果很好。这可能会非常慢,因此 PyroCMS 还维护一个查找表,其中包含要快速匹配的 id 和页面 URI。

您可以在这里看到整个模型:

http://github.com/philsturgeon/pyrocms/blob/master/application/modules/core/pages/models/pages_m.php http://github.com/philsturgeon/pyrocms/blob/master/application/modules/core/pages/models/pages_m.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

codeigniter 类别 -> 子类别 -> 子子类别系统 的相关文章

  • Codeigniter:将 sess_match_ip 设置为 FALSE 是否仍然安全

    我正在开发一个网站 来自某些国家 地区的访问者面临 codeigniter 缓存系统的问题 缓存在一两个请求后被删除 经过深入调查后 我将 sess match ip 和 sess match useragent 设置为 FALSE 现在一
  • 定义根路径

    我正在寻找一种将配置变量定义为我的网站的根路径的方法 定义这个的最好方法是什么 我正在使用 Codeigniter config root path 这是我的 config 文件夹中的 site config 文件 dev dev appl
  • 代码点火器 JSON

    你好 我使用 codeigniter 然后我从控制器中的数据库中回显输出 然后在我的视图文件中执行以下操作 但它没有显示任何内容 S 我的模型文件 function forumList this gt db gt select oversk
  • 从 CodeIgniter 中的 URL 捕获哈希值 (#)

    我有一个看起来像的网址 mysite com transactions view 123456 效果很好 但是我的客户现在希望在 url 中包含 hashbang mysite com transactions view 123456 现在
  • omn​​ipay paypal Express 不返回地址

    我在这里使用omnipay 设置 https github com adrianmacneil omnipay https github com adrianmacneil omnipay处理贝宝快速结帐 该过程工作正常 因为用户被重定向到
  • 来自发布数据的 CodeIgniter 未通过

    我试图在 CodeIgniter 中上传文件 但是当我添加 enctype multipart form data 时 不会有任何发布数据通过 甚至其他领域也根本没有 但是 当我不添加它时 我可以获得其他帖子数据 但当然没有文件上传 这里出
  • 将视图加载到变量中

    有什么方法可以将 PHP 文件的内容放入变量中吗 我想做这个 msg this gt load gt view some view 但当我这样做时 msg is NULL 是否可以 有可能的 msg this gt load gt view
  • 从 MySQL 返回结果时的数字顺序

    我的数据库表中有以下类型的标题 Topic 1 blah blah Topic 2 blah blah Topic 3 blah blah Topic 10 blah blah Topic 11 blah blah etc 选择查询将始终返
  • 按带宽限制成员资格

    我刚刚将 Codeigniter 应用程序部署到 Amazon EC2 使用 S3 作为媒体 使用 RDS 作为 MySQL 我需要根据使用的带宽量限制用户帐户访问 帐户将基于带宽 例如基本帐户 x 每月最多 20GB 等 但是我不知道最好
  • 如何完全刷新 CodeIgniter 中的页面?

    我正在叠加层中加载表单 覆盖层对于调用覆盖层的页面有一个单独的控制器和操作 在表单提交时 如果成功 我只想重新加载加载叠加层的引用页面 我可以加载引用页面 但它将内容放置在覆盖层内 header Location www example c
  • Codeigniter:用户会话不断过期

    我正在使用 CodeIgniter 但在会话方面遇到了一个小问题 我已将 config php 中的 sess expiration 设置为 0 以便用户会话永远不会过期 但用户 甚至我自己 仍然偶尔会被踢出并要求再次登录 顺便说一句 我将
  • 我无法使用 Codeigniter 发送任何电子邮件

    我创建了一个控制器 并在控制器中做了一个测试函数来测试电子邮件是否发送 我检查了不同的电子邮件地址 但没有成功 这是我的代码示例 public function sendmail config protocol sendmail confi
  • 在codeigniter中处理存储过程输出参数

    我在 mysql 中有一个带有输出参数的存储过程 我需要将结果发送到使用 codeigniter 的 php 寄存器模式 public function registerUser data sql call register new use
  • 如何将 2 个参数路由到控制器?

    这看起来很基本 但我无法掌握它 我试图向控制器中的方法发送多个参数 如下所示 http localhost ci index php subjects 3 state 这是我尝试过的路由 route subjects num subject
  • Codeigniter 加入多个条件

    我正在使用 Codeigniter Active Records 课程 我想加入我的users与我的桌子clients表 这样我就可以显示用户的 真实 姓名 而不仅仅是他们的 ID 这是什么clients表看起来像 示例 列 a 1 a 2
  • 如何在 Codeigniter 中我自己的控制器中生成 API 密钥

    只是想提一下 我确实是 API 开发 概念 结构 最佳实践 方面的新手 我对它一点也不熟悉 所以如果您发现我正在使用 Phil 请原谅我可悲的愚蠢问题Sturgeon 的 REST API 服务器 Curl 库和 REST API 客户端这
  • 使用ip地址访问时删除index.php

    我在服务器上上传了 codeigniter 项目 从 URL 中删除 index php 不起作用 我使用IP地址访问它 喜欢http ip http ip地址 下面是我的htaccess
  • 在 Codeigniter 中编写模型代码的最佳方法是什么

    我对于在 codeigniter 中使用哪种技术来编码模型感到非常困惑 我进行了很多搜索 发现了各种编码人员使用的各种方法 请指导我使用 codeigniter 编写模型类的最佳方法 例子很少 有些方法签名中需要很长的参数 function
  • 如何在 CodeIgniter 中取消链接(删除)图像

    我试着unlinkCodeIgniter 中的图像 但是unlink函数显示 注意未定义索引 userfile 这是我的代码
  • 简单搜索:使用 CodeIgniter 将表单变量传递到 URI

    我的每个页面上都有一个搜索表单 如果我使用表单助手 它默认为 POST 我希望搜索词显示在 URI 中 http example com search KEYWORD 我已经在谷歌上搜索了大约一个小时 但没有结果 我只找到了有关如何进行的文

随机推荐

  • Spark 1.6 在 EMR 上写入 S3,因为 Parquet 挂起并失败

    我正在创建一个 uber jar Spark 应用程序 将其提交到 EMR 4 3 集群 我正在配置 4 个 r3 xlarge 实例 其中一个作为主实例 另外三个作为核心 我从控制台预安装了 hadoop 2 7 1 ganglia 3
  • 递归构造函数调用错误找不到解决方案

    我在四个公共金枪鱼部分 部分 可能是一个类或其他东西 处收到递归构造溢出调用错误 它适用于教程 但不适合我 似乎看不到在哪里 public class tuna private int hour private int minute pri
  • 如何检查变量是否是数组?

    我对变量名有一个循环 我需要检查变量的内容是否是数组 for varname in AA BB CC do local val if varname is array then how can I perform this test ech
  • 如何在 Chrome DevTools 网络面板中按文本和属性进行过滤?

    我想通过 URL 中的方法属性和文本过滤 Chrome DevTool 的网络面板 例如 如果我在 URL 中搜索文本 chromequestion 并且仅搜索 HTTP GET 请求 忽略 PUT POST DELETE 等 I am a
  • JOOQ 查询的时间戳精度

    我有一个 PSQL 原始查询 我想将其转换为 JOOQ 查询 SELECT DISTINCT date trunc day ref date AS refdate FROM income WHERE probos id probosId 我
  • 在 python lxml 库中使用西里尔字母的正确方法是什么

    我尝试生成其中包含西里尔字母符号的 xml 文件 但结果却出人意料 避免这种结果的最简单方法是什么 例子 from lxml import etree root etree Element print etree tostring root
  • 监听元素的创建,并在元素出现在 Chrome 扩展程序的页面上时触发事件

    是否可以让 Chrome 扩展监听尚未创建的元素的出现 假设用户单击按钮并且单击事件创建一个元素 div My Div div 并将其添加到页面 DOM 是否可以设置一个侦听器 在该元素出现时自动触发事件 或者我是否必须每隔 X 毫秒轮询页
  • 智能字段注释 - valuehelp 下拉菜单

    我有一个值帮助字段 并且只想在下拉列表中查看说明 而不是代码 选择后 想要将代码存储在另一个处于隐藏模式的字段中 为此 我定义了以下注释
  • 还有比 PHPDoc 更好的吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有人使用其他任何东西来记录他们的PHP代码比PHPDoc 是否有任何工具可以读取相同的文档语法但提
  • 在 PowerShell 中启用本地用户权限分配

    我之前问过类似的问题 以便在某个域用户的 PowerShell 中获得本地用户权限 现在我想启用该权限 我希望启用一些权限 但在本示例中 我将使用登录作为批处理作业 默认情况下 Windows Server 2008 中没有 Ntright
  • Knockout 中 Observable 的设置值未更新

    每天都有大量的问题链接回为什么我不能设置可观察值的值 而不是有这么多不同的答案说同样的事情 我想创建一个问题供每个人参考 Knockout Observable Observable Array 的设置值不会更新 设置我的可观察 obser
  • 使用 OpenXML 将背景图像添加到 Excel

    我正在使用 Open XML 创建 Excel 我想向 Excel 添加背景图像 不要告诉我将图像添加到 Excel 并与 OpenXML Productivity Tool 进行比较 请让我知道执行此操作的提取方法 我已经深入研究使用 O
  • 如何在Flask Sqlalchemy中分离Master Slave(DB读/写)

    我正在尝试通过 Flask Sqlalchemy 分离读取和写入数据库操作 我正在使用绑定来连接到 mysql 数据库 我想在主机中执行写入操作并从从机中读取操作 似乎没有内置的方法来处理这个问题 我是Python新手 很惊讶像这样急需的功
  • 以低优先级启动进程(使用 Runtime.exec / ProcessBuilder.start)

    我需要在低优先级下启动一个 CPU 密集型系统进程 这样它就不会减慢我的服务器速度 我怎样才能在 Linux 上做到这一点 这与这个问题类似 使用 Runtime exec ProcessBuilder start 以低优先级启动 Java
  • Java随机类不是真正随机的?

    我正在尝试模拟我发现的数学难题http blog xkcd com 2010 02 09 math puzzle http blog xkcd com 2010 02 09 math puzzle 然而 java random 类返回奇怪的
  • 退出系统调用的正确常量是什么?

    我正在尝试学习 x86 64 汇编 并使用 GCC 作为我的汇编器 我使用的确切命令是 gcc nostdlib tapydn S D ASSEMBLY 我主要使用 gcc 作为其预处理器 这是tapydn S global start i
  • 在:数字之前右对齐 CSS?

    我想要对段落进行编号 而不需要使用有序列表 我试图通过在 CSS 中使用 content counter paragraph 来实现此目的 以便我创建的每个段落块都会在其左侧生成一个数字 pass counter reset paragra
  • 按日期差异对结果排序

    我们有一个按输入日期的 1 个月的日期范围查询的 solr 结果 如果我输入 2012 12 01 我会得到从 2012 11 01 到 2013 01 01 的结果集 这工作正常 但我们希望在与输入日期的日期差异之后对结果进行排序 例如
  • HtmlUnit 下载文件后无法检索页面

    我在 Java 中的 HtmlUnit 中遇到了这个奇怪的问题 我用它从网站下载一些数据 过程是这样的 1 登录 2 对于每个元素 汽车 3 搜索汽车 4 从链接下载 zip 文件 代码 创建网络客户端 webClient new WebC
  • codeigniter 类别 -> 子类别 -> 子子类别系统

    好的 所以我很新codeigniter从我现在所学到的来看 我不知道如何创建一个动态category gt subcategory gt subsubcategory system 您能给我一些指导吗 一些参考资料 任何可以指导我应该学习什