标签: drupal

如何以编程方式排序查看结果?

我正在尝试获取视图的结果 - 使用函数views_get_view_result()- 并以一种我在Views界面中无法做到的方式对数组进行排序.到现在为止还挺好.我有一个$ rows变量,包含我需要的所有东西.

现在......我怎么把它放回去?:)在我需要这种之前,我曾经使用过views_embed_view(),但我不能再那样做了.

感谢你对此有任何帮助,感觉我已经接近破解了!

$important_var = important_function();
$result = views_get_view_result($view, $display, $args);
$result = sorting_function($result, $important_var);

//TODO: Put the result back into the view
Run Code Online (Sandbox Code Playgroud)

php sorting drupal drupal-views

11
推荐指数
2
解决办法
2万
查看次数

为什么APC会为用户缓存增加"缓存完全计数",即使它有足够的可用内存?

我已经玩了很长一段时间,但是我有点不知所措.我在使用PHP 5.2.5的CentOs 5上使用APC 3.1.3p1.APC充当操作码缓存和用户缓存.大多数情况下,此服务器使用CacheRouter模块运行Drupal 6站点以支持APC缓存.我正在运行APC 3.0.19一段时间,但它导致Apache偶尔锁定(在该版本的APC中记录的错误),这就是我在3.1.3p1上的原因.

我已经将APC配置为具有512 MB内存(mmap).

症状有点间歇性但从空缓存开始这通常是我看到的:

  • 用户缓存填充速度相当慢.尽管初始插入速率大约为20,000次插入/秒,但用户缓存只会报告几百个,然后是几千个条目,并且增长速度非常慢.我可以将此归因于write_locking正在进行,但只是想提及它,以防它在解决手头的问题时非常重要.几个小时后,它达到约30,000个条目的平衡.

  • 碎片设置在早期并且快速增长.大约10个小时左右,我通常会100%碎片化.

  • 整体(操作码+用户)缓存使用稳定在240MB左右.它实际上永远不会超过这个水平.大约一天后,我将开始看到用户缓存高速缓存满计数(UCCFC)递增.

在撰写本文时,尽管APC报告280MB免费,我的UCCFC仍在62358并且还在增长.我有一个7200的user_ttl,但我也玩过它设置为0或其他数量,它对问题几乎没有影响.

我怀疑这个问题与碎片有关.现在我的服务器正在报告"碎片:100.00%(24740片段中280.0 MBy中280.0 MB)"和280 MB正好恰好是APC报告的可用空间量; 我想,这是个巧合.不幸的是,我在文档或其他地方发现了很少的信息来表明APC世界中"碎片化"真正意味着什么,而且似乎几乎没有任何东西可以避免它.

任何人都能解释这个问题吗?

php caching drupal apc

11
推荐指数
1
解决办法
3985
查看次数

事件驱动的CMS - 优点和缺点

我正在尝试确定具有事件驱动的CMS的一些优点和缺点.

事件驱动并不罕见.您可以在许多脚本语言中看到它,例如涉及客户端的Actionscript,javascript,jquery.如何在CMS中服务器上发生事件及其响应.这种方法有哪些优点或缺点,以及人们可能更喜欢的其他方法.

PS请注意,我仅使用Actionscript,JQ和JS作为示例.你意识到,当用这种方式谈论CMS时,事件和响应都是服务器端的东西.

编辑:我看到很多人说使用事件驱动是没有意义的,因为他们没有得到它是什么.已经使用这种方法的CMS系统之一是Drupal,所以相信我这是一种现有的方式,我不是从我的A中提取想法.它只是意味着CMS的"内部"(所有服务器端的东西)是事件驱动的.核心做它的事情并定义事件.插件可以响应这些事件以添加自己的逻辑.我提到Actionscript作为一个例子,因为客户端是这个概念最为人所知的地方,但它也可能在服务器端,可能与普通应用程序不相关,因此不是已知的.但是对于像CMS这样复杂的东西是有意义的,其他开发人员想要添加他们自己的插件,甚至更改CMS的预先构建的逻辑.

php actionscript zend-framework drupal content-management-system

11
推荐指数
2
解决办法
2094
查看次数

找出导致可怕的原因"该网站遇到意外错误.请稍后再试." 信息


在进行drupal 6到7升级时,我收到的消息并不那么有用"网站遇到意外错误.请稍后再试." 每次我去某些页面.ex)/ admin/config

找出导致致命错误的原因的最佳方法是什么,以便我可以修复它?

我现在能想到的就是在该页面工作或查看日志之前开始禁用提供的模块.

谢谢.

drupal upgrade drupal-7

11
推荐指数
2
解决办法
3万
查看次数

Drupal 7 - 如何从模块加载模板文件?

我正在尝试在Drupal 7中构建自己的模块.

所以我创建了一个名为'moon'的简单模块

function moon_menu() {
  $items = array();
      $items['moon'] = array(
      'title' => '',
      'description' => t('Detalle de un Programa'),
      'page callback' => 'moon_page',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK
  );

  return $items;
}

function moon_page(){


$id = 3;

$content = 'aa';

}
Run Code Online (Sandbox Code Playgroud)

在moon_page()函数中,我喜欢从我的主题文件加载自定义模板'moon.tpl.php'.

这可能吗?

drupal drupal-theming

11
推荐指数
2
解决办法
2万
查看次数

是否有适当的Drupal 7表单api managed_file教程?

我在互联网上搜索了半个小时,却找不到一个.

