登录 注册

登录

问题 求助:白老大,指导一下。

更多
2009年02月03日 17:55 #1 作者: chenxi19820705
发布菜单链接时,可以选择“公开”、“注册会员”等权限,joomla自带情况是如果发布一个菜单为注册会员权限时,在没有登录的情况下是看不到该链接的,但现在有一个新的需求,就是所有人都可以看见这个链接,但是如果没有登录,先跳转到登录页面,待登录成功后,才可以看到该链接下的文章内容。如何能实现这个需求,谢谢了。

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月03日 22:50 #2 作者: Joomla之门
如果你的网站上有多个栏目(多个目标)需要这种“点击菜单后先提示登录,登录成功后自动转向内容”功能,那么只能请各自的扩展作者来开发这种功能。

如果只有一个目标,也就是说,只有一个菜单需要这个功能,我有一个变通的方法:

假设你的菜单是“精彩短信”,指向的内容是某个文章单元或类别,里面都是关于精彩短信的文章。这些文章已经设置了“只允许注册会员阅读”。

现在你还需要一个特殊模块:只给访客展示的模块。当注册之后,这个模块就自动隐藏。

这样的模块是存在的,我以前见过,忘记了发布出来。有空的话,这几天找出来汉化一下。

具体操作:

1、安装上面所说的特殊模块。在里面只设置一个菜单链接,就是“精彩短信”,而其指向的 URL 实际上是登录表单。由于该模块只对未登录访客显示,因此不必担心它会影响已登录会员的体验。

2、新建另一个“自定义模块”,里面也只有一个菜单链接,还是“精彩短信”,不过,它的 URL 必须指向正确的目标,就是那个文章单元或类别。这个模块的访问权限设置为“会员”,发布位置与上面那个模块一样。

3、在后台设定“登录表单”模块的“登录后重定向URL”,使其指向“精彩短信”真正的位置,就是上一条中菜单的目标。

工作流程如下:当某个未注册游客来到网站,看到的是第一个模块上显示的菜单,点击之后实际上到了登录表单;当他登录之后,会被登录表单的“重定向”功能自动带到那个目标;如果该会员一直选择了“记住我”功能来保持登录状态,那么他看不到第一个模块,只能看到第二个模块上显示的正常的“精彩短信”菜单链接,在任何时候点击,都会直接到达真正的目标。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月04日 09:11 #3 作者: chenxi19820705
谢谢白老大的帮助,那您说的那个特殊模块是否可以汉化并提供给我呢,我这里比较急。谢谢了。

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月04日 17:20 #4 作者: Joomla之门
时间久了,忘记了模块名称。我搜索了一下 JED 扩展库,终于找到了。而且发现至少有四个模块具有同样功能:

MetaMod - display modules according to rules

Now You See Me - JACL

Now You See Me 2.0

Ninja Access Module - Show Modules by Access Level

它们都位于 Frontend Access Control 这个类别中。除了第一个免费之外,其它三个都是收费软件。

本站将第一个 MetaMod for Joomla! 1.5 刚刚汉化完成,仓促之间,或许纰漏在所难免,不过至少可以帮助中文用户更方便理解它。

其它三个收费模块我没有测试过,因此无法得知哪一个更好用一些。对 MetaMod 试用的结果发现,要实现“仅对未注册游客显示”,还不是很容易,用户需要懂一点 PHP 知识。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月04日 17:35 - 2009年02月04日 17:39 #5 作者: Joomla之门
这个问题还有一个思路:就是在模板文件中对某个特定的模块位置进行条件设置,判断当前访客是否已经登录,如果是未登录,就显示该位置的模块;如果已登录,就隐藏。

打开网站当前模板的 index.php 文件,假设这个模块位置(用来发布只显示给游客的模块)名称是 guestsonly ,那么普通的模块位置定义代码应该是:
<?php mosLoadModules ('guestsonly' , -1); ?>

将它修改为:
<?php if (!$my->id) {mosLoadModules ('guestsonly' , -1);} ?>

就表示只显示给未注册游客(包括未登录的会员)<摘自:Joomlaworks.gr>

另外一个更灵活的语法是:
<?php mosLoadModules ( 'user3', -1); if ( !$my->id ) { mosLoadModules ('user9', -1); }?>

这个表示:如果当前访客是已登录会员,就显示 user3 模块;如果是未登录状态,则显示 user9 模块。<摘自:forum.joomla.org>

注意:以上代码格式是针对 Joomla! 1.0.x 平台的。如果是 Joomla! 1.5.x 核心的模板,请根据 J1.5 的模板语法调整相关语句。

再提供一个参考: Show Joomla modules for certain Joomla Groups only

当然了,如果你熟悉了 MetaMod 模块 的用法,应该是非常方便的。它不需要修改核心代码就能直接生效。你甚至可以给未注册游客和已登录会员分别设计一套菜单,互不影响。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!
最后修改: 2009年02月04日 17:39 由 xfw.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月04日 20:33 #6 作者: Joomla之门
MetaMod 模块功能很强大,不过偏偏对于设置用户访问权限没有方便的选项,必须通过手动填写 PHP 代码来实现。

在 MetaMod 后台参数中,作者已经给出了一些 PHP 代码,但是不够明确。我这样的“程序盲”还是不知道该怎样设置。

