Shopify模板网

领先的外贸独立站建站专家

更专注,更专业

什么是LiteCart 的组件

Editor

使用 LiteCart 编码很有趣。但是,如果您不知道该去哪里寻找,那么让自己学习一个新平台可能会很困难。在此页面上,我们收集了一些值得注意的信息,这些信息将帮助您更好地找到和了解该平台。

文件夹引用

LiteCart 使用两种方式引用应用程序根文件夹:

  • FS_DIR_APP – 文件系统(服务器端)路径
  • WS_DIR_APP – Web系统(客户端)路径

文件系统路径 (FS_DIR_APP)

FS_DIR_APP 是应用程序根目录的绝对路径。它在服务器端使用,并根据机器和安装转换为类似/var/www/litecart/或类似的内容C:/xampp/htdocs/litecart/

下面的例子:

include FS_DIR_APP . 'includes/app_footer.inc.php';

Web 系统路径 (WS_DIR_APP)

WS_DIR_APP 是客户端应用程序根目录的 Web 路径(URL 路径)。它被翻译成类似/的东西。

下面的例子:

<script src="<?php echo WS_DIR_APP . 'assets/script.js'; ?>"></script>

文件夹结构

在 LiteCart 的早期,我们采用了让人想起 osCommerce 的目录布局。我们专门针对 osCommerce 用户迁移到 LiteCart,他们需要一个他们可以识别的文件夹结构。现在情况已不再如此,LiteCart 3.0 配备了全新的目录结构。

这是 LiteCart 2.3+ 的当前文件夹结构:

/ – Root ├── admin/ – Backend │   ├── *.app/ – Admin apps │   └── *.widget/ – Dashboard widgets ├── cache/ – Cache Directory ├── data/ – Data Storage ├── ext/ – Extensions/Extras/External/Vendors/Assets │   ├── jquery/ │   └── ... ├── images/ – Graphics ├── includes/ │   ├── abstracts/ – Class templates │   ├── boxes/ – Partials │   ├── entities/ – Entity Objects │   ├── functions/ – Defined functions called via lib_func.inc.php using functions::name() │   ├── library/System nodes and events │   ├── modules/ – Modules │   ├── references/ – Read-only factory model reference objects │   ├── routes/ – Route mapping │   ├── templates/ – HTML and Output │   └── wrappers/ – Wrappers, Service Layers, and Clients ├── install/ – Installation wizard ├── logs/ – Application logs ├── pages/ – Documents └── vmods/ – Modifcations └── .cache/

请注意,LiteCart 3.0.0 中的文件夹结构可能会发生变化。

系统节点/库

LiteCart 的核心包含一组系统节点,它们是平台的手臂。将其视为章鱼,其中每个肢体都是一个系统节点。每个节点专门研究特定事物(例如语言、货币、数据库等)。系统节点的主要目的是保存和处理信息,并且可以响应某些规定的事件。

LiteCart的按需设计框架使平台速度超级快!一旦您访问节点,LiteCart 会自动仅将必要的 php 文件加载到系统中。

系统节点是静态类。只需键入nodename::method() 或nodename::$variable 即可访问它们。

以下命令将加载语言组件 ~/includes/library/lib_language.inc.php,启动它,检测要使用的语言,设置一些应用程序事件,并从数据库收集结果并将其返回。全部来自命令:

echo language::translate('title_hello_world', 'Hello World');
$formatted_price = currency::format_html(199.99, 'USD');
$tax = tax::get_tax($price, $tax_class_id, $region);

数据库连接

当查询需要时,会自动打开与默认数据库的连接。

要发出 MySQL 查询请求并获取结果,标准过程如下:

