Сегодня 26 апреля, пятница ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Не только о покере
Не только о покере
Голосов: 1
Адрес блога: http://leonidovich.net
Добавлен: 2010-11-10 21:24:24
 

Работа с сущностями с помощью Entity metadata wrappers

2016-12-28 21:13:08 (читать в оригинале)

Создание враппера для ноды по её nid

$node_wrapper = entity_metadata_wrapper('node', $nid);

Вторым параметром можно передать объект ноды

$node_wrapper = entity_metadata_wrapper('node', $node);  

Получить значение свойства

$nid = $node_wrapper->nid->value();

// или

$node_wrapper->getIdentifier();

$title = $node_wrapper->title->value();  

 

Получить значение свойства, пропущенного через check_plain()

$title = $node_wrapper->title->value(array('sanitize' => TRUE));  

Получить значение поля

$field_value = $node_wrapper->field_name->value();  

Получить первое значение multiple-value поля

$field_value = $node_wrapper->field_name[0]->value();  

Получить значение составного поля

if ($node_wrapper->body->value()) {
  $teaser = $node_wrapper->body->summary->value();
  $body = $node_wrapper->body->value->value();
}  

Получить первое значение составного multiple-value поля

if ($node_wrapper->field_tags->value()) {
  $first_tag_name = $node_wrapper->field_tags[0]->name->value();
}  

Получить значение поля для определённого языка

$field_value = $node_wrapper->language('ru')->field_name->value();  

Обойти значения multiple-value поля

foreach ($node_wrapper->field_tags as $tag_wrapper) {
  $tid = $tag_wrapper->tid->value();
  $tag_name = $tag_wrapper->name->value();
}  

Получить значение свойства у связанной сущности

$author = $node_wrapper->author->name->value();

$author_email = $node_wrapper->author->mail->value();

$author_roles = $node_wrapper->author->roles->optionsList();

$image_url = $node_wrapper->field_image->file->url->value();  

Изменить свойство

$node_wrapper->title = 'New title' $node_wrapper->save();  

Изменить свойство у связанной сущности

$node_wrapper->author->mail = 'newmail@gmail.com';

$node_wrapper->author->save();  

Изменить поле

$node_wrapper->field_text = 'New value';

$node_wrapper->field_term = 123;

$node_wrapper->save();  

Удалить значения поля

$node_wrapper->field_image->set(NULL);  

Удалить одно значение multi-value поля

$node_wrapper->field_image[0]->set(NULL);  

Проверить наличие поля у бандла (не наличие значения поля, а именно существование поля у конкретного бандла)

if (isset($node_wrapper->field_name)) { ... }  

Отличить single-value поле от multi-value

if ($node_wrapper->field_name instanceof EntityListWrapper) {Поле multi-value } else {Поле single-value }  

Получить список доступных свойств

$node_properties = $node_wrapper->getPropertyInfo();

$body_properties = $node_wrapper->body->getPropertyInfo();  

Получить список доступных свойств у определённого типа сущности

$node_properties = entity_get_property_info('node');

источник



Функции Drupal API для работы с нодами

2015-12-29 10:00:29 (читать в оригинале)

При разработке сайтов на Друпал нередко возникает необходимость получить объект ноды, узнать ее автора, значения полей, создать ноду программно в своем модуле и т.п. Для решения подобных задач в Drupal API предусмотрен ряд полезных функций, которые и будут рассмотрены в данной статье.

Получаем объект ноды по ее nid

Для решения этой распространенной задачи в Drupal служит функция node_load(), которая возвращает объект ноды, содержащий всю необходимую информацию - время создания и последнего изменения ноды, уникальный идентификатор пользователя, создавшего ноду (uid), а также значения полей и т.п.

Загружаем объекты нескольких нод

Чтобы получить объекты нескольких нод, можно воспользоваться функцией node_load_multiple(), передав в нее массив из nid. Собственно, эта же функция используется внутри node_load() для загрузки одного объекта ноды.

Получаем объект ноды текущей страницы

Если путь текущей страницы принадлежит ноде, то объект ноды можно получить с помощью функции menu_get_object(). Собственно эта функция, как следует из описания в документации, может возвращать объекты и другой сущности Друпал, но для этого в нее нужно передать параметр $type, отличный от 'node'.

Примеры получения объекта ноды:

<?php
  $node = node_load(1);
  print $node->title; // Заголовок ноды
  print $node->submitted; // Метка времени создания ноды
  print $node->uid; // Идентификатор пользователя-автора ноды
?>
<?php
  if ($node = menu_get_object()) {
    print $node->title;
  }
?>

Программное создание ноды

Сразу привожу код:

  <?php
    $node = new stdClass();
    $node->type = 'article';
    node_object_prepare($node);
    $node->title = 'Моя статья';
    $node->language = LANGUAGE_NONE;
    $node->body[$node->language][0]['value'] = '<p>Эта статья была создана программно</p>';
    $node->body[$node->language][0]['format']  = 'filtered_html';
    node_save($node);
  ?>

Как видно из примера программного создания материала типа "статья", для решения данной задачи понадобились две функции Drupal API - node_object_prepare() и node_save(). Первая дополняет объект ноды такой информацией как uid текущего пользователя, время создания и версия редакции. Вторая осуществляет сохранение (запись в базу данных) ноды и значений ее полей.

