Drupal 8 optimization image + afto add webp files

add

...
"require": {
....
"drupal/imageapi_optimize": "^4.0@beta",
"drupal/imageapi_optimize_binaries": "^1.0@alpha",
"drupal/imageapi_optimize_resmushit": "^2.0@beta",
"drupal/imageapi_optimize_tinypng": "^1.1@beta",
"drupal/imageapi_optimize_webp": "^2.0@beta"
}

composer update
drush en imageapi_optimize imageapi_optimize_binaries imageapi_optimize_resmushit imageapi_optimize_tinypng imageapi_optimize_webp -y

 

settings (add post processing)

/admin/config/media/imageapi-optimize-pipelines

 

in imagestyle select postprocess

 

Drupal настройка bootstrap темы radix

Когда включается navbar

1
$grid-float-breakpoint:

Настройка ширины(в конце)

1
2
3
// Small screen / tablet
$container-tablet:             
$container-sm:                  <a href="http://my-opinions.info/drupal/drupal-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-bootstrap-%d1%82%d0%b5%d0%bc%d1%8b-radix#more-350" class="more-link">Читать далее <span class="screen-reader-text">Drupal настройка bootstrap темы radix</span></a>

Перемены отвечающие момент отсечек

1
2
3
4
5
6
7
8
// Note: Deprecated $screen-xs and $screen-phone as of v3.0.1
$screen-xs:
// Note: Deprecated $screen-sm and $screen-tablet as of v3.0.1
$screen-sm:
// Note: Deprecated $screen-md and $screen-desktop as of v3.0.1
$screen-md: 
// Note: Deprecated $screen-lg and $screen-lg-desktop as of v3.0.1
$screen-lg:

Что бы добавить шрифт в ckeditor

1
2
config.font_names =
    'Arial;Times New Roman;Verdana;GothamPro;Lora;OpenSans';

Установка Drupal через drush

Установить друпал можно через командную строку в одну строку!!!! Ну если быть точнее через две.

#Первая строка скачивает drupal
drush dl drupal

#установка друпалла
drush site-install standard --account-name=LoginAdmin --account-pass=passwordAdmin --db-url=mysql://UserDB:PasswordDB@localhost/NameDB

Больше команд можно почитать здесь

Drush worck shop

1. Установка друпал

#скачать ядро
drush dl drupal-7

#перенести файлы в корень
mv drupal-7.x-dev/{.,*}* .
#удалить пустую папку
rm -r drupal-7.x-dev/

#фикс прав
find * -type d -exec chmod 755 {} \;
find * -type f -exec chmod 644 {} \;

#установка друпалла
drush site-install standard --account-name=LoginAdmin --account-pass=passwordAdmin --db-url=mysql://UserDB:PasswordDB@localhost/NameDB

#отключаем 2 лишние модули
drush dis dashboard overlay shortcut toolbar

#качаем и включаем нужные моддули (можно сначала скачать через dl)

#пример с зависимостями
drush en views webform module_filter

#установка выбраной версии
drush dl og-1.3 # shortcut for pm-download
drush -y en og # shortcut for pm-enable

# отключаем с зависимостями (можно глянуть на модуль i18n)
drush dis ctools

#устанавливаем набор модулей к примеру

drush en admin_menu admin_menu_toolbar l10n_update module_filter page_manager views_content ctools_custom_content ctools views views_ui transliteration token pathauto rules rules_admin entity devel basic wysiwyg wysiwyg_filter lightbox2 plupload libraries filefield_sources filefield_sources_plupload ocupload views_bulk_operations admin_views i18n

-- добавляем языка включения отключения и тёдё
drush language-add ru de

drush language-disable de ru

drush language-enable ru

drush language-default ru

#подкачка языка
drush l10n-update-status
drush l10n-update-refresh
drush l10n-update --languages=ru

другие команды
drush core-cron
drush up
drush ccй

drush ard — создание бэкапа сайта. Делает бэкап как самого сайта, так и базы данных, все это сохраняется в tar.gz архиве. Невероятно удобная вещь.
drush arr path — восстановление бекапа созданного командой drush ard. Заместо path нужно

