Добрый день уважаемые. На этом форуме в процессе поиска уже несколько раз поднимался вопрос скрытия блока обширного сквозного меню, но кроме <!--noindex--> и <!--googleoff: all-->
ничего конкретного предложено не было. В сети нашел решение, но как заставить его работать на друпал не знаю в php и js ноль. Вобщем что сделал:
В файле page.tpl.php в нужном мне месте вставляю пустой блок <div id="hidden"></div>
,
создаю файл hidden.php с кодом <?php print render($page['menu_top']); ?> который выводит регион,
далее создаю js файл с кодом
$(document).ready(function() {
$('#hidden').load('ПУТЬ К ФАЙЛУ/hidden.php');
});
</script>
и подключаю этот файл через template.php следующим образом drupal_add_js('ПУТЬ К ФАЙЛУ/hidden.js', 'file');
Но в шаблоне выводится только <div id="hidden"></div>
и не работает js , в разделе производительность галку с объединения файлов js снял и кеш чистил, но результата нет. В чем ошибка может быть?
И еще. В данном примере я пытаюсь вывести целый регион этим JS-ом. В этом регионе расположено сложное сквозное меню с большим числом ссылок сформированных wievs и двух вкладок с js формами партнерок. У меня есть опасения что js формы будут работать не корректно. В идеале мне нужно выводить через JS только два блока со ссылками. Но как сделать это я вообще не понимаю.
Заранее благодарю за помощь!
Комментарии
Тему не читал, это не нравится чот в коде.
Мне кажется это должно быть реализовано на колбэке.
Идите учите друпал, php и js. У вас подход к решению проблему неверный в корне. Если нужно срочно, то вам в раздел размещения заказов
Отличный ответ. Насчет "корня" вынужден не согласиться, а вот на счет того что код не подходящий тут безусловно)))
В дополнение ко второй части вопроса поясню использую MD Megamenu платный модуль с мегадрупала ком и могу в пункты меню вставлять любые блоки в том числе и с представлениями. Так вот как раз вывод конкретных блоков более интересен чем целого региона.
ajaxblocks попробуйте.
Этот модуль ни коим образом не скроет содержимое от индексации ПС, а у меня главная задача отдать роботу ПС пустой див а пользователю удобное меню, дабы не терять вес с нод, и в то же время не ущемлять навигацию.
https://drupal.org/project/megamenu бесплатно делает тоже самое лол
Ну вы посмейтесь, а потом поставьте два модуля и сравните функционал
это называется seo головного мозга
Да, можете это назвать именно так. А за ответ по существу, как всегда, Спасибо!
И SEO головного мозга считаю немного лучшим, чем отсутствие оного вовсе. Запулить на страницу меню из сотни ссылок и сделать целевую страницу нулевкой по весу это дааа, это гут ))) и никакого seo, как вы там говорите, этого, как его... мозга!
открой в браузере site.ru/ПУТЬ К ФАЙЛУ/hidden.php и посмотри ,что он выводит - убедишься в своем диагнозе
я чтото плохо читал про hhtml5, или таки средствами разметки нонче можно показать поисковикам чего зя брать, а чего низзя?
это клоакинг, по существу: menu_attributes, всем пунктам меню ноуиндекс, ноуфаллоу
Клоакинг, клоакингу рознь и анализируя конкурентов, именно крупных конкурентов, входящих в 10-ку по LI в моей тематике - пользуются люди и пользуются успешно. И как показывает практика по всем закрывающим атрибутам и ноуиндексам вес по ссылкам уходит и уходит существенно. Конечно не в каждой тематике такое треба, и еще много зависит от перелинковки в целом но...
И... можете закрывать тему. От местного народа трудно получить помощь, разве что еще кто по умничает и диагнозы поставит)))
Если бы умел все это выстроить в рабочую модель помощи бы не просил)))
Так а, собственно, нужный вам js-файл подключился или нет, а то из вышенаписанного не совсем это ясно? Галку с объединения снять можно, но толку от этого, если скрипта и в помине в коде страницы нет.
Кстати, если скрипт лежит в отдельном файле с расширением .js, не нужно его код в теги брать
JS файл подключился но регион как был пустым дивом так им и остался. Попробовал в ПХП файле заменить вывод региона на
<?php if (isset($page['menu_top'])) { echo render($page['menu_top']); } ?>
но результата нет.бида-пичаль
php не пробывал учить ,хотя бы основы?
Вот не лень же поучать)))Учить да, не пробовал))) Но по аналогии именно таким образом в template.php выводятся другие регионы и тот который нужно. Но видать через отдельный файл нужно как то иначе.
я даже не пробовал, но уверен что это там не прокатит. Temaplate.php не для этого. В нем максимум результат рендера можно передать на страницу, но никак не принтить. Куда он запринтит?
в таком случае тебе нужно разместить топик в разделе поиска специалистов
тут тебе могут только помочь ,но не решать полностью твою задачу,с которой ты сам однозначно не справишься
прокатит
и куда это эхо влепит результат?
сразу после
<body>
.
Интересно, где ты нашел просьбу о решении с нуля, алгоритм полностью предложен встает вопрос в правильности кода двух файлов JS и PhP и в том и другом 3-4 строчки кода, а поучений и подъе...ок на два дня. Сколько на твой взгляд будут стоить эти 8 строк кода ась? Да если подумать и самому себе сказать по чесноку то руб 300 макс., а вот кому нужно за эти 300 р. себе голову морочить. А объективно, эта работа больше не стоит. Поэтому топик и создан именно здесь.
так я же тебе говорил как проверить
посмотри ,что выводит твой файл ,а точнее что не выводит
и вчитайся в текст ошибки
Именно таким образом не выводит ровным счетом ничего, даже ошибок не выводит (исходный код страницы - чистый лист). Но... именно этот код в темплэйте выводит нужный мне регион. Но на сколько могу понять ошибка логики в том, что на готовую страницу попадает не сам этот код, а результат его работы, а в отдельном файле как уже было сказано в таком виде он не выполняется.
значит вывод ошибок на сервере выключен
вставь вначале файла
ini_set("display_errors", 1);
C первым вариантом
<?php print render($page['menu_top']); ?>
Fatal error: Call to undefined function render() in, а со вторым<?php if (isset($page['menu_top'])) { echo render($page['menu_top']); } ?>
просто полная пустотаа если без проверки
echo render($page['menu_top']);
Без, та же песня, что и в первом варианте.
потому что в файле не определены ни функция render ни переменная $page
посмотри в файл index.php и увидишь как происходит бутстрап
вот именно, что алгоритм в корне неверный, я об этом сказал еще вначале. Если бы он был верный, чтобы нам мешало подсказать вам, где у вас ошибка?
Первый вменяемый ответ по теме, без посылов к "учебникам". Раз неверный сменю раздел форума )))