Блог пользователя - XDmitry

[РЕШЕНО] Wiews - вывести конкретную ноду по URL или ID

23 марта 2017 в 16:18

Привет, сообществу! Как в views вывести конкретную ноду (из определенного типа матер.) по ее id или URL. Отозвавшимся спасибо!

Решение: во views, вкладка - КРИТЕРИИ ФИЛЬТРАЦИИ, выбираем "Содержимое: nid (ID материала)". Ставим = равно, значение = (ID ноды, например 15)

Лицензия Drupal - нюанс аренды сайта на CMS Drupal

27 сентября 2016 в 12:56

Вопрос к тем, кто разбирается в юридическом праве и лицензии Drupal. Ситуация следующая: клиент берет сайт в аренду, созданного на Друпале, без доступа к файлам сайта на хостинге. Имеет ли он право затребовать любые исходники этого сайта? Ведь по сути, арендодатель преследует коммерческую цель, используя Друпал с открытым кодом, но в тоже время, арендатор не купил сайт (не приобрел его в полном смысле слова).

Отдать 404 Not Found для адресов типа node/nid

20 февраля 2013 в 13:22

При использовании синонимов, страница становится доступной по двум URL’ам. Чтобы избавиться от дублей типа node/ID (…node/3, node/4, node/5 …) можно использовать 301 редирект на соответствующие синонимы страниц. Но с практической стороны это смотрится некрасиво (имхо). Я решил избавиться от дублей типа node/ID, возвращая клиенту 404 ошибку на запрос, а не 301 редирект. В основу взял модуль mod_rewrite с правилом в .htaccess:

Дублирование материала в списке view

3 декабря 2011 в 20:35

Друзья! Нужна помощь. Делаю представление через views (7.x-3.0-rc3), где вывожу список материалов. Список основан на полях: заголовок и поле загрузки файлов – File (условно назван). Загрузка в этом типе материалов не ограничена (по кол-ву). Все материалы выводятся в норме, если в поле File загружен один файл. Если же загрузить два и более, то происходит дублирование материалов в списке view. Если кто сталкивался с этой проблемой, укажите решение. Спасибо.

Внедрение списков views в node

1 ноября 2011 в 12:36

Всем привет! Встала задача: внедрить списки view в ноды. Ранее, для 6-ки, этим «занимался» модуль Views_Attach. Есть ли подобный модуль для 7-ки? Или сейчас (для views 3) можно обойтись без всего этого и решить проблему соответствующими настройками views 3? Кто знает – подскажите. Спасибо.

[РЕШЕНО] Модуль file: иконки для файлов с расширением djvu

24 сентября 2011 в 14:40

Всем привет! Если кто-нибудь сталкивался с подобной проблемой, просьба откликнуться. Речь идет о встроенном модуле file в Drupal 7. При загрузке разного рода файлов, к каждому (распространенному) расширению присваивается соответствующая иконка, но вот для расширения файлов djvu («дежа-вю») иконок нет. Иконки лежат по пути: modules/file/icons. Необходимый код, соответственно в файлах модуля file. Помогите решить проблему. Спасибо.

[РЕШЕНО] Мини-пейджер для Drupal 7

22 августа 2011 в 23:59

Нужен код мини пейджера, чтобы выводил определенный тип материалов по принципу: << предыдущая | следующая >>. Код для Drupal 7. Спасибо.

DENWER на Windows 7. phpMyAdmin – Error [Решение]

5 августа 2011 в 14:34

Может кому поможет. Поставил Denwer на Windows 7 (купил новый «системник», а в нем уже, блин, стояла семерка; решил попробовать) и не могу зайти в phpMyAdmin. Выводит ошибку: phpMyAdmin – Error. Cannot load mysql extension. Please check your PHP configuration. – Documentation. Решение лежит в системе безопасности, к которой, разработчики win7, уделили особое внимание. Необходимо разрешить доступ всем пользователям к тому диску, на котором лежит denwer. Это см. в свойствах диска, вкладка «безопасность» (…\Пользователи).

Views - Nodes that can be referenced (не отображается список представлений)

21 июля 2011 в 23:08

Проблема. Установил модули: nodereference_url (7.x-1.11), references (7.x-2.x-dev), eva 7.x-1.0 (аналогия модуля: views_attach), views (7.x-3.x-dev) – все для Drupal 7. Создаю поле типа: ссылка на материал с дисплеем Reference from URL. Теперь, необходимо ссылаться не на типы материалов, а на созданное представление – views. В Drupal 6 на этом месте имеется выпадающий список со всеми представлениями, а здесь – пусто. Перепробовал разные версии модулей – не помогло. Кто видит решение – подскажите.

Обмен ссылками - нодами

4 июля 2011 в 11:01

Друзья, каким модулем – либо это написание кода, либо иные комбинации – можно реализовать функционал: отправка созданной ноды – либо ссылки на ноду – другому пользователю. Операция должна быть максимально простой. В основе лежит сервис – работа. Необходимо, чтобы пользователи могли отсылать друг другу свои данные – резюме и вакансии – интуитивно понятным для них способом.

[РЕШЕНО] _form_alter и CCK

28 сентября 2010 в 11:35
<?php
/**
   * Implementation of hook_form_alter().
   *
   * The function is named modulename_form_alter.
   */
  
function vacancy_form_vacancy_node_form_alter(&$form, &$form_state) {
       
$form['field_address_vac'][0] = array (
      
'#type' => text_textfield,
      
'#title' => t('Adress'),
      
'#required' => TRUE
    
);
    
$form['field_mail_vac'] = array (
      
'#type' => email_textfield,
      
'#title' => t('Email'),
      
'#required' => FALSE
    
);
    
$form['field_person_vac'][0] = array (
      
'#type' => text_textfield,
      
'#title' => t('Personal information'),
      
'#required' => TRUE
    
);
  }
