【问题标题】:Same blog, one theme for each category同一个博客,每个类别一个主题
【发布时间】:2012-12-18 18:28:07
【问题描述】:

我正在为 Codeigniter 中的一个附带项目编写博客。我的博客将包含三个模块。

我需要知道怎么做,例如:

  • example.org -> 显示所有带有 module3 主题的帖子
  • example.org/module1 -> 仅显示带有 module1 主题的 module1 帖子
  • example.org/module2 -> 仅显示带有 module2 主题的 module2 帖子
  • example.org/module3 -> 仅显示带有 module3 主题的 module3 帖子

任何想法如何在 URL 架构中处理这个问题? (路由)

【问题讨论】:

  • 不能根据控制器(模块1、模块2等)渲染不同的视图吗?
  • 但我想使用同一个控制器。只是后控制器。
  • 很容易。问题是,你尝试过什么?

标签: php codeigniter routing themes


【解决方案1】:

你可以做一个简单的切换:

class Post extends CI_Controller{

function index($module = null)
{
   switch($module)
   {
      case NULL:
      case 'module3':
        //load theme 3
      break;
      case 'module1':
        //load theme 1
      break;
      case 'module2':
        //load theme 2
      break;     
  }

}

在您的路线中:

$route['default_controller'] = "post";
$route['(:any)'] = "post/index/$1";

如何实现不存在的案例现在取决于您,这只是一个开始。此外,":any" 路由是一个可以获取 any url 的包罗万象的路由,因此您需要排除(通过将它们放在 您想要的任何其他路由之前重新映射。或者您可以查看在控制器中使用的_remap() 函数

【讨论】:

  • 来吧,达米安,你应该等一会儿。我想看他尝试一下。;-)
  • 我知道,我同意你的观点,但我觉得有 10 分钟的匆忙,然后再过一两个月才停止回答。忍受我...
  • 我现在正在处理路由...用我从 url 获得的模块存储会话变量! Tkz 全部
【解决方案2】:

你可以修改 CI 的核心,但我认为你最好使用 RewriteRule。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多