drush arr ./example.tar.gz --destination=/var/www/example.com/docroot --db-url=mysql://root:@127.0.0.1/gates

#пробежаться и обновит все

for i in /home/www/grenuy/data/www/*/sites/.. ; do cd "$i"; drush updb; drush en update; yes | drush pm-update

DRUSH

drush up — обновление ядра и модулей Drupal.
drush cc all — очистка всего кеша сайта.
drush pm-list — список всех модулей и тем установленных на сайте, а также их версии и статус активности.
drush dl module — загружает модуль или тему. Несколько значений пишится через пробел.
drush en module — включает указанный модуль или тему.
drush dis module — выключает указанный модуль или тему.
drush ard — создание бэкапа сайта. Делает бэкап как самого сайта, так и базы данных, все это сохраняется в tar.gz архиве. Невероятно удобная вещь.
drush arr path — восстановление бекапа созданного командой drush ard. Заместо path нужно указать путь до архива, включая его название и расширение.

Установка drupall

drush dl drupal-7.x
drush site-install standard --account-name=admin --account-pass=admin --db-url=mysql://YourMySQLUser:RandomPassword@localhost/YourMySQLDatabase

Розпаковка архива на другой сервер
drush arr nivea.20150415_200549.tar.gz --db-url=mysql://root@localhost:3306/nivea

drush uli - получить разовую ссылку на вход для админа
drush upwd admin --password="newpassword" - сбросить пароль для пользователя

Массовое применение patch drupal 7.32

Для того что применить к всем пользователям патч нужно создать файл на сервере (к примеру в корне) с именем к примеру
pathc.patch. Текст в файле, в нашем случаи можно взять, здесь https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch

И зайдя через SSH выполнить команду

for i in /home/www/*/data/www/* ; do cd "$i"; echo "$i"; patch -p1 < /patch.patch; done

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

Дробное количество ubercart 3

ubercard 3.5 нашел решения с некоторыми коректировками
// making the product quantities FLOAT instead INTEGER Drupal 7, Ubercart 3.1
//// DATABASE CHANGES Four ubercart tables alterations are made from sql terminal (mysql -u ADMIN_USER -p , use DATABASE_NAME )
1) The UC_CART_PRODUCTS table intersect the UC_CARTS table and the UC_PRODUCTS table. The column ц╒Б┌╛е⌠qtyц╒Б┌╛б² is the one to ajust. Here is the MySQL statement that will modify the column to a FLOAT data type:

ALTER TABLE `uc_cart_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

2) The UC_ORDERS table holds all the orders created. The column to adjust is ц╒Б┌╛е⌠product_countц╒Б┌╛б².

ALTER TABLE `uc_orders` MODIFY COLUMN `product_count` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0; 3) The UC_PRODUCTS table contains a

default_qty field. This value gets inserted into both the product edit page and the product view page (for the customer). I think it would be a good idea to show the customer how many decimal places one may use.

ALTER TABLE `uc_products` MODIFY COLUMN `default_qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 1.00;

4) The UC_ORDER_PRODUCTS table intersects the UC_ORDERS table and the UC_PRODUCTS table. The column to adjust is the ц╒Б┌╛е⌠qtyц╒Б┌╛б² column. Here is the MySQL statement that will modify the column to a FLOAT data type:

ALTER TABLE `uc_order_products` MODIFY COLUMN `qty` FLOAT(6,2) UNSIGNED NOT NULL DEFAULT 0;

//// CODE CHANGES // FIRST uc_order -> uc_order.install //Change array elements in function to: /** * Increase maximum order item quantity. */

function uc_order_update_7003() {
db_change_field('uc_order_products', 'qty', 'qty', array(
'description' => 'The number of the same product ordered.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
));
}

// SECOND


uc_order
->
uc_order.install

In $schema['uc_order_products'] change:

'qty' => array(
'description' => 'The number of the same product ordered.',
'type' => 'int',
'size' => 'small',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),

To:


'qty' => array(
'description' => 'The number of the same product ordered.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
),

