1. 功能描述

  1. 如题目

    2. 开发

    2.1 背景

  2. 公司电商页面坑位采用存储一个json的方式来详细记录坑位信息

  3. 每个坑位最后对应的json对象如下,都有一个position_sign,以及各项配置信息:

    1. {
    2. "widget": "image",
    3. "name": "链接图片",
    4. "img_width": 750,
    5. "img_height": 80,
    6. "image": "",
    7. "activeImage": "",
    8. "position_sign": "pos1617762332396",
    9. "position_if": 0
    10. }

    2.2 开发思路

    1. 方案1

  4. 针对每个特定类型的widget,遍历每个json来处理

    2. 方案2

  5. 通过递归来处理

    2.3 落地开发

    1. 方案1

    2. 方案2

    1. <?php
    2. class EngineService
    3. {
    4. private function dfGeneratePageConfig($pageArr, $positionSign, $pageType, $goodsId, $goodsInfo, $isReplace)
    5. {
    6. if (!is_array($pageArr)) {
    7. return $pageArr;
    8. }
    9. foreach ($pageArr as $key => $value) {
    10. if (is_array($value)) {
    11. $pageArr[$key] = $this->dfGeneratePageConfig($value, $positionSign, $pageType, $goodsId, $goodsInfo, $isReplace);
    12. }
    13. if ($key === 'position_sign' && $value === $positionSign) {
    14. $this->replace($pageArr, $positionSign, $pageType, $goodsId, $goodsInfo, $isReplace);
    15. }
    16. }
    17. return $pageArr;
    18. }
    19. private function replace(&$pageArr, $positionSign, $pageType, $goodsId, $goodsInfo, $isReplace)
    20. {
    21. // do something
    22. }
    23. }