Colonizator 9 Опубликовано: 9 июля 2019 Рассказать Опубликовано: 9 июля 2019 (изменено) Сайт mapswater.com На сайте есть карта с метками (координаты каждой метки лежат в доп.поле у каждой новости). В коде шаблона метки выводятся через custom напрямую в js скрипт, который подключает яндекс карты. {custom template="placemark" categoryexclude="30" limit="1000" navigation="no"} Для категорий использую вот такой вывод: {custom template="placemark" category="{category-id}" categoryexclude="30" limit="1000" navigation="no"} - так, на карте выводятся метки тех новостей, которые присвоены просматриваемой категории. Однако на сайте основным типом контента - это страницы доп.полей с типом перекрестные ссылки: например https://mapswater.com/xfsearch/places/река+Березина/ И вот на таких страницах я также хочу вывести карту от яндекса, и показать только те метки, которые относятся к новостям, у которых доп.поле places содержит значение "река Березина" и т.д. в зависимости от того, какой урл просматривает юзер. Может есть какой-то очевидный способ сделать это стандартными средствами движка? Я не нашел и начал мудрить: В этом коде: {custom xfields="значение_поля" template="placemark" categoryexclude="30" limit="1000" navigation="no"} вместе значение_поля нужно подставить значение доп. поля из url Вытащил то, что мне нужно из url вот этим кодом: <?php $url = rawurldecode($_SERVER['REQUEST_URI']); $url_one = htmlspecialchars(str_replace("/", '', $url)); $url_two = str_replace("+", ' ', $url_one); $xfield = str_replace("xfsearchplaces", '', $url_two); echo $xfield; ?> Запихнул его в файл в папке engine/modules/mymod/mymod.php И пробую сделать вот такое чудо: {custom xfields="{include file='engine/modules/mymod/mymod.php'}" template="placemark" categoryexclude="30" limit="1000" navigation="no"} - но оно не срабатывает . Тег не обрабатывается и в html улетает вот такая строка: " template="placemark" categoryexclude="30" limit="1000" navigation="no"} Подскажите, кто знает - что не так? Изменено 9 июля 2019 пользователем Colonizator Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 9 июля 2019 Рассказать Опубликовано: 9 июля 2019 $xf = explode("/",$_GET['xf'] ); $xfield = end($xf); 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 9 июля 2019 Рассказать Опубликовано: 9 июля 2019 Открыть файл /engine/modules/functions.php найти if( preg_match( "#xfields=['\"](.+?)['\"]#i", $param_str, $match ) ) { Ниже вставить if ($match[1] == '__this__' && $dle_module == 'xfsearch') { global $xf,$xfname; if ($xf && $xfname) { $match[1] = $xfname . '|' . $xf; } } В custom использовать xfields="__this__" 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Colonizator 9 Опубликовано: 9 июля 2019 Рассказать Опубликовано: 9 июля 2019 (изменено) Автор 4 часа назад, alex32 сказал: $xf = explode("/",$_GET['xf'] ); $xfield = end($xf); да, ваш код определенно симпатичнее, только суть в том, что и мой выводит то, что мне нужно - проблема, в фигурных скобках, тег custom видит закрытую скобку и пытается это все обработать, а как еще подключить внутрь {custom} свой php файл я не знаю. @Gameer, спасибо, работает как нужно! Изменено 9 июля 2019 пользователем Colonizator Цитата Ссылка на сообщение Поделиться на других сайтах
Colonizator 9 Опубликовано: 11 июля 2019 Рассказать Опубликовано: 11 июля 2019 Автор В 09.07.2019 в 17:42, Gameer сказал: Открыть файл /engine/modules/functions.php найти if( preg_match( "#xfields=['\"](.+?)['\"]#i", $param_str, $match ) ) { Ниже вставить if ($match[1] == '__this__' && $dle_module == 'xfsearch') { global $xf,$xfname; if ($xf && $xfname) { $match[1] = $xfname . '|' . $xf; } } В custom использовать xfields="__this__" Заметил небольшой косяк. Если перейти по ссылке в которой значение доп.поля - второе в списке (в доп поле лежит строка "Охотское море, Ульбанский залив") https://mapswater.com/xfsearch/places/Ульбанский+залив/ То соответственно в __this__ отдается что-то другое, и тег custom ничего не выводит. Пытался ковырять - не выходит. Есть способ исправить? Или может подскажете, что лежит в переменных $xf,$xfname; ? Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 11 июля 2019 Рассказать Опубликовано: 11 июля 2019 42 минуты назад, Colonizator сказал: Заметил небольшой косяк. Если перейти по ссылке в которой значение доп.поля - второе в списке (в доп поле лежит строка "Охотское море, Ульбанский залив") https://mapswater.com/xfsearch/places/Ульбанский+залив/ То соответственно в __this__ отдается что-то другое, и тег custom ничего не выводит. Пытался ковырять - не выходит. Есть способ исправить? Или может подскажете, что лежит в переменных $xf,$xfname; ? Попробуйте это. Замените это $match[1] = $xfname . '|' . $xf; На это $match[1] = $xfname . '|%' . $xf; 2 Цитата Ссылка на сообщение Поделиться на других сайтах
Colonizator 9 Опубликовано: 11 июля 2019 Рассказать Опубликовано: 11 июля 2019 Автор Да! Оно, спасибо! Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 12 июля 2019 Рассказать Опубликовано: 12 июля 2019 4 часа назад, redisl сказал: Вот это мелочь такая, а заметили! Молодцы. Чего? Цитата Ссылка на сообщение Поделиться на других сайтах
Gotaaran 0 Опубликовано: 25 сентября 2019 Рассказать Опубликовано: 25 сентября 2019 Спасибо за ответ 😎 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.