RSS feed 为XOOPS用户提供的教程

Oledrion (MyShop) 教程即将来到 XOOPS

Resized Image


Oledrion (MyShop) 是为 XOOPS 原生开发的最佳和最全面的电子商务模块!

它最初由 法国 Hervé Thouzard (又名 Hervet) 开发,最近由 伊朗 Hossein Azizabadi (又名 Voltan) 进行了增强。

我目前正在编写 Oledrion 的教程 - 它仍在进行中,但您已经可以在 GitBook 上阅读它。

如果你们中的一些人能在 GitHub 上进行 fork 并为之做出贡献,让它变得更好,那就太棒了!
阅读更多... | 2 条评论

通用工具中的 MVC 设计模式

Resized Image
可能很少有人知道,但自2.2版本起,通用工具已经包括一个基本的MVC(模型 - 视图 - 控制器)模式实现。在这篇文章中,我将为您介绍其在通用工具和集成模块中的基本操作。如果您还不知道MVC是什么,请阅读维基百科上的这篇文章以了解更多关于MVC的信息。[在通用工具中MVC是如何工作的] 当一个模块使用通用工具的MVC特性时,所有请求都通过URL接收,并由RMCommon负责接收、处理并将它们导向正确的模块。为了实现这一点,RMCommon包含一个合适的选项来指定每个模块的请求接收位置。这是通过配置实现的,指示您为每个模块使用哪个URL。例如,如果我们想要寻找的模块位于“库存”目录中,并且RMCommon的配置已将其路径设置为“库存”文件夹,当RMCommon收到对URL http://sitio.com/inventorios 的请求时,它会自动将请求重定向到 http://sitio.com/modules/inventory 。这意味着该模块将对所有以misitio.com/inventarios发起的请求做出响应。 [URL参数] 一旦RMCommon知道每个模块的位置,您可以通过指定URL参数来通知我们获取模块。提供的参数必须按照以下形式编写:模块 / 控制器 / 操作 / 其他参数 。这种简单的格式允许所有由RMCommon处理的模块请求遵循以下规则:通用工具在模块目录中的相应驱动文件夹controllers中查找合适的驱动程序。以URL http://sitio.com/ library / books / list / category / bestsellers / 为例,其处理过程如下:找到相应的模块为library。根据已配置的路线,这个目录可以匹配模块的目录,也可以是不同的一个。在这个示例中,library是模块的目录。通用工具驱动程序在模块library的目录controllers中查找books,并加载PHP类。现在找到相应的操作list对应的方法,通过传递参数category = bestsellers来处理请求。这些参数必须是成对的。数据处理完成后,通用工具获取模板(视图)并返回相应的结果。[本中的某些约定] 如何定位控制器?首先,驱动程序应该放在每个模块的controllers目录内作为文件。另外,还有一些关于包含驱动程序的文件命名的规则。在我们的示例(是的,是图书馆)中,驱动程序文件应该被命名为books-controller.php。此外,该文件应该包含一个类,控制器本身,其命名如下:Library_Books_Controller并且必须继承自RMController主类。最后,该类必须包含一个名为list的方法,它将被RMCommon调用以展示结果。到这里一切都很清楚了吗?所以这里的规则是:- 驱动程序文件必须放在模块的controllers目录内。- 文件名必须遵循规则_-controller.php 。- 文件内的控制器类必须被命名为 _ _controller并且应该包含多少个要处理的操作就有多少个方法。方法/操作应该根据URLConnection请求命名。如果动作被命名为form,则创建的类必须包含一个form()方法。如果动作被命名为categories-form,则类必须包含一个categories_form()方法。一个控制器类看起来是这样的
类  Mymodule_Nombrecontrolador_Controller  继承自  RMController

    使用  
RMModuleAjax,  RMProperties,  RMModels ;

    public  function 
__construct() { 
        
parent::__construct(); 
        
$this->default = 'index';  // 默认操作 
        
$this->controller = 'categories';
    }

    public  function 
index() { 
        
// index操作逻辑

        
$this->tpl->header(); 
        
$this->tpl->footer(); 
    } 
}
关于模型的事情? 模型只能通过控制器访问。这意味着它们只能被控制器类的方法使用。模型还有一些特定的规则: - 必须位于模块的 /models 文件夹内。 - 模型文件必须命名为-model.php。 - 文件必须包含一个名为 _ _model 的类。一个典型的精确模型中的语句可能是
类  Mymodule_Nombremodelo_Model  继承自  RMActiveRecord 


    use  
