Уважаемый камрад.
Я в консоль заглянул в первую очередь. То что, элемент сдвинулся за пределы экрана, я через инспектора и обнаружил. А что мне посмотреть в консоли? С чего начать копать, чтобы понять причину произошедшего?
Ссылки нет. Но в вашей ситуации и не требуется знать последовательность если вы будите использовать функцию с кешированием результата в статик переменной. Первый вызов функции (из любого места) всегде будет получать данные, остальные вызовы будут использовать уже "сохранённое" значение. Не важно, кто будет первым, шаблон или блок.
Логично предположить, что рендер контента блока происходит раньше чем срабатыават ваш альтер. Именно по этому нужна не глобальная переменная, а геттер функция , которая получает данные если их нет и потом возвращает.
Уважаемый камрад, огромное Вам спасибо за терпеливое внимание к моим вопросам.
Определять предпочтительный город/поддомен и выводить текущий город - это разные задачи, разные функции.
Определять предпочтение надо как можно раньше (в инициализиции, в миддлварах где-нить), чтоб в случае чего редиректнуть на желаемый домен. А получить имя текущего города - это уже что-то где-то возле вьюсов и шаблонов.
Как думаете для чего возле переменной стоит ключевое слово static?
С точки зрения программирования, мы именно программированием и занимаемся.
Даже если допустить, что вам нужна глобальная переменная... Но сессия то вам зачем?
Ну да! Это логично и правильно с точки зрения программирования.
Но, с другой стороны получается, что функция будет вызваться по несколько раз на одной и той же странице. Не проще вызвать ее один раз при формировании страницы, запомнить город в глобальной переменной и пользоваться ей?
Осталось понять где это место - "при формировании страницы".
Зачем? Я так понимаю каждому городу свой поддомен? Почему не использовать поддомен чтоб получить текущий город?
Что именно зачем?
В принципе по поддомену и выбирается город, он и заносится в глобальную переменную. Или Вы имели в виду зачем он туда заносится?
То есть, например, сделать функцию, возвращающую название города по поддомену и вызывать ее в тех местах где надо?
Камрады, привет! Извините за долгое отсутствие.
Вопрос маленько изменю, так как в некоторых вещах пришло понимание, но над одной "странностью" сломал голову.
И так. Исходные данные не изменились: Drupal 7. Модули Domain Access, Taxonomy. В Таксономии - города.
Города выбираются из Представления (каждый город в виде гиперссылки со своим параметром). После выбора города происходит переход на соответствующий поддомен.
Весь "хоровод" вертится вокруг глобального массива _SESSION. Так было сделано изначально и сейчас пока не время это менять.
Есть еще таблица связанная с модулем - domain_export. В ней было записей меньше, чем в таблице domain. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.
Ура! Разобрался в логике работы модуля. Модуль, кстати, называется Domain Access.
Есть еще таблица связанная с модулем - domain_export. В ней было всего 5 записей. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.
Уважаемый камрад.
Я посмотрел структуру таблицы. Поле ID является уникальным, но без автоинкремента. Также оно является первичным ключом. Это 100%. Для точности: поле называется не ID, но не думаю что это важно.
Через интерфейс модуля успешно добавляли новые записи пару лет назад. За прошедшее время успели обновить ядро drupal. Но всё это я не застал.
Модуль обновил до последней рабочей версии.
Я так понимаю, что придется капать в коде модуля и смотреть что от куда берется?
Уважаемый камрад.
Спасибо за ответ. Функции max() и count() я изучил. Запросы SQL касался поверхностно.
Запросы к БД сделаю. Посмотрю что выйдет.
Запрос показал значение Null. То есть, автокремента нет.
Значит сам модуль генерирует новое значение для ключевого поля, так?
А разработчик модуля написал, что это значение автоматические генерируется из drupal_write_record(). Вот его ответ:
It is auto-generated from drupal_write_record(). I don't recall how that code looks up the value to use.
Drupla 7. Модуль "Accordion menu" перестал корректно работать в Chrome обновления браузера
Уважаемый камрад.
Я в консоль заглянул в первую очередь. То что, элемент сдвинулся за пределы экрана, я через инспектора и обнаружил. А что мне посмотреть в консоли? С чего начать копать, чтобы понять причину произошедшего?
Благодарю.
Каким образом добавить динамическое содержимое в node?
Еще раз, большое Вам спасибо.
Каким образом добавить динамическое содержимое в node?
Уважаемый камрад, огромное Вам спасибо за терпеливое внимание к моим вопросам.
Каким образом добавить динамическое содержимое в node?
Каким образом добавить динамическое содержимое в node?
Каким образом добавить динамическое содержимое в node?
Каким образом добавить динамическое содержимое в node?
Ну да! Это логично и правильно с точки зрения программирования.
Но, с другой стороны получается, что функция будет вызваться по несколько раз на одной и той же странице. Не проще вызвать ее один раз при формировании страницы, запомнить город в глобальной переменной и пользоваться ей?
Осталось понять где это место - "при формировании страницы".
Каким образом добавить динамическое содержимое в node?
Что именно зачем?
В принципе по поддомену и выбирается город, он и заносится в глобальную переменную. Или Вы имели в виду зачем он туда заносится?
То есть, например, сделать функцию, возвращающую название города по поддомену и вызывать ее в тех местах где надо?
Каким образом добавить динамическое содержимое в node?
Камрады, привет! Извините за долгое отсутствие.
Вопрос маленько изменю, так как в некоторых вещах пришло понимание, но над одной "странностью" сломал голову.
И так. Исходные данные не изменились: Drupal 7. Модули Domain Access, Taxonomy. В Таксономии - города.
Города выбираются из Представления (каждый город в виде гиперссылки со своим параметром). После выбора города происходит переход на соответствующий поддомен.
Весь "хоровод" вертится вокруг глобального массива _SESSION. Так было сделано изначально и сейчас пока не время это менять.
Domain Access. Ошибка при добавлении нового поддомена.
Спасибо, камрады. Разобрался.
Есть еще таблица связанная с модулем - domain_export. В ней было записей меньше, чем в таблице domain. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.
Где функция drupal_write_record() берёт значения для уникальных индексных полей?
Ура! Разобрался в логике работы модуля. Модуль, кстати, называется Domain Access.
Есть еще таблица связанная с модулем - domain_export. В ней было всего 5 записей. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.
Где функция drupal_write_record() берёт значения для уникальных индексных полей?
Уважаемый камрад.
Я посмотрел структуру таблицы. Поле ID является уникальным, но без автоинкремента. Также оно является первичным ключом. Это 100%. Для точности: поле называется не ID, но не думаю что это важно.
Через интерфейс модуля успешно добавляли новые записи пару лет назад. За прошедшее время успели обновить ядро drupal. Но всё это я не застал.
Модуль обновил до последней рабочей версии.
Я так понимаю, что придется капать в коде модуля и смотреть что от куда берется?
Где функция drupal_write_record() берёт значения для уникальных индексных полей?
Уважаемый камрад.
Посмотрел, в таблице данное поле не автокриментно. Но уникально. Значит сам модуль отвечает за корректность значений в этом поле?
Где функция drupal_write_record() берёт значения для уникальных индексных полей?
Уважаемый камрад.
Спасибо за ответ. Функции max() и count() я изучил. Запросы SQL касался поверхностно.
Запросы к БД сделаю. Посмотрю что выйдет.
Запрос показал значение Null. То есть, автокремента нет.
Значит сам модуль генерирует новое значение для ключевого поля, так?
А разработчик модуля написал, что это значение автоматические генерируется из drupal_write_record(). Вот его ответ:
It is auto-generated from drupal_write_record(). I don't recall how that code looks up the value to use.
Скажите, куда мне дальше копать?
Domain Access. Ошибка при добавлении нового поддомена.
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '15' for key 'PRIMARY': INSERT INTO {domain} (domain_id, subdomain, sitename, scheme, valid, weight, is_default, machine_name) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => 15 [:db_insert_placeholder_1] => sevastopol.nopss.ru [:db_insert_placeholder_2] => Национальная Организация Поддержки и Со