Принудительно показывать пустые блоки с кастомным текстом в них
По аналогии с пустым текстом для блоков, предоставляемых вьюсами, но для обычных системных или блоков от других модулей
Что нибудь попроще
По аналогии с пустым текстом для блоков, предоставляемых вьюсами, но для обычных системных или блоков от других модулей
Что нибудь попроще
Всем, в том числе и мне, известно, что при установке Друпал подхватывает переводы для того или иного модуля, если он лежит в папке модуля по адресу translations/код_языка.po, а как быть с переводами для системных файлов .inc в директории /includes?
Неужели только ручками? Сразу скажу, что вариант с объединением перевода для /includes с каким нибудь переводом модуля не подходит по некоторым причинам - всё должно быть отделено
Пробовал ложить перевод в includes/translations/код_языка.po и это не работает
Парни, как я понял Features не поддерживает дефолтные вьюхи (т.е те, которые прописаны в файлах), вопрос:
Есть модуль который имеет дефолтный вид и использует его. Я не могу просто выключить его вьюху и создать свою - он использует только свою и это в коде
Его вьюху можно переписать вручную, а как это сделать програмно? Задача переписать вид модуля через инсталляционный профиль.
Вопрос скорее по PHP сломал мозг, не могу понять, в чём дело
<?php
Fatal error
При установке модуля domain access как известно требуется добавить в settings.php строчку со ссылкой на его конфиг
У меня этот модуль ставится из установочного профиля. Так как я не могу записать нужную строку в settings.php перед установкой системы (установка не пойдёт вообще), то я решил записывать нужную строку на конечном этапе установки
Соорудил код:
<?php
function write_domain_conf () {
$modules = module_list(FALSE, TRUE, FALSE, NULL);
if (in_array('domain', $modules)) {
global $base_path;
$filename = $base_path . conf_path() . '/settings.php';
$path = $base_path . 'sites/all/modules/domain/settings.inc';
$conf = "include '$path';";
chmod($filename, 0777);
if (is_writable($filename)) {
fopen($filename, 'a+');
fwrite($filename, $conf);
fclose($filename);
}
chmod($filename, 0444);
}
}
?>
Это не работает, думаю дело в правах. Директории, в которых находится settings.php имеют права 777, сам settings.php тоже как бы должен иметь 777 (тот же владелец ведь?)
В чём может быть проблема?
Профиль установки, с самого начала, заменить системный Гарланд на свою, которая используется только при установке
Без хака ядра, кто нибудь делал?
Никогда не обращал на это внимание, но сегодня, в процессе написания профиля установки, столкнулся с тем, что юзер №2 никак не хочет создаваться. Первым идёт админ, второго нет. Пробовал обновлять запросом - ноль эффекта, всё так же юзер №3 самый первый за админом. Встречал скудные упоминания об этом баге на орге, вроде связано с БД.
Кто нибудь из знатоков MySQL просветите, почему есть юзер 1, но нет №2?
Часто встречаю.
Объясните тайный смысл.
Коллеги, подскажите максимально простой способ загрузки перевода сборки из одного большого .po из профиля установки
Я смотрел установочный профиль Open Atrium, там используется l10n_update, который тянет перевод с ихнего сервера. Это нехило так усложняет задачу, завести свой сервер локализации у меня в планах явно не на первом месте.
Более лёгкий способ?
Спасибо.
Ситуация: есть некоторая абстрактная сборка Друпал
Сборка настроена от а до я, что подразумевает использование дампа БД. В процессе тестинга вносятся правки как в код, так и в БД.
С патчем файлов всё ясно, чего не скажешь про БД.
Посоветуйте софт для Mysql который:
1) Желательно фриварный
2) позволяет сравнивать два варианта .sql дампа и создавать патч в виде готового к выполнению .sql запроса, который можно выполнить, скажем в PhpMyAdmin
Кто-то практически таким занимался?
Задача организовать демосайт. Юзеры смогут входить с ролью demo и творить всё, что вздумается ПОЧТИ как админ
Поскольку сайт не статичный, предполагается добавление/изменение модулей, соответственно галочки на странице управления правами тоже будут изменяться. Следить постоянно за галочками не хочется
Хочу сделать модуль, который бы брал права админа (другими словами, забирал бы все доступные права всех модулей), отсеивал те, что связаны с безопасностью и автоматически апдейтил роль demo
пример кода
<?php
$rows
Есть нода 'page', которая имеет опционное поле изображения 'banner'. Также эта нода может быть добавлена в очередь (модуль nodequeue). Этот модуль добавляет в $links ноды свои ссылки для добавления текущей ноды в ту или иную очередь. Я хочу скрывать некоторые ссылки для добавления ноды в определённые очереди, если поле 'banner' не содержит картинки - дабы не смущать редактора сайта ненужными линками.
В template.php пишу
<?php
function frontend_links($links, $attributes = array()) {
if (arg(0) == 'node' && is_numeric(arg(1))) {
if (user_access('manipulate queues')) {
$node = node_load(arg(1));
$banner = $node->field_banner['content'];
foreach ($links as $key=>$value) {
$link_item = explode(' ', $key);
if ($link_item[1] == 'nodequeue-toggle-q-1' && !$banner) {
unset($links[$key]);
}
}
}
}
return theme_links($links, $attributes = array('class' => 'links'));
}
?>
Это должно работать, но вот вызов node_load() приводит к тому, что сайт вообще не открывается - просто 404 ошибка. Где грабли?
Кстати, подскажите есть ли другой способ отловить массив $links. Хотел через препроцесс, но там уже поздно - линки идут уже готовой строкой
Я на таб администратора "Редактировать ноду" (табы, что на странице полного просмотра ноды) навесил drupal_get_destination(), так чтобы возвращаться на отредактированную страницу
Всё чудно, но вот если я вдруг захочу удалить ноду, то возвращаюсь, понятно, на удалённую страницу, что неприятно.
Вот что я предпринял
<?php
Проблема думаю знакома многим: если вложенные дивы имеют определённое свойство float, родительский див "теряет" высоту, что приводит к тому, что дивы снизу наезжают на этот див
Задавать жёстко высоту не всегда приемлемо.
Фикс, о котором знают наверняка опытные верстальщики, но стал откровением для меня
Господа, кто выводил виджет ввода тегов в node.tpl.php от модуля Community Tags ?
Никак не могу осилить, печатаю такое
<?php
Форма логина, хочу заменить кнопку входа через Твиттер на свою+дополнительно обернуть в стили
<?php
Задача удалить из сорца определённый js от определённого гуманным способом, например через препроцесс
Озадачен: массив с css нашёл, а по скриптам непонятно что-то. $vars['scripts'] выдаёт всё скопом, суть string, это не подходит
Идеи?
Айтемы в сворачивающемся поле. Всё выводится через drupal_render(), (препроцесс формы редактирования
Переопределяю вес пунктов, ключ #weight => разный вес,от 1 до 10, #sorted => TRUE
Упорно не хочет сортироваться. Что делаю не так?
Как известно, к ссылкам на страницах стандартного каталога Ubercart можно приаттачивать изображения, которые призваны визуально намекать юзеру, что его ждёт на следующей странице категории. Картинки можно загружать вручную на страницах терминов товарного каталога Ubercart.
Но сегодня я словил себя на мысли, что при определённом количестве категорий вручную грузить по картинке для человека интеллектуального труда довольно утомительно. Что если для картинки категории использовать какую-то картинку товара, который находится в этой категории? Релевантность будет соблюдена.
Я написал простой модулёк под кодовым названием uc_cat_auto_pic который занимается тем, что добавляет чекбокс и селект выбора доступных пресетов на страницу настроек каталога (admin/store/settings/catalog/edit).
Если чекбокс отмечен, ссылки категорий, для которых не загружена картинка, заимеет картинку из вложенных в эту категорию нод (поле field_image_cache или что там у вас). Также теперь мы можем быстро изменять пресет картинок категорий, который по дефолту намертво зашит в код uc_category
Установка модуля подразумевает некое таинство. Чтобы переопределить функцию theme_uc_catalog_browse() я не нашёл ничего лучшего, как вставить в template.php такое:
<?php
function phptemplate_uc_catalog_browse($tid = 0) {
$catalog = uc_catalog_get_page($tid);
if (variable_get('uc_cat_auto_pic', FALSE) && module_exists('uc_cat_auto_pic') && !empty($catalog->children)) {
return uc_cat_auto_pic_catalog_browse($tid); // Catalog Auto pictures handler
} ?>
Разбираюсь со сложными(для меня) SQL запросами.
Практический пример:
есть термин таксономии, скажем 10, имея который, нужно взять пути к файлам поля Imagecache в нодах, которые имеют тип 'product' и помечены этим термином (т.е id 10). Пути к файлам нужны не все, а один, скажем первый встреченный.
Я довольно быстро настрочил такое:
<?php
$childterm
= 10; // Термин;
$result = db_fetch_array(db_query("SELECT node.vid FROM node
JOIN term_node ON node.vid=term_node.vid
WHERE term_node.tid=$childterm
AND node.type= 'product'
LIMIT 0, 1"));
$nvid = $result['vid'];
$result = db_fetch_array(db_query("SELECT field_image_cache_fid
FROM $image_table
WHERE vid = '%d'", $nvid));
$fid = $result['field_image_cache_fid'];
$result = db_fetch_array(db_query("SELECT filepath FROM files
WHERE files.fid = '%d'", $fid));
$filepath = $result['filepath'];
?>
Невооружённый взглядом видно, что тут аж 3 запроса+гора быдлокода, но это работает
Мне на Stackowerflow подсказали такой код:
<?php
$childterm
= 10; // Термин;
$sql = "SELECT f.filepath FROM {node} AS n
INNER JOIN {term_node} AS t ON t.nid = n.nid
INNER JOIN {content_field_image_cache} as c ON c.nid = n.nid
INNER JOIN {files} AS f on f.fid = c.fid
WHERE n.type = '%s'
AND t.tid = '%d'";
$result = db_query($sql, 'product', $childterm);
?>
Туплю уже пару часов, не могу понять почему не работает
Задача взять ноды с типом product и термином под номером 12.
Соорудил такое и ничего,абсолютно
<?php
$sql
Ссылка на главной, в блоке (задаётся через препроцесс) такого вида:
<?php
$link
= l('<span>' . t('enable/disable block') . '</span>', 'admin/build/block' ,
array(
'attributes' => array(
'title' => t('enable/disable or change region for this block'),
'class' => 'block-config',
),
'query' => drupal_get_destination(),
'html' => TRUE,
)
);
?>
Идея всего - возвращать юзера на главную после сабмита формы. Всё работает, если, скажем редактируется содержимое блока, т.е ссылка вида
но вот с формой управления блоками назад возвращать никак не хочет. В чём трабла?
Эпопея с прихорашиванием д.орг продолжается. Сменился шрифт, во всяком случае у меня. теперь "DejaVu Sans". Будь проклят тот день, когда Друпал отдали на откуп чёртовым импруверам
Сабж. Есть идеи?