我想在D7中使用managed_file表单api来允许使用上传图像文件; 更具体地说,我认为"#upload_validators"属性可以起作用(如果可能的话,在上传之前验证文件扩展名;或者至少在验证阶段验证但不在提交函数中验证).我已经检查了示例模块中的image_example和file_example,但找不到它的正确用法.

所以我想知道是否有关于managed_file的正确教程?非常感谢.

更新:我在从file.field.inc搜索drupal目录后看到了一个示例,并按照示例编写了这样的代码:

$form['file_upload'] = array(
  '#type'   => "managed_file",
  '#title'  => t("Upload"),
  '#descripion' => t("Only Image Files are allowed."),
  '#progress_indicator' => "bar",
  '#upload_location'    => "public://img/dish",
  "#upload_validators"  => array("file_validate_extensions" => "png gif jpg"),
);
Run Code Online (Sandbox Code Playgroud)

这解决了这个问题.

drupal drupal-7

11
推荐指数
1
解决办法
1万
查看次数

打印drupal field_view_field值

我正在使用下面的代码将节点字段打印到特定区域,并且效果很好.但是这是一个我只想打印没有标签的字段值的实例.似乎应该很容易,但我遇到了一些麻烦.我很感激任何帮助,因为我对drupal很新.谢谢

<?php 
  print drupal_render(field_view_field('node', $node, 'field_description')); ?>
Run Code Online (Sandbox Code Playgroud)

printing drupal field render

11
推荐指数
1
解决办法
1万
查看次数

如何在drupal 7中实现hook_theme?

我创建了一个新的drupal 7主题并试图在template.php上实现hook_theme,如下所示:

function mytheme_theme($existing, $type, $theme, $path){
    return array(
        'mytheme_header'=>array(
            'template'=>'header',
            'path'=>$path.'/templates',
            'type'=>'theme',
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)

然后我将header.tpl.php放入模板目录并清除所有缓存,并调用主题函数:

theme('mytheme_header', $vars);
Run Code Online (Sandbox Code Playgroud)

和header.tpl.php赞了这个:

<?php
fb('calling header template');//the function of FirePHP to output debug info
print '<div>Header</div>';
//...
Run Code Online (Sandbox Code Playgroud)

我检查Firebug,它获取信息'调用标题模板',这意味着它已调用header.tpl.php,但它没有打印html代码.我的代码出了什么问题?

php drupal drupal-7 drupal-theming

11
推荐指数
1
解决办法
2万
查看次数

Drupal Commerce Line项目:改变价格?

我必须在购物车中添加一些自定义金额的订单项.商品保存,价格= 0,我的模块计算价格并将订单项添加到购物车/订单,但我不明白如何以编程方式设置价格.

我已经阅读了有关使用规则的内容,但我需要我的模块才能设置/更改价格,而无需调用规则.

我尝试使用实体包装器,我尝试更改使用commerce_product_line_item_new()创建的订单项,但什么都没有,当订单项进入购物车时始终具有原始产品价格(在我的情况下为0).

如何以编程方式更改订单项价格?

到目前为止我的代码看起来像:

// For debugging, this function is called by hook_menu()
function mymodule_test($product_id)
{
    global $user;
    $user = user_load($user->uid);

    $order = commerce_cart_order_load($user->uid);
    $order_wrapper = entity_metadata_wrapper('commerce_order', $order);

    $product = commerce_product_load($product_id);

    $line_item = commerce_product_line_item_new(
            $product,
            1,
            0,
            array(
            ),
            'cover'
    );

    $line_item_wrapper = entity_metadata_wrapper("commerce_line_item", $line_item);

    $line_item_wrapper->commerce_unit_price->data = commerce_price_component_add(
            $line_item_wrapper->commerce_unit_price->value(),
            'base_price',
            array(
                            'amount' => 1234,
                            'currency_code' => 'EUR',
                            'data' => array(),
            ),
            TRUE
    );

    $insert_line_item = commerce_cart_product_add($user->uid, $line_item_wrapper->value(), FALSE);

    return 'done';
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我尝试调整在commerce/modules/line_item/commerce_line_item.rules.inc中找到的commerce_line_item_unit_price_amount()的代码,但是这个测试:

<?php
    global $user;
    $product …
Run Code Online (Sandbox Code Playgroud)

drupal drupal-7 drupal-commerce

11
推荐指数
3
解决办法
2万
查看次数

如何在Drupal 8中以编程方式创建节点?

我正在Drupal 8中设计一个新模块.这是一个长期项目,至少几个月内不会上市,所以我用它来弄清楚什么是新的.

在这个模块中,我希望能够以编程方式创建节点.在Drupal 7中,我会通过创建对象,然后调用"node_submit"和"node_save"来完成此操作.

这些函数在Drupal 8中不再存在.相反,根据文档,"模块和脚本可以使用通常的表单API模式以编程方式提交节点." 我不知所措.这是什么意思?我已经使用Form API在Drupal 7中创建表单,但是我没有得到文档在这里说的内容.

我想要做的是基于不是直接从用户呈现的表单中获取的信息,以编程方式创建至少一个并且可能多个新节点.我需要能够:

1)指定内容类型

2)指定URL路径

3)设置以前已经过时的node_object_prepare()处理过的任何其他必要变量

4)提交新节点对象

我希望能够在一个独立的,高度抽象的函数中完成此操作,而不依赖于特定的块或形式.

那我错过了什么?

php drupal drupal-8

10
推荐指数
4
解决办法
2万
查看次数