6分钟阅读时间 (1260字)

分类项目计数:可能的新功能?

Category Item Count: A Possible New Feature?

一个新功能是如何进入Joomla的?这是一个关于新功能是如何开发以及它如何可能被添加到下一个版本Joomla中的故事。从构思,到开发,再到社区反馈与帮助,到测试,以及(希望)添加到核心代码中。你即将听到的故事是真实的;只是名字没有被更改,以感谢那些帮助过我的人。

“很遗憾,Joomla分类管理器不再有文章计数器了” Marc Dechèvre在一天下午我们见面时告诉我。那是2015年Joomladay法国的第一天,那是一个很棒的一天:我遇到了很多可爱的法国Joomla人,我的演示中并没有发生重大灾难,我们还有另一天的Joomladay要过。我明白了Marc的意思,我自己也说,“这应该不难实现……”。

category-item-count-j15Marc在这里提出了一个非常好的观点。我也一直在想同样的事情。Joomla 1.5在分类管理器中有一个很好的功能,可以列出你网站的所有分类,包括每个分类中的文章数量。这将是对内容数量的一个很好的概述,以及内容是如何分布在不同的分类和不同状态下的。

Joomla改进后的分类管理器

自从Joomla 1.5以来,分类管理器已经有一些重大的改进:Joomla 1.6去除了部分,引入了嵌套分类并添加了语言标签。Joomla 3.x使整个后端响应式,并改变了用户体验。去除文章计数对我来说并不是一个改进,但考虑到所有的其他改进,我最终还是不介意。

当天晚上我到达酒店时,还未到午夜。Joomladay France的第一天既有趣又累人。脑海中的回声是“这不应该那么难建立...”。我决定深入研究Joomla,尝试为Joomla 3.4.2dev添加一个新计数器功能。

menu-item-countJoomla的菜单管理器(菜单 > 菜单管理器)有一个菜单项计数器,这与我在类别管理器中想要的功能类似。我查看了com_menus的HTML输出代码,并在com_categories的HTML输出中构建了类似的功能。当然,它没有显示任何数字,因为我还没有在com_categories的“categories”模型中实现计数功能。当我打开模型时,一些比“呸”更不礼貌的话浮现在我的脑海中。添加计数器比预期的要困难...

com_categories的隐藏功能

许多核心组件使用类别对它们的条目进行分类:横幅、联系人、新闻源、网页链接。过去它们都有自己的代码来完成它们的分类实现。当Joomla 1.6开发时,com_categories被通用化,以便所有组件的类别管理器都使用相同的代码。这是以一种优雅的方式完成的:如果你在后台使用精心制作的URL触发com_categories组件,你可以用它为每个组件创建类别。让我们比较以下URL

文章管理器:文章(通过内容 > 文章管理器)的URL是:
/administrator/index.php?option=com_content&view=articles
类别管理器:文章(内容 > 类别管理器)的URL是:
/administrator/index.php?option=com_categories&extension=com_content

现在比较另一个核心组件。
横幅管理器:横幅(通过组件 > 横幅 > 横幅)的URL是:
/administrator/index.php?option=com_banners
类别管理器:横幅(通过组件 > 横幅 > 类别)的URL是:
/administrator/index.php?option=com_categories&extension=com_banners

现在让我们检查一个不使用类别的核心组件
重定向管理器:链接(通过组件 > 重定向)的URL是:
/administrator/index.php?option=com_redirect
让我们构建一个URL来打开带有扩展名com_redirect的com_categories:
/administrator/index.php?option=com_categories&extension=com_redirect

它触发了类别管理器,将显示“类别管理器:重定向”。选择“新建”来创建一个新的类别,查看“类别管理器:添加新的重定向类别”。在“保存并关闭”后,你将拥有自己的新类别用于重定向条目!请注意,你将无法使用这些类别与你的重定向条目一起使用,因为重定向组件不与它们一起使用并且不存储与条目关联的类别ID。

我说过优雅吗?实际上,我指的是非常优雅,因为代码是以一种很好的方式构建的,你甚至可以用它来为第三方组件。你组件中所需的所有东西是:一个数据库字段来存储类别(例如catid),一个catid字段在你的组件模型的.xml中,以及一个在你的助手文件中的addSubmenu方法来创建左侧菜单(例如,使用条目和类别)。然而,由于它非常通用,我无法仅通过更改类别模型来添加我的文章计数器...

回到类别条目计数器

第二天,我还在回味刚才吃的那个小小的法国羊角面包早餐。实际上,这让我开始思考各国之间的饮食差异。美国人早餐吃煮鸡蛋和煎饼。谁不知道英国的早餐是培根、鸡蛋和豆子?我习惯了荷兰的早餐(没有什么特别的,只是粥、谷物或者薄薄的面包片)。德国人也有面包片,但你不可能用荷兰式的纸薄片肉或奶酪让他们高兴(实际上,没有人会高兴,连荷兰人也不例外,但我们还不知道这一点)。

回到活动中,我去了“披萨虫与乐趣”房间,向罗兰·达姆勒和维克托·福格尔解释说,问题比预期的要复杂/我遇到的问题。罗兰建议使用一种变通方法:在类别管理器中的“com_content”使用“if”语句。这样,我就可以只为“com_content”开发功能。我们同意这不是最佳方案,但至少这会让我更接近解决方案。

我在本地机器上创建了一个新的git分支,编写了我的代码,并在github上创建了一个拉取请求(PR),以便其他人可以测试并提供反馈:https://github.com/joomla/joomla-cms/pull/6916

我得到的反馈……(感谢大家!)布赖恩·提曼指出,“Hathor”模板使用了模板覆盖。Hathor?是的,你知道的,另一个非响应式管理员模板,据我所知,很少有人使用。我决定不做双重工作,先创建一个无错误的版本,然后将其添加到Hathor的模板覆盖中。

托比亚斯·祖劳夫提到了特拉斯,他对我的代码不满意。Travis CI是一个开源的持续集成服务,用于测试你的代码与不同的PHP版本以及代码样式的一致性。特拉斯不满意我使用空格而不是制表符。我不得不在我的编辑器PHPStorm中进行配置更改,以便制表符成为真正的制表符,而不是空格。

category-item-count-j3我得到的进一步反馈是关于对齐、其与移动设备的响应行为,以及缺少“存档”列。我利用这些反馈来改进我的功能。我甚至包括了一些其他选项:我将计数器超链接,这样你可以轻松导航到文章,过滤那些你刚刚点击的分类+状态的文章。

marc-and-peter马克·德谢夫(左)& 彼得·马丁(右)在2015年Joomladay法国的第二天结束时,新功能开始工作。虽然它只适用于文章,但我对结果感到满意。马克也是…… 

下期将继续:通向一个通用解决方案。

在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能不代表Joomla项目的官方立场

0
从Joomla 2.5升级的最后机会
 

评论

已经注册? 在此登录
尚未发表评论。成为第一个发表评论的人

通过接受,您将访问https://magazine.joomla.net.cn/外部第三方提供的服务