Lavio: Блог

Главные вкладки

Возможно ли ограничить объем таблицы cache_menu средствами Drupal?

26 февраля 2015 в 13:53

Данная таблица постоянно разрастается до неимоверных размеров. У меня на хостинге общий объем не велик. Если ее чистить периодически, то это нужно делать 3-4 раза в день + оптимизацию БД, иначе занимаемый размер все равно останется большим. Крон рассматривается как самое последнее средство.

Ошибка "Skipped update 7103" после обновления Drupal Commerce.

22 октября 2014 в 21:14

Обновил модуль Drupal Commerce так как он говорил что там важное обновление по безопасности. В конце обновление он мне выдал:
"The following updates returned messages
commerce_checkout module
Update #7103
Skipped update 7103 because the variable commerce_checkout_run_update_7103 is not set. You must make sure usernames are not valid e-mail adresses on your own."

Погуглив нашел это

Собственно юзеров всего штук 5. У всех имена НЕ являются е-мейлами.
Даже если установить модуль Commerce Username Update он говорит что все в порядке с именами:
"Username status

Как добавить класс для пункта меню?

26 мая 2014 в 3:25

Установил у себя модуль modal_forms для выведения формы авторизации в модальном окне. Чтобы ссылка открывалась в модальном окне нужно прописать ей класс и задать определенны путь:

<?php
<class="ctools-use-modal" href="modal_forms/nojs/login">Modal Login</a>
?>

Как это можно сделать? И как сделать так чтобы ссылка показывалась только незарегистрированным пользователям?

Если это делать вручную через редактирование пунктов меню, то там нельзя добавлять или задавать классы. Также нельзя указать для кого должна отображаться ссылка.
Если это делать программно(hook_menu) тогда непонятно что делать с параметром page callback и как задать класс.

[Решено]Как программно сделать пункт меню видимым только для авторизованных пользователей?

20 мая 2014 в 6:11

Вот пример реализации пункта меню:

[Решено] Как программно определить роль пользователя?

19 мая 2014 в 19:20

Нужно программно получить под кем находится текущий пользователь (аноним или зарегистрированный) чтобы ему показать соответствующий контент.

P.S. Поиск пробовал. Все что я нашел там - это либо программное создание роли/пользователя, либо авторизация. Да, возможно не так искал. Просто не представляю как оно правильно называется.

[Решено]Почему может не отображаться пункт меню, созданный программно?

28 апреля 2014 в 4:07

Создал пункт меню:

<?php
$menu_item
['dopmenu'] = array(
'menu_name' => 'user-menu',
'title' => 'Пункт меню',
'page callback' => 'mymodul_proc',
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
);
?>

Очищаю кэш, включаю выключаю модуль, но пункт меню не появляется.

Если я правильно понял, функция menu_link_save просто создает пункт меню к уже существующей странице. Если страницы нет и она создается программно, то этой функции толку не будет?

Как создать модальное окно с собственной формой с помощью ctools?

14 апреля 2014 в 7:16

Есть кнопка, после того как на нее нажимаем нужно, чтобы появилось сообщение во всплывающем окне что все прошло успешно или были такие-то ошибки с кнопочкой "ok" чтобы человек подтвердил то что он прочитал уведомление. Сам текст сообщений формируется, вот как создать это модальное окно не знаю. Нашел описание для ctools на примере формы логина. Как туда передать свою форму, а не стандартную? Полагаю за это будет отвечать функция:

[Решено] Как получить значение поля из профиля текущего авторизованного пользователя?

16 марта 2014 в 20:55

На сайте авторизовался зарегистрированный пользователь. У него в профиле есть дополнительное поле field_dop. Каким образом можно получить значение этого поля для выполнение некоторых действий над ним?

Куда и как может исчезнуть самописный модуль?

17 февраля 2014 в 20:33