?>

Проблема следующая. Необходимо изменить некоторые CCK-поля в форме с их отдельной валидацией. Решил это сделать
через hook_form_FORM_ID_alter (либо через hook_form_alter). Создал модуль. Начал с простого изменения элементов формы.
Именения реализовались (на странице создания). Заполняешь поля, но при просмотре (или сохранении) формы получаю:
Fatal error: Cannot unset string offsets in Z:\home\....\all\modules\cck\content.module on line 1248
Все встало и о валидации и прочем пока говорить не приходится. Искал в сети аналогичную проблему, но ничего конкретного (преимущественно на org'е), да и в англ. я не очень.
Подозреваю, что проблема кроется в специфичности полей CCK. Кто сталкивался с подобной проблемой или видит решение,
просьба - откликнуться.

Извлекаем ID всей формы

28 августа 2010 в 13:07

Как узнать ID конкретной формы? В сети все разбросано и нет конкретной инструкции. Сам весь вечер искал решение. Поэтому я попробую просто привести конкретный пример извлечения ID формы.
Сразу уточню, что будем извлекать ID всей формы, а не отдельного ее элемента. Идентификатор отдельного элемента формы можно извлечь с помощью Firebug (плагин к Firefox).
Материал взят с: http://api.drupal.ru/api/function/hook_form_FORM_ID_alter/6 первый комментарий. Если установлен модуль Devel, то можно и по второму комментарию.
Создаем свой модуль, а это всего два файла: extract_id_forms.info и extract_id_forms.module.
В первом файле прописывем:

; $Id$
name = Extract ID forms
description = "Retrieves and displays the ID of an entire form"
package = Custom
core = 6.x

Во втором файле (extract_id_forms.module):

<?php
// $Id$
/**
 * @file
 *
 */

function extract_id_forms_form_alter(&$form, $form_state, $form_id) {
        global $user;
        if ($user->uid==1) {
                $form['showformid']=array(
                        '#type' => 'markup',
                        '#value' => t('Form ID: ').$form_id,
                        '#weight' => -10
                );     
        }
}

[РЕШЕНО] Условный оператор и логическое выражение в PHP

21 августа 2010 в 17:47

День добрый, сообщество!

Вопрос к специалистам PHP. Есть конструкция (вроде правильная?):


<?php if (логическое выражение_1): ?>

    <?php “оператор_ 1” ?>

<?php elseif (логическое выражение_2): ?>

    <?php “оператор_2” ?>

<?php else: ?>

    <?php “оператор_3” ?>
          
<?php endif; ?>

Может что намудрил, короче: если выражение_1 TRUE (в массиве есть хотябы одно значение), исполнить оператор_1.
Если FALSE, то: если выражение_2 TRUE, исполнить оператор_2. Если выражение_2
FALSE, то выполнить оператор_3. Весь код будет в шаблоне …tpl.php.

Логическое выражение_1 это:

<?php
foreach ((array)$node->field_salary_agreement_vac as $item) {
    print 
$item['view']
}
?>

Логическое выражение_2 это:

<?php
$node
->field_age_vac[0]['view']
?>

.
Здесь понятно, будет так: <?php elseif ($node->field_age_vac[0]['view']): ?>

А вот логическое выражение_1 как составить? Спасибо

Вывод тизеров нод, содержащих те же термины, что и текущая, открытая нода (модификация)

16 августа 2010 в 12:52

Есть сниппет (автор Dalay – drupalka.ru).

<?php
if (arg(0) == 'node'  && is_numeric(arg(1)) && is_null(arg(2))) {
  
$num_nodes 10;
  
$voc_id ID_нужного_словаря;
  
$nid       = (int)arg(1);
  
$node      = new stdClass;
  
$node->vid $nid;
  
$terms taxonomy_node_get_terms_by_vocabulary($node$voc_id);
  
$status    1;
  foreach (
$terms as $term) {
    
$sql "SELECT DISTINCT n.title, n.nid
                FROM {node} n
                INNER JOIN {term_node} tn
                ON n.nid = tn.nid
                WHERE n.status = %d
                AND tn.tid = %d
                AND n.type <> '%s'
                AND n.nid <> %d
                ORDER BY n.created
                DESC"
;
    
$result db_query_range(db_rewrite_sql($sql), $status$term->tid$node->type$nid0$num_nodes);
    
$items = array();
    while (
$node db_fetch_object($result)) {
      
$items[] = l($node->title'node/'$node->nid, array('attributes' => array('title' => $node->title)));
    }
    
$output theme('item_list'$items);
  }
  return !empty(
$output) ? $output '';
}
?>

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

[РЕШЕНО] Вопрос по php (function mytheme_theme...)

7 августа 2010 в 13:03

PHP не владею, поэтому и обращаюсь к специалистам в этом направлении. Я темизирую два узла для создания материала (node/add) c CCK-полями.
В теме mygarland создаю два шаблона: node-summary-edit.tpl.php и node-vacancy-edit.tpl.php. В template.php темы mygarland вставляю код:

<?php
function mygarland_theme($existing$type$theme$path) {
  return array(
    
'summary_node_form' => array(
        
'arguments' => array('form' => NULL),
        
'template' => 'node-summary-edit'
    
)
  );
?>

это для первого шаблона node-summary-edit.tpl.php. Для второго было бы так:

<?php
function mygarland_theme($existing$type$theme$path) {
  return array(
    
'vacancy_node_form' => array(
        
'arguments' => array('form' => NULL),
        
'template' => 'node-vacancy-edit'
    
)
  );
?>

Однако так (как я понимаю) записать код в template.php нельзя. Вот и сама проблема. Как все это объединить в один рабочий код?