Ответ 1
Вот как я мог бы решить это, используя JavaScript/front end.
var path = document.location.pathname;
path = path.split("/")[1]; // Should return the primary directory
path = path.toLowerCase(); // This should catch your.tumblr.com/Search and your.tumblr.com/search
if(path === "" || path === "search")){
console.log('Index or Search page');
}else{
// Run your function here
}
В принципе, если URL пути пуст или равен search
, тогда не запускайте функцию, а запускайте ее в любом другом случае.
Однако, как я уже говорил, это не на 100% надежнее. Поскольку путь может быть http://your.tumblr.com/#
, и функция будет терпеть неудачу, вам может потребоваться построить более явную логику (вы можете сказать, если path !== " "
для пустой строки).
Я все еще не уверен, почему это не очень хорошая идея на каждой странице. Если пользователи определенно не связаны со страницами на сайте, которые не маршрутизируются через индексную страницу. И если ваш код JavaScript не массивный, все его можно кэшировать с индексной страницы (но все же доступны со всех других страниц в случае hotlinking и т.д.).
ИЗМЕНИТЬ
В соответствии с приведенными ниже комментариями я создал базовый пример тестовой учетной записи Tumblr.
Код выглядит следующим образом:
var path = document.location.pathname;
path = path.split("/")[1];
path = path.toLowerCase();
if(path === "" || path === "about"){
$('body').css('background','#F09');
console.log('Index or about page');
}else{
$('body').css('background','#FC0');
console.log('Other page');
}
Страница Tumblr, которую я использую, приведена здесь: http://sg-test.tumblr.com/
(Я не думаю, что есть страница поиска, функция поиска - это блок, который вы вставляете или активируете в своем шаблоне и доступен на каждой странице.)
Функция в основном проверяет индексную страницу (пустой первичный каталог) или страницу about (замените это для поиска или другой страницы, если это необходимо).
Журналы консоли будут выводиться на каждой странице. И если путь соответствует индексу или я установил цвет тела розовым, иначе каждая другая страница будет оранжевой.
http://sg-test.tumblr.com/about (розовый фон)
http://sg-test.tumblr.com/post/134796799695/post-title (оранжевый фон)
По этой логике должно быть легко адаптировать функцию для выполнения вашего кода, если она соответствует требованиям к переменной пути, как в моем первом примере.
Как я уже упоминал, есть проблема с http://sg-test.tumblr.com/#. Это фактически все еще страница индекса, но наш тест возвращает false для пустого каталога, хотя Tumblr сопоставляет его на домашней странице.