Есть самописный модуль: он создает блок, представляющий собой форму со строкой ввода и кнопкой, который передает значение на создаваемую им же страницу для обработки значений. Все работало до сегодняшнего вечера. Все что я сделал так это обновил пару модулей (libraries и еще какой-то) и переводы из отчета о состоянии. Исчезла блок-форма из интерфейса сайта. Полез ее искать в блоки где и включал - ее там нет. Тогда полез искать сам модуль и его нет в общем списке (проверил по всему списку отключенных и включенных модулей).

Как определить что именно (модуль или что-то еще) забивает таблицу cache_menu?

13 февраля 2014 в 11:18

За день работы сайта таблица cache_menu может разрастись от 0кб до 1,5ГБ (обычно 700мб). Крон срабатывает автоматически каждые 2 часа. Даже если его запускать в ручную то он не чистит эту таблицу. Также если нажать кнопку "очистить кэш" в админке друпала то таблица полностью очищается общий объем БД в phpmyadmin приходит в норму, однако общий объем БД, который можно посмотреть в инфе профиля у хостинга, остается большим (хоть и меньше чем до очистки cache_menu), а уменьшается до вменяемого размера только после оптимизации таблиц.

Каким образом можно передать данные из формы на другую страницу и вызвать ее отображение?

29 января 2014 в 7:38

Есть форма, реализована через блок, на ее выходе есть переменная. Есть страница созданная с помощью hook_menu. Каким образом можно передать значение параметра на эту страницу и вызвать ее отображение?

Какой параметр отвечает за контент в hook_page_alter?

28 января 2014 в 10:58

Нашел замечательный hook_page_alter
В мануале про него сказано очень мало. Возможно ли с его помощью заменить все содержимое "контента"? Если да, то как к нему правильно обратиться и что передать? Пробовал разными способами - не получилось. Например:

Вывод стороннего контента без сохранения в бд.

27 января 2014 в 6:04

Есть сторонний сервис туда передается запрос и он возвращает некоторые данные. Заносить ответ в БД друпала смысла не имеет, так как инфа будет меняться. Вопрос:
Как вывести на текущую страницу то чего нет в БД друпала, без создания страницы и без занесения в БД?

[Решено] Обновление ядра на версию которая старше текущей на несколько релизов.

15 декабря 2013 в 18:16

У меня была старая версия ядра 7.22. На сайте друпал.орг лежит уже 7.24. Я до нее успешно обновился, но теперь меня терзают смутные сомнения, что обновление предыдущий версии не включаются последнюю. То есть каждое новое обновление рассчитано так чтобы проапгрейдить только предыдущую версию, если разница между текущей версией ядра и последним обновлением больше чем 1 то все эти обновления не будут установлены, поставятся только входящие в последнюю версию. Или я ошибаюсь и беспокоиться не о чем?

Слайдшоу налезает на выпадающее меню.

15 октября 2013 в 16:55

Есть выпадающее вправо меню в левом сайдбаре(реализовано с помощью nice menus), также на главной есть слайдшоу (реализовано с помощью Views Slideshow).

Когда заходишь на сайт под незарегистрированным пользователем(аноним), затем наводишь мышку на меню оно выпадает поверх слайдшоу. Выдвигается новы слайд и наезжает (картинкой и текстом) на меню. Если зайти под зарегистрированным пользователем(админ, других пока нет) такой проблемы не возникает, все работает как надо.

В чем может быть причина и как ее решить.

Оплата при которой клиент сам указывает сумму платежа.

27 сентября 2013 в 10:24

Есть товары созданные при помощи drupal commerce с фиксированной ценой. Оплата происходит при помощи commerce robokassa. Как можно реализовать оплату услуги/товара чтобы клиент сам указывал сумму? Допустим, у нас нет необходимого товара в наличии, но мы можем его заказать, для этого нам нужна предоплата. Сам товар не создан на сайте, поэтому не получится сделать через высчитывание процента от стоимости.

[Решено] Не удаляется запись в таблице file_usage при удалении файла из поля сущности product commerce.

19 августа 2013 в 4:07

Установил модуль drupal commerce. Создал в нем свой тип товара у которого есть поле Изображение товара. Раньше при заполнение/удалении файлов через это поле в таблице file_usage не оставалось записей. Собственно, я случайно это заметил. Когда модуль FileField Sources, при удалении файла картинки, стал ругаться что файл занят другим модулем. Сначала думал что это FileField Sources не удаляет если через него действовать.