RMModels ;

    public  function 
__construct () {

        
parent :: __construct (  'model' ,  'module'  );

        / **
         * 
Tiles 表字段
         
* / 
        $ 
this -> titles = array ( 
            
'column'  => __ (  '列标题' ,  'module'  ), 
            
'column2'  => __ (  '标题列2' ,  'module'  ), 
            ... 
        );

    } 
}
视图呢? 最终我们得到了视图。这些实际上是来自操作名的模板。对于上面的例子,其中模块使用了库,并且请求了用于执行列表方法的(操作)图书驱动,通用工具获取了list.php模板,因为它对应于操作列表。很简单,对吧?因此,视图文件(模板)应指定为运行的行动(控制器方法)。如果我们的操作名为表单,那么我们必须指定form.php。如果操作名是-form类别,那么我们的文件也应该是categories-form.php。还有一点。视图,正如任何模块一样,应存储在模块模板目录中,但不是直接存储,而是在适当的子目录中,具体取决于以下情况。- 模板文件夹可以包含标准模板(通常在模块中使用的)。- 模块可以有控制面板模板或公共部分的模板,因此在那里应该有两个子文件夹:后台和前台。- 每个这些子文件夹中应该有一个新的子文件夹,用于处理视图的每个驱动器。如果驱动器名为categories,那么必须有名为categories的子文件夹,其中将保持每个操作的视图。这种新的模块开发方法在XOOPS中使得开发和结构更加快速。更进一步,利用其辅助对象,通用工具简化了在模块中实现AJAX,使用户体验更加直观和易于使用。
有什么评论吗?

优秀的西班牙语教程:将HTML和CSS模板适配到XOOPS

Tony Rod 发布了一个关于“将HTML和CSS模板适配到XOOPS”的出色视频教程。





他就在他博客里写了这些:

XOOPS一直因其强大的灵活性的CMS而闻名,然而尽管如此,创建自己的主题而无需依赖XOOPS已有的主题,对我来说一直很有趣,尤其是鉴于可用的主题非常相似,具有相同的结构。

这就是几年前我挑战自我去学习如何理解XOOPS模板的工作原理以及开发符合我需求、并且独特设计模板所需条件的原因。

我终于找到了答案,这就是为什么现在我愿意分享这些年来我用XOOPS学到的知识。希望这能帮助所有那些想要独特而不同设计但又不希望在XOOPS模板调整过程中出错的人。

基本上,这篇教程分为四个部分:

- XOOPS模板简介和基础知识
- 将HTML模板调整为XOOPS的流程
- 使用Defacer在我们网站上的多个模板
- 根据ID手动添加区块

本教程的设计方式让您可以逐步学习从模板调整到成品的整个过程。为了方便您,我提供了课程材料,以便您可以进行必须的测试。这些材料可以在下载区的这里找到,或者点击这里下载。

希望这篇教程有助于您开始设计和构建自己的模板,并激励那些想要改进他们网站内容的人。

我将在本文的评论区回答您所有的问题和/或评论。
阅读更多... | 4 条评论

教程:为你的图片添加一个优美的边框

夏天来了,是时候发布你在网站上的假期照片了...
在这里,你会发现一个新教程,可以提升你的设计,使之更现代、更专业。
希望你会喜欢...

实际上,我们会在你的图片周围添加一个白色边框,并带有阴影效果。

缩放后的图像看看结果在这里! ======> 之后!缩放后的图像



























好,让我们开始这个教程吧。


1) 在css文件中添加新样式

打开并编辑你的主题中的style.css文件,
位于 /themes/my_theme/css 或者 /themes/my_theme
并在最后添加以下代码

img.img-frame 
/* 照片阴影颜色 */
    
box-shadow5px 5px 20px #404040;  
/*    老式黑白照片的边框效果 */
/*    边框颜色: 
#f5eac7; */
    
border-color#ffffff; 
    
border-stylesolid
    
border-width20px
    
displayblock
    
margin-l
    
margin-leftauto
    
margin-rightauto
    
margin-top10px
    
margin-bottom10px
}


然后保存并在您的网站上上传。
您已经完成了本教程中最困难的工作。是的!!!


2) 删除浏览器缓存

仅第一次使用。


