You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何永久设置Piwigo-OSM插件的category变量为35?

固定Piwigo OpenStreetMap插件的Category为35

问题说明

我需要将Piwigo的OpenStreetMap插件页面永久固定为category 35,当前访问链接中category变量为35,但希望无需手动传递参数也能默认加载该分类的内容,涉及插件文件为map2.tpl和functions_map.php。

解决方案

修改functions_map.php中的查询逻辑

我们需要强制插件的两个核心数据查询函数始终使用category 35的筛选条件,忽略页面传入的其他分类参数:

1. 调整osm_get_gps函数

替换原有的动态条件判断代码,直接硬编码category 35的筛选规则:

function osm_get_gps($page)
{
    // 强制固定为category 35
    $LIMIT_SEARCH = "FIND_IN_SET(35 , c.uppercats) AND ";
    $INNER_JOIN = "INNER JOIN ".CATEGORIES_TABLE." AS c ON ic.category_id = c.id";

    $forbidden = get_sql_condition_FandF(
        array
        (
            'forbidden_categories' => 'ic.category_id',
            'visible_categories' => 'ic.category_id',
            'visible_images' => 'i.id'
        ),
        "\n AND"
    );

    /* Get all GPX tracks */
    $query="SELECT i.path FROM ".IMAGES_TABLE." AS i
            INNER JOIN (".IMAGE_CATEGORY_TABLE." AS ic ".$INNER_JOIN.") ON i.id = ic.image_id
            WHERE ".$LIMIT_SEARCH." `path` LIKE '%.gpx' ".$forbidden." ";

    return array_from_query($query, 'path');
}

2. 调整osm_get_items函数

同样替换原条件判断逻辑,强制使用category 35:

function osm_get_items($page)
{
    // 强制固定为category 35
    $LIMIT_SEARCH = "FIND_IN_SET(35 , c.uppercats) AND ";
    $INNER_JOIN = "INNER JOIN ".CATEGORIES_TABLE." AS c ON ic.category_id = c.id";

    // 保留原函数后续的其他查询逻辑(如$forbidden、最终SQL语句等)
    // ...
}

逻辑说明

  • 原函数通过$page参数动态获取当前页面的分类信息,修改后直接跳过动态参数判断,硬编码了category 35的筛选条件,确保SQL查询始终只加载该分类下的内容。
  • 若只需精确匹配分类35本身(不包含子分类),可将FIND_IN_SET(35 , c.uppercats)改为ic.category_id = 35,同时删除INNER JOIN语句。

可选:隐藏分类切换控件(若存在)

如果map2.tpl模板中有允许用户切换分类的控件,找到对应代码段并注释或删除,避免用户看到无效的分类切换选项。

内容的提问来源于stack exchange,提问作者Vincent Dc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:15:30