在Magento Layout系统的深处,有以下代码用于将包布局xml文件转换为创建块所需的特定XML,从而创建页面
public function merge($handle)
{
$packageUpdatesStatus = $this->fetchPackageLayoutUpdates($handle);
if (Mage::app()->isInstalled()) {
$this->fetchDbLayoutUpdates($handle);
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法fetchDbLayoutUpdates尝试使用SQL查询从数据库加载其他XML更新
SELECT `update`.`xml` FROM `core_layout_update` AS `update`
INNER JOIN `core_layout_link` AS `link`
ON link.layout_update_id=update.layout_update_id
WHERE (link.store_id IN (0, '1'))
AND (link.area='frontend')
AND (link.package='default')
AND (link.theme='default')
AND (update.handle = 'default')
ORDER BY `update`.`sort_order` ASC'
Run Code Online (Sandbox Code Playgroud)
在默认安装中,core_layout_update和core_layout_link表都是空的.
所以,我一直认为这是一个早在Magento之前的遗留功能.有谁知道这个功能是否在任何地方使用
Magento核心代码库
任何众所周知/突出的扩展
您!
我可以看到为什么这个功能已经存在(遗留问题和什么不是),但是我很好奇它是否被正式放弃了,或者它是否被大量利用了.
提前道歉是我在滥用术语,并且对修改表示赞赏.我对有向图很着迷,但我从来没有数学/ cs背景来了解它们的真正含义,我只是喜欢技术,因为它制作了有用的图表.
我正在尝试创建一个Web应用程序功能,该功能将向浏览器呈现动态有向图.我最近发现了Canviz,这是一个基于cavas的xdot渲染器,我想使用它.
Canviz很棒,但它渲染xdot文件(显示?)包含所有复杂的定位逻辑
/* example xdot file */
digraph abstract {
graph [size="6,6"];
node [label="\N"];
graph [bb="0,0,1250,612",
_draw_="c 9 -#ffffffff C 9 -#ffffffff P 4 0 -1 0 612 1251 612 1251 -1 ",
xdotversion="1.2"];
S1 [pos="464,594", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 464 594 27 18 ", _ldraw_="F 14.000000 11 -Times-Roman c 9 -#000000ff T 464 588 0 15 2 -S1 "];
10 [pos="409,522", width="0.75", height="0.5", _draw_="c 9 -#000000ff e 409 522 …Run Code Online (Sandbox Code Playgroud) 什么将 Drupal Hook 与特定模块联系起来?
在 Drupal 7 中,每个核心模块都有一个“api”文件
$ ls modules/*/*.api.php
modules/aggregator/aggregator.api.php modules/openid/openid.api.php
modules/block/block.api.php modules/overlay/overlay.api.php
modules/comment/comment.api.php modules/path/path.api.php
modules/contextual/contextual.api.php modules/rdf/rdf.api.php
modules/dashboard/dashboard.api.php modules/search/search.api.php
modules/field/field.api.php modules/shortcut/shortcut.api.php
modules/field_ui/field_ui.api.php modules/simpletest/simpletest.api.php
modules/file/file.api.php modules/system/system.api.php
modules/filter/filter.api.php modules/system/theme.api.php
modules/help/help.api.php modules/taxonomy/taxonomy.api.php
modules/image/image.api.php modules/trigger/trigger.api.php
modules/locale/locale.api.php modules/update/update.api.php
modules/menu/menu.api.php modules/user/user.api.php
modules/node/node.api.php
Run Code Online (Sandbox Code Playgroud)
这些文件中的每一个都包含一个从不 (?) 调用的函数,但记录了其他模块(包括第 3 方)可以实现的钩子的存在。
File: modules/path/path.api.php
function hook_path_delete($path) {
db_delete('mytable')
->condition('pid', $path['pid'])
->execute();
}
Run Code Online (Sandbox Code Playgroud)
我的问题:是什么将特定钩子与特定模块联系起来?为什么path_delete钩子包含在path.api.php文件中?为什么entity_view钩子包含在system.api.php文件中?这只是任意的,事后组织,还是 Drupal 系统中是否有将特定钩子与特定模块联系起来的东西?或者是其他东西?
有没有办法在开发新模块时以"非缓存"模式运行Drupal 7?我的具体需求是在开发过程中关闭任何模块和/或模块信息的缓存,所以我不需要在进行更改时清除缓存,但通常在学习新系统时我更喜欢它的内部缓存,因为我尚未了解哪些更改需要缓存清除,哪些不需要(即"我这样做错了,还是旧的结果只是缓存?"
还有一种方法可以从命令行快速清除Drupal缓存(而不必在性能部分使用应用程序UI)
最近我注意到很多Web编程框架正在使用//某些生成href和src链接
//example from twitter.com
<a href="//support.twitter.com">Help</a>
Run Code Online (Sandbox Code Playgroud)
这只是http/ https或更多的快捷方式吗?
有没有人知道这种技术从哪里开始,如果有浏览器支持矩阵确认/描述领先的行为//?
免责声明:自从我做了任何perl以来已经很久了,所以如果我要求/说些蠢事,请纠正我.
是否可以查看perl变量的字节/位表示?也就是说,如果我说的话
my $foo = 'a';
Run Code Online (Sandbox Code Playgroud)
我知道(想想?)电脑看起来$foo像是什么样的
0b1100010
Run Code Online (Sandbox Code Playgroud)
有没有办法让perl打印出变量的二进制表示?
(不要求任何实际目的,只是与一位老朋友纠缠在一起并试图比1997年更深入地了解它)
在Laravel 5.1中,CLI类的内核看起来像这样
#File: app/Console/Kernel.php
class Kernel extends ConsoleKernel
{
//...
protected $commands = [
\App\Console\Commands\Inspire::class,
];
//...
}
Run Code Online (Sandbox Code Playgroud)
是使用预定义/魔术常量的更改 ::class
\App\Console\Commands\Inspire::class
Run Code Online (Sandbox Code Playgroud)
功能上不同于简单地使用类名?
\App\Console\Commands\Inspire
Run Code Online (Sandbox Code Playgroud) 在现代版本的PHP(下面的5.6)中,以下是无效的程序
error_reporting(E_ALL);
class A
{
public function hello(X $one, Y $two)
{
}
}
class B extends A
{
public function hello()
{
}
}
interface X
{
}
interface Y
{
}
$b = new B;
Run Code Online (Sandbox Code Playgroud)
PHP将拒绝运行此命令,而是提供如下错误消息
PHP Strict standards: Declaration of B::hello() should be compatible with A::hello(X $one, Y $two) in test.php on line 15
Strict standards: Declaration of B::hello() should be compatible with A::hello(X $one, Y $two) in test.php on line 15
Run Code Online (Sandbox Code Playgroud)
从严格的角度来看,这是一件好事.但是,如果您使用构造函数尝试相同的事情
class A
{
public …Run Code Online (Sandbox Code Playgroud) 这是New Go程序员,所以请提前为这个新手的性质道歉.
为什么一些golang.org包名前缀为x?引起我兴趣的具体方案是加密的
我主要担心的是x像e X perimental 这样的手段,如果我想要一些稳定的东西,我应该使用一组不同的库.如果不是这样,那x就是表示某种东西 - 我很好奇它是什么.
PHP InternalsTSRMLS_FETCH宏是如何工作的?
根据PHP 手册
在开发扩展时,包含“tsrm_ls 未定义”的构建错误或导致该结果的错误源于 TSRMLS 在当前范围内未定义的事实,要解决此问题,请使用适当的宏声明函数以接受 TSRMLS,如果有问题的函数不能更改,您必须在函数体内调用 TSRMLS_FETCH。
我了解声明函数以使用适当的宏接受 TSRMLS意味着使用TSRMLS_C、TSRMLS_D、TSRMLS_CC 和 TSRMLS_DC来定义或调用具有额外参数/参数的函数。
但是,如果相关函数的原型无法更改,则必须在函数体内调用 TSRMLS_FETCH使我有点困惑。如果我在PHP-SRC看起来既这里和这里的TSRMLS_FETCH 似乎是一个空的宏。
所以这给我留下了一个问题——它TSRMLS_FETCH是如何工作的?在编译时是否有其他东西填充这个宏?