$query = database::query( "select * from ". DB_TABLE_PREFIX ."mytable
  order by id;" );  while ($row = database::fetch($query)) { ... }

请注意,所有 LiteCart 表的前面都有一个定义为 DB_TABLE_PREFIX 的表前缀,位于includes/config.inc.php 中。

辅助函数

无需跟踪包含的函数文件。需要时,函数会通过 lib_functions.inc.php 中的系统节点动态加载。

所有辅助函数都存储在 ~/includes/functions/ 中。文件名前面带有前缀“func_”。函数的名称必须以集合名称开头。示例:func_form.inc.php 将托管名为 form_something() 的所有辅助函数。

加载 ~/includes/functions/form.inc.php (如果之前没有加载)并调用 form_draw_textarea():

functions::form_draw_textarea()

实体对象

实体对象是控制对象数据及其到数据库的映射的类对象。它们类似于对象关系映射。通过启动一个实体,PHP 将为您自动加载所需的文件,并从数据库中检索其结构和数据。

要创建新产品并为其指定英文名称:

$product = new ent_product(); $product->data['name']['en'] = 'Test product'; $product->save();

要更新客户 ID 34 的电子邮件地址:

$customer = new ent_customer(34); $customer->data['email'] = '[email protected]'; $customer->save();

参考对象

引用对象是工厂设计的只读类模型,可以返回实体数据的部分部分,而不会浪费不必要的资源。这意味着只会对数据库进行必要的查询。

访问数据库并输出某个产品的英文产品名称:

$product = new ref_product($id); echo $product->name;

或者

echo reference::product($id)->name;

并非所有实体对象都可用作引用对象。如果不是,LiteCart 将回退到从同名实体对象中提取数据。这里我们通过引用节点访问订单,尽管没有文件 ref_order.inc.php:

reference::order($id)->customer['company'];

链接

LiteCart 可以输出 3 种类型的链接。 ilink()、link() 和 rlink()。

这些变体还有一个 href_*() 方法,可以在用作 html 节点参数时自动转义 html 字符。转义等于 htmlspecialchars(document::link(...))。

内部链接

内部链接用于平台的逻辑页面,例如产品、类别、客户服务等。

这是如何重定向到产品 id 123 的产品页面(即pages/product.inc.php)的示例:

header('Location: ' . document::ilink('product', ['product_id' => 123])); // ilink() will rewrite this URL exit;

外部链接

外部资源不需要 ilink 解析器,因为它们不是虚拟路由链接。

$link = document::link('https://wwwsite.com/resource', ['foo' => 'bar']); $link = document::link(WS_DIR_APP . 'images/myimage.png');

当不允许使用特殊字符时,即在 HTML 元素参数内使用 document::href_link():

<a href="<?php echo document::href_link(WS_DIR_APP . 'search.php')); ?>">My link</a>

资源链接

LiteCart 2.3+ 支持指向外部资源的链接,例如 js、css 等。资源链接将在 URL 中附加唯一的时间戳(例如 ?_=1628729661),以了解上次更新的时间。时间戳可防止浏览器在更新后加载缓存资源。请注意,文件夹路径是文件系统路径,而不是像 link() 中的 Web 路径。

以下代码将在页面上包含样式表:

<link rel="stylesheet" href="<?php echo document::href_rlink(FS_DIR_APP . 'assets/styles/mystyle.css'); ?>">

会议

LiteCart 中的会话处理非常简单。要获取或设置会话变量,只需通过系统节点访问它,例如session::$data['foo']。 LiteCart会根据需要自动加载系统节点,发起会话,并访问会话变量。安全性是内置的,因此您只需考虑获取或设置什么即可。

session::$data['foo'] = 'bar';

翻译

为了您的最大方便,我们将翻译存储在数据库中。获取翻译时,如果之前未存储,您可以插入默认翻译。这是通过直接在代码中提供第一个默认翻译来完成的。英语始终是框架语言和默认翻译。如果缺少任何其他语言的翻译,将返回英文翻译。

输出 title_hello_world 的翻译并将英文翻译注入数据库(如果之前没有注入):

echo language::translate('title_hello_world', 'Hello World');

模板布局

文档系统节点收集输出到布局或视图文件中的占位符的内容片段。

存储名为 foo_bar 的全局片段:

document::$snippets['foo_bar'] = '<h1>Foo bar!</h1>';

要在页面布局文件中插入片段内容的占位符:

{snippet:foo_bar}

然后,将输出的布局文件更改为 ~/includes/templates/my_template.catalog/layouts/my_layout.inc.php:

document::$layout = 'my_layout';

注意:在输出到浏览器之前,任何不包含代码片段内容的占位符都将被删除。

模板视图

LiteCart 尝试通过使用视图将逻辑与设计分离。

收集一些数据(称为片段)并将它们传递到视图以拼接在一起:

$my_content = new ent_view(); $my_content->snippets['greeting'] = 'Hello World'; echo $my_content->stitch('views/myview');

模板视图文件includes/yourtemplate/views/myview.inc.php支持以下语法:

<h1>{snippet:greeting}<h1> <h1><?php echo $greeting; ?><h1>

虚拟修改

LiteCart有一个内置的虚拟修改系统,称为vMod。专为 LiteCart 开发。

使用 vmod::check() 包装所有包含的 php 脚本。它将检查是否存在虚拟修改,将其应用于源代码,然后返回修改后的脚本以供包含。

include vmod::check(FS_DIR_APP . 'includes/directory/file.inc.php');

注意:由于虚拟修改的性质,依赖PHP 中的FILEDIR常量将路径或目录返回到 self是不安全的。而是使用 FS_DIR_APP .'path/file.txt'。

客户端包装器

客户端包装器是像 API 客户端一样将功能包装在一起的对象。

这是如何使用 HTTP 客户端将数据发布到外部计算机的示例:

 $client = new wrap_http(); $response = $client->call('POST', 'https://www.domain.com/destination', $post_data);


相关文章

  • Litecart是什么?

    LiteCart源自多年使用不同电子商务平台的经验。在电子商务行业工作,我们年复一年地在不同的客户中看到相同的问题。有主流需求,但平台需要修改。修改可能会将任何免费的开源平台变成大量的工作和费用。我们想改变这一切。我们不仅想创造一些适合需求的东西。我们想要打造一种全新的体验。 我们问自己,最好的电子...

  • 什么是LiteCart 的组件

    使用 LiteCart 编码很有趣。但是,如果您不知道该去哪里寻找,那么让自己学习一个新平台可能会很困难。在此页面上,我们收集了一些值得注意的信息,这些信息将帮助您更好地找到和了解该平台。 文件夹引用 LiteCart 使用两种方式引用应用程序根文件夹: FS_DIR_APP – 文件系统(服务器...