Платформа для тестирования
Замечательный сервис (simplytest.me) для автоматической сборки и тестирования CMF Drupal и Contrib модулей.
Пару минут, несколько настроек. И готова сборка Drupal.
Замечательный сервис (simplytest.me) для автоматической сборки и тестирования CMF Drupal и Contrib модулей.
Пару минут, несколько настроек. И готова сборка Drupal.
API реализующий функционал импорта данных из любого формата (CML, XML, CSV, TXT) в Drupal.
Состоит из управляющего модуля importkit и дочерних модулей, реализующих функционал хранения и удаления данных.
Модуль построен на патерне Observer с применением фабрики классов. Основной принцип взаимодействия с импортируемым контентом возложен на ридеры.
При работе с features важно не допускать ошибки при работе с Feilds API, инаяе впоследствии разгадать причину некорректного Revert представляет большую сложность.
Некоем случае не заносить в feature поля созданные другими модулями фичи.
С такой проблемой я столкнулся при экспорте полей модуля metatags_quick.
Подробности тут: http://docs.mirocow.com/doku.php?id=blog:2012:08:02
Когда поможет:
* Если криво встала тема
* Если надо перенести файлы в модуле
* Если надо перестроить классы
* Если тема не поднялась
* Если изменили меню роут
* Если создали новую функцию или класс
* При разработке тем
* При разработке модулей
* При разработке классов модулей (При использовании auto_load)
Решение:
Создаем файли в корне рядом с index.php. И называем его к примеру fix.php.
Далее запускаем его http://ваш-сайт/fix.php
Скрипт отработает и если увидите Done, то ваш сайт восстановлен
<?php
define('DRUPAL_ROOT', getcwd());
define('MAINTENANCE_MODE', 'update');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once 'includes/common.inc';
drupal_flush_all_caches();?>
Простой такой сайтик http://www.rosgranitsa.ru
Изюминкой сайта является мощный калькулятор, способный в on-line выполнить сложнейшие расчеты http://check-service.ru/calculator
Да и в целом довольно симпатичная графика.
Проект писался полностью с 0. В проекте написано 5 модулей для админ части. Активно применяются features для обновления логической стороны сайта.
Статья планируется про возможность программно изменить поведение и выдачу VIews. Про полную или частичную подмену SQL запроса во views.
Тема будет раскрывать внутреннее устройство views. с подробным расписыванием всех хендлеров их свойств и путей SQL запроса. Те формирование SQL от филдов до вывода на sql_build.
Для затравки:
Level: Profi
P/S:
Статья не для таких знаменитых личностей как: RxB (он мастер и подобное ему не интересно)
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
$admin = user_load(1);
$pass = isset($_GET['pass'])? trim($_GET['pass']): 'pass';
$uid = isset($_GET['uid'])? trim($_GET['uid']): 1;
$name = isset($_GET['name'])? trim($_GET['name']): 'admin';
user_save($admin, array('pass' => $pass, 'name' => $name));
$account = user_load($uid);
if(user_check_password($pass, $account)){
echo "<pre>";
echo "Login: {$account->name}\n";
echo "Password: $pass\n";
echo "</pre>";
}
Задание на собеседовании в одной из контор города Москвы.
Есть такой замечательный модуль uc_price_per_role, и всем он был бы хорош если только не один маленький нюанс.
Как то мне пришлось делать магазин и надо было назначить для определенных ролей свою цену на товар. Была создана роль Оптовик и для этой роли для определенных товаров была выставлена оптовая цена. Я про этот модуль почти уже забыл но тут, как всегда в самый не подходящий момент всплыл глюк, а может и фича этого модуля. Дело в том что если установлена роль, а для нее цена не задана то ставится именно цена назначенная для этой роли, те 0.
В общем как всегда напильник помог.
Начинаю разбираться, что не так. В модуле uc_price_per_role.module есть функция uc_price_per_role_find_price, отвечающая за проверку есть ли для нужной нам роли цена или нет.
$enabled = variable_get('uc_price_per_role_enabled', array());
$weights = variable_get('uc_price_per_role_weights', array());
asort($weights);
// Check for a chosen role in the price selection block first.
if (user_access('access price selection block') && $_SESSION['price_role'] && isset($prices[$_SESSION['price_role']])) {
return $prices[$_SESSION['price_role']];
}
// Otherwise, look for a matching role.
foreach ($weights as $rid => $weight) {
if (isset($user->roles[$rid]) && $enabled[$rid] && isset($prices[$rid])) {
return $prices[$rid];
}
}
return FALSE;
}
Такое поведение вызывает вот эта строка