Разьяснения по Cron'у.

7 августа 2013 в 18:27

Да великие посылальщики, тут много тем по крону, которые можно найти в поисковике. Однако, ни в одной не нашел ответов на свои вопросы. Почти везде упоминается то как его запускать и расплывчатая формулировка того что он должен делать.
Из статьи понял что cron это некий набор важных задач, который запускается со стороны хостинга. Далее вопросы:

  1. Где можно посмотреть чем конкретно cron занимается в моем случае?
  2. Можно ли ему назначать через админку Друпала различные действия, туже очистку БД от кэша?

Быстродействие сайта и размер БД.

6 августа 2013 в 6:05

Спустя некоторое время работы сайта БД разраслалсь до 1,6 Гб. Исправил через phpmyadmin с помощью оптимизации таблиц. После чего ее размер сократился до 400 мб. Это при том, что на сайте пока особо ничего нет. Несколько нод, разве что довольно много модулей, и часто удалял в большом количестве ноды/товары когда разрабатывал модуль автоматической загрузки. Сейчас все товары и их дисплеи удалил. В последнее время сам сайт стал дико тормозить. После оптимизации БД дела пошли лучше, но все же это не то что было в начале(. Так вот, вопросы:

  1. Какого размера должна быть средняя БД для интернет магазизна? Количество товаров будет около 10000.
  2. Как можно оптимизировать CMS чтобы сайт не тормозил?

[Решено] Как добавить поле из товара drupal commerce в правило?

17 июня 2013 в 6:15

Есть тип товара со своими полями. Есть термин таксономии со своими полями. Нужно чтобы при обновлении термина правило смотрело у определенных товаров конкретное поле и если оно пустое то брать значение из аналогичного поля в термине.

Мое решение
Создаю событие После обновления существующего термина
Дальше добавляю Сущность имеет поле и указываю там поле из термина.

А дальше ступор. Как туда добавить поле из товара коммерца? Если делать аналогично через Сущность имеет поле то в селекторе нет сущности товара... Уже неделю ищу инфу по этому поводу, но так и не нашел(

[Решено] Как создать представление во views програмно?

19 ноября 2012 в 14:25

Есть модуль, который генерирует ноды с необходимой инфой. Есть несколько, уже созданных, представлений во views для отображения групп нод, различия в количестве столбцов. Как задать программно аналогичные представления меняя лишь фильтры для выбора конкретных нод и ссылку на новое представление?

[Решено] Как сделать перенос строки в description?

10 ноября 2012 в 14:31

Собственно нужно чтобы под элементом было описание типа:
*описание примечания 1
**описание примечания 2
Пробовал сделать так:

Как вывести иерархию меню?

10 ноября 2012 в 13:47

Есть свое меню, как сделать вывод иерархии меню в селекте? Аналог селекта "Родительская ссылка" выводится при создании/изменении пункта меню. Смысл такой: на форме висит данный селект мы выбираем пункт меню и он передает его id (mlid из таблицы menu_links ).

[Решено] Как правильно добавить свой php файл в свой модуль.

9 ноября 2012 в 15:01

Чтоб не захламлять .module решил создать свой файл со своим функционалом fuction.php. Как теперь его подключить к своему модулю чтоб можно было в .module вызывать функции из fuction.php?

Пробовал сделать так:
в .info прописывал files[]= fuction.inc
все три файла (mymodul.info, mymodul.module и fuction.inc) лежат в одно директории
К примеру в fuction.inc следующее

<?php
    
function first_function($a$b)
    {
    
$c=$a+$b;
    return 
drupal_set_message($c);
    }
?>

а в mymodul.module, конкретно в обработчике сабмита:

<?php
first_function
(1389);
?>

+ объявление формы, сабмита и т.д. не суть важно. Так вот при данном раскладе функция не срабатывает, но если функцию перенести в mymodul.module то все начинает работать.