Компонент K2 под Жумлу с некоторых пор оснащен бессменным неприятным багом: при автогенерации мета-тегов description и og:description берется весь HTML-код материала, обрезается и впихивается в мета-раздел страницы. При этом зачастую в метатегах обнаруживаются куски некорректно обрезанного HTML. Чтобы очистить метатеги от остатков HTML-кода открываем файл /components/com_k2/views/item/ view.html.php , находим строчку (примерно 373):

$metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext.' '.$item->fulltext);

и меняем на:

$metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', strip_tags($item->introtext.' '.$item->fulltext));

Старики и дети голодают.
Лодка быта стукнулась о дно.
Потому что – музыку качают.
Музыку качают. И кино.
Нет дорог. Заводы закрывают.
Армия – посмешище одно
Потому что - музыку качают.
Музыку качают. И кино.
Власть ворьё. Они и не скрывают.
Этот факт известен всем давно
Виновата музыка. Качают!
Музыку качают! И кино!
Вот когда всё это прекратится
Вот когда им перекроют кран
Вот тогда – Россия возродится
Снова станет лучшею из стран
Чтоб не обошлось бы без посадок
(Век какой не важно на дворе)
Был же ведь при сталине порядок!
Был же ведь порядок при царе!
Зло уже хрипит, ревёт натужно
Скоро будет сломлено оно!
На Святой Руси совсем не нужно
Музыки не нужно. И кино

Отсюда.

Характерная черта отечественного автопрома: мало того, что приходится ездить за баранкой, так еще и не от того пылесоса.

Задача: уникализировать многомерный массив, удалив одинаковые значения (дубли), на PHP.

Решение - достаточно всего одной строчки:

$input = array_map("unserialize", array_unique(array_map("serialize", $input)));

где $input - наш сложный массив данных, например:

Array
(
    [0] => Array
	(
	    [0] => abc
	    [1] => def
	)
    [1] => Array
	(
	    [0] => ghi
	    [1] => jkl
	)
    [2] => Array
	(
	    [0] => mno
	    [1] => pql
	)
    [3] => Array
	(
	    [0] => abc
	    [1] => def
	)
    [4] => Array
	(
	    [0] => ghi
	    [1] => jkl
	)
    [5] => Array
	(
	    [0] => mno
	    [1] => pql
	)
)

После установки модуля Historic System Statistics для Webmin, возникла ошибка Can't locate RRDs.pm in @INC.

Для ее устранения следует установить требуемые пакеты:

apt-get install librrds-perl rrdtool

В этой заметке я буду собирать часто попадающиеся мне в ходе сайтостроительных задач SQL-запросы.

Удаление строк из таблицы на основании подзапроса (subquery), в котором присутствуют поля как из данной таблицы, так и из других:

DELETE ua FROM url_alias ua
JOIN node n ON n.type = 'torgovya_marka'
AND ua.alias LIKE 'content/%'
AND ua.source LIKE CONCAT( 'node/', n.nid )

Описанный запрос удалит из таблицы url_alias все строки, в которых поле alias начинается с 'content/', а поле source при этом содержит результат конкатенации 'node/' и идентификаторы записей nid из таблицы node, у которых поле type содержит значение 'torgovya_marka'. Другими словами, запрос выберет из таблицы node все идентификаторы строк, у которых поле type = 'torgovya_marka' и подставит их в родительский запрос, предварив каждый идентификатор строкой 'node/'. А далее будет произведена проверка полей source и alias редактируемой таблицы url_alias в соответствии с указанными условиями и выполнено удаление строк, которые этим условиям удовлетворяют.

Уникализация таблицы БД или удаление одинаковых строк:

ALTER IGNORE TABLE table ADD UNIQUE INDEX(column);

Импорт большого дампа через консоль:

CREATE DATABASE [DBNAME];
USE [DBNAME];
SOURCE [/path_to_file/DBNAME].sql;

Сортировка по нескольким полям с условием, что предпочтение отдается НЕ нулевым (не NULL) значениям:

...order by COALESCE(p.products_date_available, p.products_date_added) desc

Поиск одинаковых значений в колонке:

SELECT name, COUNT(*) c FROM table GROUP BY name HAVING c > 1;

Update и join в одном запросе:

UPDATE t1 LEFT JOIN t2 ON t2.id = t1.id SET t1.col1 = newvalue WHERE t2.id IS NULL

Информация о таблице с индикатором, какое из полей является первичным ключом (Primary Key, pk) для SQLite:

PRAGMA table_info(myTable)

Регулярное выражение в запросе:

SELECT url_alias_id
FROM oc_url_alias
WHERE query REGEXP 'product_id=[0-9]+'
   AND CAST(RIGHT(query, LENGTH(query) - 10 -
   LOCATE('product_id=', query)) AS SIGNED INTEGER)
   NOT IN (select product_id from oc_product)

Тримминг (удаление пробелов в начале и конце) поля:

UPDATE `oc_product_description` SET name=TRIM(name)

DELETE ... SELECT:

DELETE FROM posts WHERE id IN (
  SELECT * FROM (
    SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
  ) AS p
)

Чтобы не возникала ошибка при truncate foreign key constrained table:

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE table1;
SET FOREIGN_KEY_CHECKS = 1;

Подсчет корректного кол-ва строк COUNT(*), когда в запросе есть LEFT JOIN:

SELECT COUNT(DISTINCT p.product_id) AS total FROM... LEFT JOIN...

Поиск по числовым выражениям (что-то типа is_numeric , is_number):

... WHERE concat( '', model * 1 ) = model

Уже староватая, но полезная публикация о том, как повысить посещаемость сайта за счет недорогих среднечастотных (СЧ) запросов в Яндекс.Директе. При нищенском бюджете или для собственного блога - это экономичное решение. Мне как раз нужно как-то продвигать Жужум в читательские массы. И хочется оперативно без сеошных линкосистем и сопутствующей неповоротливости:

Можно ли приводить много заинтересованных посетителей из Директа по 30 копеек за посетителя? Можно и нужно, особенно, если ваш ресурс только встает на ноги и нужно быстро и недорого привести на сайт заинтересованных людей.

Это – пошаговое руководство для тех, кто хочет знать, каким боком из Яндекс Директ (на вполне законных, между прочим, основаниях) привлекать недорогой трафик по 0.01 у.е или 30 копеек за переход. Читать далее>>

Наверх