php 示例导出脚本,用于将MODX资源转换为CSV条目,以便在另一个站点中导入。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 示例导出脚本,用于将MODX资源转换为CSV条目,以便在另一个站点中导入。相关的知识,希望对你有一定的参考价值。

<?php
// Only run this via SSH
if (PHP_SAPI !== 'cli') return;
// Sometimes helpful if processing lots of Resources
ini_set('memory_limit', '2048M');
// Init @modx
@include(dirname(__FILE__) . '/config.core.php');
if (!defined('MODX_CORE_PATH')) define('MODX_CORE_PATH', dirname(__FILE__) . '/core/');
include_once (MODX_CORE_PATH . "model/modx/modx.class.php");
$modx= new modX();
$modx->initialize('web');

// Options
$template = 1;
$resClass = 'modDocument';
$tvnames = array_flip(array('someTV', 'anotherTV', 'thirdTV'));
$filename = 'export.csv';

// Query Resources
$c = $modx->newQuery('modResource');
$c->where(array(
    'template' => $template,
    'class_key' => $resClass,
    ));
$resources = $modx->getCollection('modResource', $c);

// Create a "template" Resource
$template = $modx->newObject($resClass);
$template = $template->toArray();

$idx = 0;
// Open a file handle
$file = fopen($filename, 'w');
foreach ($resources as $res) {

    // get resource fields
    $id = $res->get('id');
    $fields = $res->toArray();
    
    // merge in tvnames
    $fields = array_merge($template, $fields, $tvnames);
    // add idx for reference
    $fields['idx'] = $idx;
    // get tvs from resource
    $tvs = $res->getMany('TemplateVars');
    foreach ($tvs as $tv) {
        $tvname = $tv->get('name');
        // if the tv isn't in our list, skip it
        if (!isset($fields[$tvname])) continue;
        // if you want the raw value you can do this
        //$rawValue = $tv->getValue($id);
        $processedValue = $tv->renderOutput($id);
        // set the value
        $fields[$tvname] = $processedValue;
    }
       
    // first column of the csv should have headers
    if ($idx === 0) {
        $columns = array_keys($fields);
        fputcsv($file, $columns);
    }
    // write the row
    fputcsv($file, $fields);
    $idx++;

}
// close file handler
if (!fclose($file)) echo 'problem closing file';
exit();

以上是关于php 示例导出脚本,用于将MODX资源转换为CSV条目,以便在另一个站点中导入。的主要内容,如果未能解决你的问题,请参考以下文章

在 MODx 革命中,如何将容器内资源的编辑限制为用户组?

sh 用于添加非MODX站点的脚本

sh 用于添加非MODX站点的脚本

MODX - 访问从 ResourceList 获取的电视资源并使用 getImageList 显示

php 检测当前MODX资源是否在预定义的“部分”列表中,如果是,则返回字符串(例如CSS类名)。

php 检测当前MODX资源是否在预定义的“部分”列表中,如果是,则返回字符串(例如CSS类名)。