Получаем html ноды

Такая задача возникает при необходимости вывести ноду в заданном режиме отображения, например, если по какой-то причине не используется модуль Views. На помощь приходит функция node_view(), аргументами которой являются объект ноды, режим отображения (по умолчанию full) и код языка. Возвращаемым значением данной функции является массив для рендеринга ноды. Пример вывода ноды с помощью функции node_view():

  <?php
    $node = node_load(1); // Загружаем объект нужной ноды
    $node_array = node_view($node); // Получаем массив для рендеринга ноды
    print render($node_array); // Выводим html ноды
  ?>

Обратите внимание, в функцию node_view мы передали лишь объект ноды, это означает, что мы получим сформированный для рендеринга массив для режим отображения "full". Если бы нас интересовал анонс материала, то вторым параметром следовало передать строку "teaser".

Вот пожалуй и все о функциях Drupal API для работы с нодами, в следующих статьях я напишу о программной работе с таксономией, а также о других полезных функциях.

Источник



Настройка Varnish

2015-12-28 15:44:05 (читать в оригинале)

Что такое Varnish?

Varnish – это HTTP-ускоритель, очень полезный инструмент для ускорения работы сервера, особенно во время увеличения трафика на сайт. Он работает путем перенаправления посетителей на статические страницы, и переходит на виртуальный выделенный сервер, только если есть необходимость в активном процессе.

Требования

Для выполнения данного руководства нужен пользователь с привилегиями sudo, а также установленный и готовый к работе веб-сервер Apache.

Чтобы создать такого пользователя, читайте руководство «Начальная настройка сервера Ubuntu 12.04».

Для установки Apache понадобится всего одна команда:

sudo apt-get install apache2

1: Установка Varnish

Сайт проекта рекомендует устанавливать пакеты Varnish непосредственно из репозитория данного сайта.

Для начала получите репозиторий:

sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | sudo apt-key add -

Затем внесите репозиторий в список исходных кодов apt. Откройте файл:

sudo nano /etc/apt/sources.list

Затем добавьте репозиторий Varnish в список:

deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0

Сохраните и закройте файл.

В завершение нужно обновить apt-get и установить varnish:

sudo apt-get update
sudo apt-get install varnish

2: Настройка Varnish

Когда Apache и Varnish установлены, приступайте к настройке программ, чтобы снизить нагрузку на сервер в случае необходимости.

Varnish обслуживает контент на порту 80, а Apache работает на порту 8080.

Итак, откройте файл /etc/default/varnish:

sudo nano /etc/default/varnish

Раскомментируйте все строки после DAEMON_OPTS; конфигурации должны иметь следующий вид

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

Сохраните и закройте файл, а затем откройте файл default.vcl:

sudo nano /etc/varnish/default.vcl

Данный файл сообщает Varnish о местонахождении контента веб-сервера. По умолчанию Apache прослушивает порт 80, потому позже нужно будет немного изменить эти настройки. В этом файле нужно указать, что Varnish должен искать контент на порту 8080.

Конфигурация выглядит так:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

3: Настройка Apache

Только что Varnish получил информацию, что Apache работает на порту 8080. Тем не менее, Apache до сих пор использует порт 80 (по умолчанию). Нужно исправить это  несоответствие. Откройте файл ports:

sudo nano /etc/apache2/ports.conf

Измените номер порта в строках NameVirtualHost и Listen на 8080; кроме того, доступ к виртуальному  хосту должен иметь только локальный хост. Отредактированные настройки будут выглядеть так:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Кроме того, нужно также изменить эти настройки в файле default (это файл виртуального хоста по умолчанию):

sudo nano /etc/apache2/sites-available/default

Парметр Virtual Host также должен иметь значение 8080:

<VirtualHost 127.0.0.1:8080>

Сохраните изменения и закройте файл. Затем перезапустите Apache и Varnish, чтобы изменения вступили в силу.

sudo service apache2 restart
sudo service varnish restart

При переходе к домену сервера должна появиться кэшированная версия Varnish; чтобы просмотреть подробности работы Varnish, используйте команду:

varnishstat



Функции для получения текущего адреса

2015-12-16 07:26:53 (читать в оригинале)

Табличка с результатами функций при открытой странице http://example.com/drupal/documentation?page=1, где drupal — это папка в которой располагается Drupal, а documentation — синоним к адресу node/123:

$GLOBALS['base_root'] http://example.com
$GLOBALS['base_url'] http://example.com/drupal
$GLOBALS['base_path'] или base_path() /drupal/
request_uri() /drupal/documentation?page=1
request_path() documentation
current_path() или $_GET['q'] node/123
arg(0), arg(1) node, 123

Замечания:

  • значение в $GLOBALS['base_url'] никогда не содержит завершающий слэш, в отличии от $GLOBALS['base_path'] и base_path().
  • current_path() не работает в hook_boot().


Друпал - Программно вывести блок

2015-12-14 11:59:22 (читать в оригинале)

Drupal 7

Вывести только контент блока:

$block = module_invoke($module_name, 'block_view', $block_delta);
echo render($block['content']);

Вывести блок полностью с заголовком и контекстными ссылками:

$block = block_load($module_name, $block_delta);
$block = _block_render_blocks(array($block));
$block_build = _block_get_renderable_array($block);
echo drupal_render($block_build);


Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 

 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.