3) 使用这个新类来添加图片

3a) 基本编辑器(文本区域)
参见3b)

3b) XOOPS编辑器(DHTML文本区域)
在bbcode中不起作用。我们无法在bbcode中添加类。
如果您正在制作自定义块;选择内容类型:"HTML"。
然后按照这种方式插入您的图片


3c) TinyMCE(v3)
- 点击“插入图片”按钮,
- 在“URL”、“描述”和“标题”字段中输入内容,
- 点击名为“外观”的选项卡,然后在列表中选择“class”字段,选择“img-frame”,然后确定


所以,很简单,不是吗?
不要犹豫,自己尝试一下!!!

要继续深入工作

- 修改边框颜色(这里为白色),通过“旧式黄色”来为黑白旧式照片添加效果,
- 修改阴影颜色,
- 修改阴影方向,
- 修改阴影宽度,
- 最后,我们可以添加动态效果(例如鼠标悬停时的放大效果),但请注意,不要添加太多效果,请...

如果您喜欢我们的教程,请告诉我们。

PS : Kris said (in frxoops.org) that we could use a an existant class in xoops.css
class="pad10 boxshadow" but the effect is not the same, but so easy to use, no need to change the css style.
阅读更多... | 15 comments

突出显示XoopsTube中的非空字母列表

在XoopsTube中,我们有一个视频的直观字母列表,所以如果您想查看所有以“B”开头的视频,您会点击“B”的图片。不幸的是,这不是最具用户友好性的功能,因为我们不知道“B”下面是否有任何内容。因此,我们需要通过修改背景图标来指出视频的存在,如下所示:缩小后的图片 计划如下:1) 构建一个数据库中具有视频的唯一字母数组和 2) 在渲染字母图标时,检查每个字母/数字是否在上面的数组中,如果是,则将图标图像更改为绿色图像。XoopsTube在/include/functions.php中的xoopsstube_letters()函数中渲染图像。首先,我们需要从数据库中提取唯一的字母并创建数组和
$distinctDbLetters_arr = array();
    
$sql 'SELECT DISTINCT (UPPER(LEFT(title, 1))) AS letter FROM ' $xoopsDB->prefix('xoopstube_videos') ;
    if (
$result $xoopsDB->query($sql)) {
        while (
$row $xoopsDB->fetchArray($result)) {
            
$distinctDbLetters_arr[] = $row['letter'];
        }
    }
    unset(
$sql);
其次,我们想要检查每个字母和数字是否在数据库中有表示
if (in_array($ltr$distinctDbLetters_arr)) {
            
$letterchoice
                
.= ';
        } else {
            
$letterchoice
                
.= ';
        }
我们还需要创建一个新的CSS类来获取新图像
.xoopstube_letters_green {
    
background-imageurl(images/icon/backgnd_green.png);
}
未来要做的几件事:-缓存在(1)中创建的数组,这样我们就不必每次都从数据库中读取它,只在新视频被添加时更新它。本教程的主要信息是通过视觉方式指示信息的状态来使我们的模块更具用户友好性。一如既往,如果有人有更好的实现方式,请与我们一起分享!
阅读更多... | 9条评论

在TinyMCE编辑器安装YouTube插件

大家好,Xoopser!

今天,我想向大家展示在TinyMCE编辑器中添加新插件是多么简单。
为什么不试试YouTube插件?缩放后的图片


好的,那么,让我们开始吧!

1) 首先,在这里下载youtube插件此处(压缩文件在此处


2) 解压并复制/youtube目录至(JFrame中
您的XOOPS安装目录下的/class/xoopseditor/tinymce/tiny_mce/plugins/


3) 修改/class/xoopseditor/tinymce/settings.php文件

您可以重新阅读有关在模块中使用模板页面的新闻这里
第二部分:“添加模板按钮”。


第70行
"paste,fullscreen,visualchars,nonbreaking,inlinepopups,youtube",


第85行
"theme_advanced_buttons4" => "xoopsimagemanager,xoopsemotions,xoopsquote,xoopscode,xoopsmlcontent,youtube",


4) 就这么简单!现在,尽情享受吧

也许在下一个XOOPS版本中,它将被默认包含...
阅读更多... | 2条评论

教程:如何更新表以遵循XOOPS的新命名方案?