// THIRD uc_product -> uc_product.module //For possibility of using 0.00 to 1.00 quantites in function uc_product_uc_update_cart_item change: (string 1052) p.s. С новыми версиями функция поменялась, я сменил на функцию на старую версию, пока все ок 🙂

</pre>
<pre class="php"><code><span class="php-keyword">function</span> <span class="php-function-or-constant"><a class="local active" title="Implements hook_uc_update_cart_item()." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_product%21uc_product.module/function/uc_product_uc_update_cart_item/7">uc_product_uc_update_cart_item</a></span>(<span class="php-variable">$nid</span>, <span class="php-variable">$data</span> = <span class="php-keyword">array</span>(), <span class="php-variable">$qty</span>, <span class="php-variable">$cid</span> = <span class="php-function-or-constant">NULL</span>) {
  <span class="php-keyword">if</span> (!<span class="php-variable">$nid</span>) {
    <span class="php-keyword">return</span> <span class="php-function-or-constant">NULL</span>;
  }
  <span class="php-variable">$cid</span> = !(<span class="php-function-or-constant">is_null</span>(<span class="php-variable">$cid</span>) || <span class="php-keyword">empty</span>(<span class="php-variable">$cid</span>)) ? <span class="php-variable">$cid</span> : <span class="php-function-or-constant"><a class="local" title="Returns the unique cart_id of the user." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_cart%21uc_cart.module/function/uc_cart_get_id/7">uc_cart_get_id</a></span>();
  <span class="php-keyword">if</span> (<span class="php-variable">$qty</span> < <span class="php-constant">1</span>) {
    <span class="php-function-or-constant"><a class="local" title="Removes an item from the cart." href="http://drupalcontrib.org/api/drupal/contributions%21ubercart%21uc_cart%21uc_cart.module/function/uc_cart_remove_item/7">uc_cart_remove_item</a></span>(<span class="php-variable">$nid</span>, <span class="php-variable">$cid</span>, <span class="php-variable">$data</span>);
  }
  <span class="php-keyword">else</span> {
    <span class="php-function-or-constant"><a class="local" title="Returns a new UpdateQuery object for the active database." href="http://drupalcontrib.org/api/drupal/drupal%21includes%21database%21database.inc/function/db_update/7">db_update</a></span>(<span class="php-string">'uc_cart_products'</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/fields">fields</a></span>(<span class="php-keyword">array</span>(
      <span class="php-string">'qty'</span> => <span class="php-variable">$qty</span>, 
      <span class="php-string">'changed'</span> => <span class="php-function-or-constant"><a class="local" title="Time of the current request in seconds elapsed since the Unix Epoch." href="http://drupalcontrib.org/api/drupal/drupal%21includes%21bootstrap.inc/constant/REQUEST_TIME/7">REQUEST_TIME</a></span>,
    ))
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'nid'</span>, <span class="php-variable">$nid</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'cart_id'</span>, <span class="php-variable">$cid</span>)
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/condition">condition</a></span>(<span class="php-string">'data'</span>, <span class="php-function-or-constant">serialize</span>(<span class="php-variable">$data</span>))
      -><span class="php-function-or-constant"><a class="local" title="Multiple implementations exist." href="http://drupalcontrib.org/api/search/7/execute">execute</a></span>();
  }
}


 


