如何永久设置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
相关产品推荐
相关产品推荐