MetaMod 的作者在他的网站给出了一些代码示范,我照猫画虎,终于实现了“模块只向未注册游客显示,对已登录会员隐藏”以及“向未登录游客显示 A 模块,向已登录会员显示 B 模块”的功能。

引述作者的示范代码如下:
// user group things JOOMLA 1.5
  // if user is not logged in, show mod 44. If they are logged in show mod 45:
  if ($user->usertype == "" || $user->usertype == "Public Frontend") return 44; else return 45;
  
  // if user is not logged in, show mod 44. If they are logged in show nothing at all:
  if ($user->usertype == "" || $user->usertype == "Public Frontend") return 44; else return;
 
  // if user IS logged in, show module 45, else show nothing at all:
  if ($user->usertype != "" && $user->usertype != "Public Frontend") return 44; else return;
 
  if ($user->usertype == "User") return 46; // a plain registered user, no additional privileges
  if ($user->usertype == "Publisher") return 47; // show a notice for users with "Publisher" privileges

下面是针对 Joomla! 1.0.x 平台的:
// user group things JOOMLA 1.0.x
  // if user is not logged in, show mod 44. If they are logged in show mod 45:
  if ($my->usertype == "" || $my->usertype == "Public Frontend") return 44; else return 45;
  
  // if user is not logged in, show mod 44. If they are logged in show nothing at all:
  if ($my->usertype == "" || $my->usertype == "Public Frontend") return 44; else return;
 
  // if user IS logged in, show module 45, else show nothing at all:
  if ($my->usertype != "" && $my->usertype != "Public Frontend") return 44; else return;
 
  if ($my->usertype == "User") return 46; // a plain registered user, no additional privileges
  if ($my->usertype == "Publisher") return 47; // show a notice for users with "Publisher" privileges

这些代码只是控制“用户群组”条件的,如果你需要其它方面的示范代码,请看 MetaMod 官方网站的详细介绍:

www.brandonitconsulting.co.uk/mod_metamod/

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月04日 22:46 #7 作者: yooyooh
老白的职业精神令人钦佩不已,俺看后受益加感动,能遇上这样的站长真是缘分。

Every man dies, Not every man really lives.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月05日 09:48 #8 作者: chenxi19820705
好的,我试试看吧

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月11日 08:22 #9 作者: Joomla之门
上次发布 MetaMod 1.5g 版本时,我觉得设置“仅限访客可见模块内容”的方式太费劲了。于是给作者提出了改进意见。很快,作者就发布了 1.5h 新版本,增加了一个选项,允许用户在后台直接选择将 MetaMod 模块展示给什么类型的访客。这样就无需记忆复杂的 PHP 代码了。

当然了,如果你需要更精细的控制用户群组,还是要用到那些 PHP 代码;如果只是想要一个“仅限访客可见”模块,那么借助新选项,点一下鼠标就 OK 了。

请: 下载 MetaMod for Joomla! 1.5 条件模块 1.5h 中文版

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月16日 09:17 #10 作者: chenxi19820705
老大,你太有才了,十分感谢啊

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月03日 16:01 #11 作者: powebcn
后台不显示中文语言,只有英文,怎么设置?

Unix下freebsd服务器完美支持joomla/mambo/wordpress/discuz
环境:php5.2.6+mysql5.0.67+phpmyadmin3.0.1,支持apache mod_rewrite.
购买联系QQ:373540971

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月03日 16:03 #12 作者: powebcn
目录下只有这个zh-CN.mod_metamod.ini,但没有读取

Unix下freebsd服务器完美支持joomla/mambo/wordpress/discuz
环境:php5.2.6+mysql5.0.67+phpmyadmin3.0.1,支持apache mod_rewrite.
购买联系QQ:373540971

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月04日 03:14 #13 作者: Joomla之门
刚刚将下载栏目更新到了最新的 MetaMod 1.5j 中文版 。测试发现完全能显示中文界面(后台)。不知道 powebcn 为何没有看到中文界面?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月04日 15:50 #14 作者: powebcn
怪事,这个模块测试了,不能达到楼主 说的功能。正好有客户需求,用来试了试。隐藏模块的功能不错,有些创意。但要达到我的客户的需求,不行。
他的要求就是没登录只显示登录界面,否则不予进站。登录后才能看到网站首页。
已经找到了解决方法,就直接在模板中改,用PHP语法来判断,这样子才能实现。

Unix下freebsd服务器完美支持joomla/mambo/wordpress/discuz
环境:php5.2.6+mysql5.0.67+phpmyadmin3.0.1,支持apache mod_rewrite.
购买联系QQ:373540971

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月04日 16:25 #15 作者: powebcn
前面是装了那个H版的,装在客户服务器上,不显示,然后本机装了J最新版,把你的语文复制过去也不行,这就怪了

Unix下freebsd服务器完美支持joomla/mambo/wordpress/discuz
环境:php5.2.6+mysql5.0.67+phpmyadmin3.0.1,支持apache mod_rewrite.
购买联系QQ:373540971

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年04月05日 00:59 #16 作者: Joomla之门
powebcn 那个客户的要求很特别:首页对游客只显示登录表单,没有其它任何内容。这样的首页设计用模板来实现当然是最好的。

至于看不到 MetaMod 的汉化效果,我觉得很奇怪。我测试的时候,安装之后后台就是中文了。莫非你的网站前后台默认语言不是中文?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论