if ($qty < 1) {

 

CHANGE TO:


if ($qty == 0) {

// FOURTH uc_order -> uc_order.admin.inc //Not sure if it's necessary but just in case (string 1125)

if (!isset($product['remove']) && intval($product['qty']) > 0) {

CHANGE TO:


if (!isset($product['remove']) && ($product['qty']) > 0) {

//FIFTH uc_cart -> uc_cart.install //Not sure if it's necessary but just in case CHANGE TO FLOATS: (string 37)


'qty' => array(
'description' => 'The number of this product in the cart.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,

AND (string 126)


function uc_cart_update_7001() {
db_change_field('uc_cart_products', 'qty', 'qty', array(
'description' => 'The number of this product in the cart.',
'type' => 'float',
'precision' => 6,
'scale' => 1,
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 1.0,
));
}

/*uc_store\uc_store.module*/ /*chenge */


function uc_store_validate_uc_quantity(&$element, &$form_state) {
if (!preg_match('/^\d+$/', $element['#value'])) {
form_error($element, t('The quantity must be a number.'));
}
elseif (empty($element['#allow_zero']) && !$element['#value']) {
form_error($element, t('The quantity cannot be zero.'));
}
}

/*on*/


function uc_store_validate_uc_quantity(&$element, &$form_state) {
if (!preg_match("/([0-9\.-]+)/", $element['#value'])) {
form_error($element, t('The quantity must be a number.'));
}
elseif (empty($element['#allow_zero']) && !$element['#value']) {
form_error($element, t('The quantity cannot be zero.'));
}
}

Drush update all module and drupal automatic more site

Как всегда не буду тянуть заходим в SSH и вводим такую вот строчку

for i in /home/www/grenuy/data/www/*/sites/.. ; do cd "$i"; drush updb; drush en update; yes | drush pm-update ; drush up drupal ; drush updb ; done

 

grenuy это имя пользователя путь может быть немного видоизмененным в зависимости от сервера.

Скрипт может давать сбои и error, при сбои создается папка с именем drupal-7.** перенеся от туда файлы в корень сайта восстановиться сайт.

обновляет как и 7-ку так и 6-ку в построчечный режим выполнения команд такой(в корне сайта выполняться)

drush en update
drush pm-update
drush up drupal
drush updb

drupal 6 node_import ANSI to utf

Столкнулся с проблемой, нужно было научить node_import на drupal 6 кушать файлы в кодировки ANSI убив несколько часов, решил проблему радикально, в момент загрузки файла определяю если строки в не в UTF-8 то перегнать его в эту кодировку.

Для этого нужно сделать следующее,в файле node_import.admin.inc найти функцию

function node_import_add_form_submit_upload_file($form, &amp;$form_state) {

Заменить ее на следующую функцию

function node_import_add_form_submit_upload_file($form, &amp;$form_state) {
  $validators = array();
 
  $dest = node_import_directory();
 
  if (($file = file_save_upload('file_upload', $validators, $dest, FILE_EXISTS_RENAME))) {
    drupal_set_message(t('New file %name uploaded to %path.', array('%name' =&gt; $file-&gt;filename, '%path' =&gt; $file-&gt;filepath)));
    file_set_status($file, FILE_STATUS_PERMANENT);
    $form_state['values']['fid'] = $file-&gt;fid;
  }
 
/*Перекодировка файла если он в cp1251*/
	$fp = fopen($file-&gt;filepath, 'r');
	$file1 = '';
	while (! feof($fp)) {
	  $file1 .= fgets($fp, 4096);
	}
	$get  = mb_detect_encoding($file1, array('utf-8', 'cp1251'));
	if($get != "UTF-8") {
		$file_utf = iconv("cp1251","UTF-8", $file1);
		$tmp_file = fopen($file-&gt;filepath, 'w+');
		fwrite($tmp_file, $file_utf);
		fclose($tmp_file);
		$fp = fopen($file-&gt;filepath, 'r');	
	}
/*\Перекодировка файла если он в cp1251\*/
 
  node_import_add_form_submit_reload($form, $form_state);
}

Рад если кому то помог, рекомендуйте друзьям 😉

Drupal BuEditor разметка php css html c++ и т.д.

Все очень просто заходим в раздел настройки bueditor-a
http://*****/admin/settings/bueditor
Возле желаймого редактора тыкаем изменить, получаем следующее

Вставив код в ячейку кода

[PHP]js: E.tagChooser([
<%%KEEPWHITESPACE%%> ['code', 'Bash', {'class': 'bash'}],
<%%KEEPWHITESPACE%%> ['code', 'C', {'class': 'c'}],
<%%KEEPWHITESPACE%%> ['code', 'C++', {'class': 'cpp'}],
<%%KEEPWHITESPACE%%> ['code', 'C#', {'class': 'csharp'}],
<%%KEEPWHITESPACE%%> ['code', 'Pascal', {'class': 'pascal'}],
<%%KEEPWHITESPACE%%> ['code', 'Php', {'class': 'php'}],
<%%KEEPWHITESPACE%%> ['code', 'Css', {'class': 'css'}],
<%%KEEPWHITESPACE%%> ['code', 'html', {'class': 'html4strict'}],
<%%KEEPWHITESPACE%%> ['code', 'Brainfuck', {'class': 'bf'}],
<%%KEEPWHITESPACE%%> ]);[/PHP]

Нажали сохранить мы получим обновленный редактор

 

views nivo slider Как сделать что бы слайды показывались в рандомному порядку, и первый слайд так же был рандомным

Может кому пригодиться, сделал немного извращено, но работает, отсортировал, и в конце шаблона дописал

if(drupal_is_front_page()){
$sql = "SELECT nid FROM node WHERE TYPE =  'image_slider'";
$result = db_query($sql); 
while ($n = db_fetch_object($result)) {
db_query("UPDATE  `node` SET  `title` =  '".rand(1,100500)."' WHERE `nid` ='".$n->nid."';");
}}

суть всего что названия node, по котором сортируется, переименовываться при посещении главной страницы. Соответственно при сортировке каждый раз будет новый порядок

Переменные в теме Drupal

page.tpl.php

Modelo básico para a página.
variáveis ​​disponíveis:

$ Head_title - título da página
$ Head - toda a informação na cabeça
$ Styles - Estilos
$ Scripts - scripts
Classes $ - aulas para o corpo
$ Header - cabeçalho, que fizemos em um modelo distinto
$ Region_name - variáveis ​​com nomes de regiões
$ Mensagens - mensagens do sistema
$ Tabs - guias
Conteúdo $ - conteúdo
$ Feed_icons - ícone RSS
$ Footer - o porão, o que temos aprendido em um modelo distinto
$ Base_path - o site caminho de base
$ Is_front - página ou não
$ Logged_in - se um usuário está logado
$ Is_admin - administrador ou não
$ Language - um objeto que contém dados sobre a linguagem corrente
$ Nó - o nó
$ Front_page - link para home
$ Logo - logo
$ Site_name - nome do site
Site_slogan $ - Slogan do site
$ Missão - o site da missão
$ Search_box - busca de bloco
$ Encerramento - a variável é inserido antes da tag de fechamento / corpo, fazendo alguns módulos escrever scripts. Obrigado juliv habrayuzeru
Читать далее Переменные в теме Drupal

Пересобрать $content $vars[‘content’] Drupal

Вот понадобилось пересобрать переменую $content в таксомании,
ссылка таксомании была такая
taxonomy/term/1
на выходе должен был получить вот такой html одной записи

<div class="news-item">
				  <div class="date"><i>04</i>апр</div>
				  <div class="news-block">
					<p class="title"><a href="node/7">программирования с помощью метода эллипсоидов. С самого начала большое внимание будет уделяться связи линейного программирования с теорией целочисленного программирования, комбинаторикой и оптимизацией.
				</p>
					<p class="more"><a "="" href="node/7">Читать далее</a></p>
				  <div class="line"></div>
				</div>
				</div>

Читать далее Пересобрать $content $vars[‘content’] Drupal

Изменения вывода блока Drupal 6

Необходимо создать в папке шаблоне файл block.tpl.php
В нем создаем что то приблизительно такого

<?php // $Id: block.tpl.php,v 1.2 2011/04/14 08:39:36 goba Exp $ ?>
<div>
<h2><?php print $block->subject ?></h2>
 <?php print $block->content ?>
</div> 

А ниже вот подробно переменные которые можно юзать Читать далее Изменения вывода блока Drupal 6

Главная страница в Drupal (home page of drupal)

Для того что бы сделать главную страницу уникальной можно создать файл в шаблоне с именем page-front.tpl.php, если же вы создаете шаблон и вам необходимо просто определить, главная это страница или нет, можно использовать функцию drupal_is_front_page.
Если текущая страница главная — TRUE, иначе — FALSE.
Так что можно написать

<?php
if(drupal_is_front_page())
echo "Это главная страница";
else "Не главная страница";
?>