正如您可能已经知道的,我们正在进行努力来标准化我们的模块开发——从使用相同的模块管理员GUI结构,到在使用所有模块中使用相同的图标,再到为每个表格使用相同的分页结构,以及以一致的方式命名表格和字段(参见此主题)。本教程将向您展示如何修改您的模块,以便在用户更新模块时在用户站点上重命名表。这将遵循alain01建议的方案。新的表命名方案为:mod_AAA_BBBB,其中AAA是模块的名称,BBB是表的名称。例如,当我们在新闻模块中有一个名为"topics"的表时,在新闻的新更新版本中,它将变为:mod_news_topics 以下是一些步骤,这些都是最近在名为“animal”的谱系模块中使用的:1)新的版本应在SQL文件中正确定义表,以便新的安装立即安装正确的表 2)在现有的安装中,用户通常会复制文件,然后在管理中运行“更新”。因此,我们需要添加一个包含更新的文件。我们将称其为“update_function.php”并将其放置在/包含目录中 3)为了使XOOPS调用此文件,我们将在xoops_version.php文件中添加以下内容:
$modversion['onUpdate'] = 'include/update_function.php';
4) 在该文件中,我们首先添加一个函数来检查我们想要重命名的表是否实际上存在。这是通过使用Hervet创建的函数实现的。
function tableExists($tablename)
{
    global 
$xoopsDB;
    
$result=$xoopsDB->queryF("SHOW TABLES LIKE '$tablename'");
    return(
$xoopsDB->getRowsNum($result) > 0);
}
5) 然后我们添加一个在点击更新按钮时将执行的函数
function xoops_module_update_animal()
{
    global 
$xoopsDB;

    if (
tableExists($xoopsDB->prefix('eigenaar'))) {
        
$sql    sprintf(
            
'ALTER TABLE ' $xoopsDB->prefix('eigenaar') . ' RENAME ' $xoopsDB->prefix('mod_pedigree_owner')
        );
        
$result $xoopsDB->queryF($sql);
        if (!
$result) {
            echo 
'_AM_PED_UPGRADEFAILED ' ' _AM_PED_UPGRADEFAILED2;
            
$errors++;
        }
    }
    return 
TRUE;
}
在上面的代码中,我们检查“eigenaar”是否存在,如果存在,就将其重命名为“mod_pedigree_owner”。当然,我们对每个需要重命名的表都这样做。6)我们还需要在代码中将所有表的实例重命名。a) 首步,可以使用搜索和替换功能,搜索词包括“prefix”,所以在我们的示例中,我们将:prefix("eigenaar") 替换为:prefix("mod_pedigree_owner")。这是针对我们使用常规方式调用表的情况。b) 但人们很有创造力,可能会用不同的方法来做这件事,所以没有什么能阻止我们去测试,最终是检索所有文件中的“eigenaar”单词,然后判断是否作为表处理并需要进行重命名。新的命名方案将使以下两个操作变得更简单:- 在phpMyAdmin(或任何其他数据库工具)中查看一个模块中的所有表将更容易分组在一起。它也将它们与核心表区分开来。- 在代码中,只需通过搜索“mod_MODULENAME”就可以找到表。在不久的将来,我们将统一我们模块中典型字段的名称和特征,并作为指导提供。当您查看我们的模块时,同一个字段在每个模块中的名称可能不同。比如“组ID” - 它可能叫:gid、g_id、group_id、gr_id等。如果您试图维护别人的模块,我们将花费太多时间试图弄清楚某个特定字段实际上是什么。如果您对这篇教程有改进意见,请告诉我们。最重要的是:- 如果您能帮助我们简化和标准化模块开发,我们将非常感激。- 如果您喜欢某个特定模块的某个操作方式,并认为其他模块也应该这样做,请告诉我们。- 如果您看到其他开源项目中的酷功能,而XOOPS可以从中受益,请也告诉我们。请在这个[链接](https://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=75756)的帖子里跟进。
阅读更多... | 4条评论

教程:块注释的新设计,步骤详解

缩放后的图片我想与您分享我对新式新闻的经验:一个逐步教程。在本期中,我将向您展示如何修改评论块。这个块的默认设计相当古老,所以让我们带来一些智能的小改变,使显示更实用。请看这个例子[点击这里](http://www.alsacreations.com/tuto/lire/1522-le-modele-tabulaire-en-css.html#commentaires)(不是xoops网站)。首先,您应该了解导航主题的工作方式(主题覆盖)。关于这个的最好教程是XOOPS法国(法语)的这个教程。我们将一步一步地开始,以便向您解释这是如何做到的,最后,您应该使用另一个块来练习这些变化。我会邀请您一次上传文件,这样对您来说会更清楚。所以,现在,让我们开始吧!我们需要: - 系统模块的模板文件评论 - 主题CSS文件(style.css)1 - 模板文件评论到主题覆盖将文件/usr/modules/system/templates/system_comment*.html复制到/usr/themes/mytheme/modules/system - system_comment.html - system_comments_flat.html - system_comments_net.html - system_comments_thread.html 2 - 自定义 缩放后的图片2a 头部现在,我们在/usr/themes/mytheme/modules/system的文件上工作。我们从删除顶部头部开始。编辑3个文件system_comments_*.html,并注释掉(或删除)这些内容
在 system_comments_net.html 和 system_comments_thread.html 中找到这些行 - 2 次,在 system_comments_flat.html 中找到 1 次 - 缩放图片2b - 删除发帖者的信息 - 仅保留头像 现在,所有的更改都将保存在 system_comment.html 文件中(对下一个也是如此)从用户中删除信息:- 等级 - 注册日期 - 地点 - 贡献数量 - 状态 仅保留头像
<div class="comUserRank">
    <
div class="comUserRankText"><{$comment.poster.rank_title}>div>
    <
img class="comUserRankImg" src="<{$xoops_upload_url}>/<{$comment.poster.rank_image}>" alt="" />
div>
<
img class="comUserImg" src="<{$xoops_upload_url}>/<{$comment.poster.avatar}>" alt="" />
<
div class="comUserStat"><span class="comUserStatCaption"><{$lang_joined}>:span> <{$comment.poster.regdate}>div>
<
div class="comUserStat"><span class="comUserStatCaption"><{$lang_from}>:span> <{$comment.poster.from}>div>
<
div class="comUserStat"><span class="comUserStatCaption"><{$lang_posts}>:span> <{$comment.poster.postnum}>div>
<
div class="comUserStatus"><{$comment.poster.status}>div>
现在是
<img class="comUserImg" src="<{$xoops_upload_url}>/<{$comment.poster.avatar}>" alt="" />
缩放图片2c - 移动发帖者的名称、日期和样式 让我们简化评论日期的显示:因此,替换
<tr>
          <
td class="head"><a id="comment<{$comment.id}>">a> <{$comment.poster.uname}>td>
          <
td class="head"><div class="comDate"><span class="comDateCaption"><{$lang_posted}>:span> <{$comment.date_posted}>&nbsp;&nbsp;<span class="comDateCaption"><{$lang_updated}>:span> <{$comment.date_modified}>div>td>
        tr>
通过
<tr>
          <
td><a id="comment<{$comment.id}>">a>td>
          <
td><{$comment.poster.uname}> 说了<{$comment.date_posted}>
             (<{
$lang_updated}>: <{.date_modified}>)td>
                *<
/tr>
已调整大小的图像2d - 相同日期的评论和修改评论?我们不希望看到相同的日期被显示两次,所以将之前的代码替换为
<tr>
    <td><a id="comment<{$comment.id}>">a>td>
    <
td><{$comment.poster.uname}> 说了<{.date_posted}>
        <{if 
.date_posted != .date_modified}>
                (修改了<{.date_modified}>)
<{/if}>
    <
/td>
<
/tr>**
已调整大小的图像2e - 将按钮移动到顶部现在,我们希望将按钮移动到顶部。首先,取帖子测试代码的底部文件,并删除所有包含 < td > et < /td > 的行。所以现在的部分代码如下,带有正确的 CSS 样式
<div style="float:right;">
<{if 
$xoops_iscommentadmin == true}>
    <
a href="<{$editcomment_link}>&com_id=<{$comment.id}>" title="<{$lang_edit}>"><img src="<{$xoops_url}>/images/icons/edit.gif" alt="<{$lang_edit}>" />a>
    <
a href="<{$deletecomment_link}>&com_id=<{$comment.id}>" title="<{$lang_delete}>"><img src="<{$xoops_url}>/images/icons/delete.gif" alt="<{$lang_delete}>" />a>
    <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>" title="<{$lang_reply}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
<{elseif 
$xoops_isuser == true && $xoops_userid == $comment.poster.id}>
    <
a href="<{$editcomment_link}>&com_id=<{$comment.id}>" title="<{$lang_edit}>"><img src="<{$xoops_url}>/images/icons/edit.gif" alt="<{$lang_edit}>" />a>
    <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>" title="<{$lang_reply}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
<{elseif 
$xoops_isuser == true || $anon_canpost == true}>
        <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
<{/if}>
div>
将此代码直接复制到注释日期之后的 <{/ if }> 标签处,然后删除下面的按钮。只需删除最后一个 < tr >< /tr > 标签之间的所有行,并删除 < tr >< /tr > 标签本身。 调整大小后的图像2f - 样式 - 删除标题和图片标题:删除行
<div class="comTitle"><{$comment.image}><{$comment.title}>div>
- 给左侧列添加固定宽度
<td style="width:120px;"><a id="comment<{$comment.id}>">a>td>
- 删除包含发帖者头像的 'td' 的类 "odd",然后将图片放到中间位置
<td style="text-align:center;">
                    <
img class="comUserImg" src="<{$xoops_upload_url}}/<{$comment.poster.avatar}}/>" alt="" />
                td>
调整大小后的图像2g - 添加箭头 我们需要在 mytheme 主题的 style.css 文件中进行操作,在 CSS 中创建此箭头。对于我的主题,它在 /www/themes/mytheme/css/style.css 中。在 style.css 中添加以下代码
.arrow-left {
width0px;
height0px;
border-stylesolid;
border-width25px 20px 25px 0;
border-colortransparent #ECE9D8 transparent transparent;
}
您可以更改箭头的颜色,此颜色与颜色类 "odd" 相同,增加1列。为了将我们的新箭头放在注释的左侧,请增加1列。 - 添加标签
<td>td>
之后
<td style="width:120px;"><a id="comment<{$comment.id}>">a>td>
添加标签
<td>td>
之前
<td class="odd"><div class="comText"><{$comment.text}>div>td>
在第二个标签中插入以下代码
<div class="arrow-left">div>
并设置一个固定的20像素宽度风格:因此,我们有
<td style="width:20px;"><div class="arrow-left">div>td>
缩放后的图像2f - 样式 增加两个换行以提高清晰的显示。将其置于名称海报之前。
<td><br /><br /><{$comment.poster.uname}>
那就全部完成了... 3 - full system_comment.html 文件 对于想获取整个 files_comment.html 文件的网站管理员,它在这里,可供使用

        <
tr>
            <
td style="width:120px;"><a id="comment<{$comment.id}>">a>td>
            <
td>td>
            <
td><br /><br /><{$comment.poster.uname}> a dit le <{$comment.date_posted}>
                    <{if 
$comment.date_posted != $comment.date_modified}>
                        (
modifié le <{$comment.date_modified}>)
                    <{/if}>
                    <
div style="float:right;">
                        <{if 
$xoops_iscommentadmin == true}>
                            <
a href="<{$editcomment_link}>&com_id=<{$comment.id}>" title="<{$lang_edit}>"><img src="<{$xoops_url}>/images/icons/edit.gif" alt="<{$lang_edit}>" />a>
                            <
a href="<{$deletecomment_link}>&com_id=<{$comment.id}>" title="<{$lang_delete}>"><img src="<{$xoops_url}>/images/icons/delete.gif" alt="<{$lang_delete}>" />a>
                            <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>" title="<{$lang_reply}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
                        <{elseif 
$xoops_isuser == true && $xoops_userid == $comment.poster.id}>
                            <
a href="<{$editcomment_link}>&com_id=<{$comment.id}>" title="<{$lang_edit}>"><img src="<{$xoops_url}>/images/icons/edit.gif" alt="<{$lang_edit}>" />a>
                            <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>" title="<{$lang_reply}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
                        <{elseif 
$xoops_isuser == true || $anon_canpost == true}>
                            <
a href="<{$replycomment_link}>&com_id=<{$comment.id}>"><img src="<{$xoops_url}>/images/icons/reply.gif" alt="<{$lang_reply}>" />a>
                        <{/if}>
                    div>
            td>
        tr>

        <
tr>
            <{if 
$comment.poster.id != 0}>
                <
td style="text-align:center;">
                    <
img class="comUserImg" src="<{$xoops_upload_url}>/<{$comment.poster.avatar}>" alt="" />
                td>
            <{else}>
                <
td class="odd"td>
            <{/if}>
                <
td style="width:20px;"><div class="arrow-left">div>td>
                <
td class="odd">
                    <
div class="comText"><{$comment.text}>div>
                td>
        tr>
 <
tr><td>td><td>td><td>td>tr>
当然,我知道这并不完美,我们可以做得更多:- 删除“table”,用“div”代替,- 不要在代码中定义CSS样式,而使用类。- 缓冲角,- ... 但这里的目的是不是为了得到完美的代码。目的是为了理解过度使用的主题,并逐步展示如何修改评论块的设计。《结论》我希望这个消息能让你更清楚地知道如何修改你主题中的块和模板设计。如果你觉得这个消息有用,请在评论块中告诉我你的感受!哈哈哈!
阅读更多... | 4条评论

在模块中使用模板页面

你好,

使用XOOPS的许多人需要使用模板来展示相同的页面

- 烹饪,
- 一些书籍,
- 一些电影,
- ...

我将向您展示如何使用模板生成您的页面

优点

- 所有页面使用相同的模板
- 更统一、更清晰的表现
- 使用预定义的页面


创建模板(gabarits)的6个步骤

1 - 激活模块的TinyMCE编辑器
2 - 添加模板按钮
3 - 创建模板文件
4 - 创建模板的定义文件
5 - 上传文件到服务器
6 - 使用



1 - 激活模块的TinyMCE编辑器(在此处查看演示编辑器点击这里
管理 / 首选项 / 系统模块设置 / 编辑器设置 / 所有模块的编辑器::tinymce
(或选择TinyMCE作为将要在模块首选项中使用的模块的默认编辑器)


2 - 添加模板按钮

修改文件'class/xoopseditor/tinymce/settings.php'

第70行,修改
"paste,fullscreen,visualchars,nonbreaking,inlinepopups",
通过
"paste,fullscreen,visualchars,nonbreaking,inlinepopups,template",

然后第85行
"theme_advanced_buttons4" => "xoopsimagemanager,xoopsemotions,xoopsquote,xoopscode,xoopsmlcontent",
通过
"theme_advanced_buttons4" => "xoopsimagemanager,xoopsemotions,xoopsquote,xoopscode,xoopsmlcontent,template",
"template_external_list_url" => '/uploads/gabarits/liste-gabarits.js',

(这里是为了说明模板位于目录/thumb/gabarits中,模板定义文件为liste-gabarits.js)


3 - 创建模板文件

这些文件必须是HTML格式,但不能有<.html>, <body>或
在这里,我们创建了2个HTML文件

- fiche-cooking.html,
- fiche-book.html.

请创建一个清洁的HTML文件,带有固定的位置...
例如,对于模板'cooking'
烹饪标题
材料
制作难度
...

4 - 创建模板的定义文件

在这里,创建文件liste-gabarits.js
// JavaScript 文档 

var tinyMCETemplateList = [ 

// 名称,URL,描述 

["食谱模板""/_uploads/gabarits/fiche-cooking.html""烹饪模板。"span>], 

["图书模板""/_uploads/gabarits/fiche-book.html""图书模板。"span>] ];



5 - 上传文件到服务器

在/upload/gabarits下,上传文件

- liste-gabarits.js
- fiche-cooking.html,
- fiche-book.html.
- index.html(与其他目录中相同)


6 - 使用

进入模块(例如新闻),然后点击“模板”图标,然后在弹出的窗口中,选择您想使用的模板(例如,为了创建“苹果蛋糕”页面,选择fiche-cooking)

就这样!

感觉如何?

告诉我您的看法。我将非常感激您的评论!

PS 1:在此对在XOOPS法国论坛上提供支持的montuy337513致以崇高的敬意。

PS 2:不是很好吗?在下一个XOOPS版本中,将此选项作为默认设置会更好,不是吗?
阅读更多... | 3条评论

教程:XOOPS的奇妙聊天 - 123flashchat

在这个教程中,我将向您展示如何安装XOOPS的聊天。

哦,我听到你在说:“哦,又一个设计糟糕、不友好的聊天!

错误!在这里,您可以看到美丽而友好的用户界面

123flashchat

阅读更多... | 7762字节更多 | 2条评论


Login

Who's Online

345 user(s) are online (21 user(s) are browsing XOOPS News)


Members: 0


Guests: 345


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits

Archives

News archives