Рубрика | Кодинг RSS-лента этой рубрики

Как сократить текст и подставить "Читать дальше" на jQuery?

Здравствуй, дорогой читатель!

В сегодняшней заметке хочу поделиться небольшим, но, по-моему скромному мнению, очень полезным кусочком JS кода.

Допустим у вас есть какой-то сайт, на котором есть блок с отзывами, в котором каждый отзыв обернут в div-блок с классом text_review. При этом все отзывы явно больше 500 символов (или меньше) и вообще разной длины, содержат дополнительные блоки с информацией, фотографией и т.д.

Например:

<div class="text_review">
 <img src="petya.jpg" /><br />В первую очередь спасибо тебе Вася, за чудесный тренинг. Я научился...
 <p>(Петя, Москва, 21 год)</p>
</div>
<div class="text_review">
 <img src="lera.png" /><br />Ребята, я так рада, что нашла вашу школу! Если бы не вы, то я...
 <p>(Лера, Киров, 23 года)</p>
</div>

Вам хотелось бы как-нибудь организовать это дело и привести отзывы в порядок? Чтобы они были одной длины, но при этом не просто обрезаны как попало, а чтобы при желании можно было кликнуть по ссылочке "читать дальше >" и прочитать развернутый отзыв на месте.

Вот как раз и оно...

Автоматически сократить текст и подставить "читать дальше" на jQuery:

jQuery(".text_review").each(function(){
	var review_full = jQuery(this).html();
	var review = review_full;

	if( review.length > 500 )
	{
		review = review.substring(0, 500);
		jQuery(this).html( review + '<div class="read_more"> читать полностью &rarr;</div>' );
	}
	jQuery(this).append('<div class="full_text" style="display: none;">' + review_full + '</div>');
});

jQuery(".read_more").click(function(){
	jQuery(this).parent().html( jQuery(this).parent().find(".full_text").html() );
});

P.S. Единственное, что вам нужно указать. Это либо для ваших блоков с отзывами указать класс text_review, либо в селекторе в коде выше указать свой класс. Также по желанию, можете уменьшить и ограничение по количеству символов с 500-та до 200 например.

Желаю вам счастья от души 😉

Богдан

Оптимизация работы с БД, или ezSQL

оптимизация класс ezsql php

Давно хотелось чего-то по-удобнее mysql_connect и компании, так чтобы без лишних строк...

Самому реализовывать решение этой проблемы не имело смысла (хотя я попробовал :), так как великолепные решения уже найдены.

Вспомнился WordPress с его дико удобным классом $wpdb, который позволяет делать любые запросы в БД без особых напрягов, в одну строку, используя три команды.

После недолгих поисков я узнал, что WordPress, как и другие 100k сайтов в инете используют класс, который называется ezSQL (автор Джастин Винсент). Этот класс дает возможность работать с многими популярными базами данных mysql, mssql, sqlite, sybase, postgresql, oracle и т.д.

И действительно им очень просто пользоваться. N шагов, как начать пользоваться ezSQL для mysql:

1. Скачай zip архив, содержащий ezSQL, и извлеки из него файлы. [ Скачать ezSQL ]

2. Скопируй файл ez_sql_core.php из папки shared, и файл ez_sql_mysql из папки mysql в папку с твоим скриптом (или, например, в папку includes, если такая есть).

3. Подключи класс в свой скрипт и настрой его следующим образом:

include_once('includes/ez_sql_core.php');
include_once('includes/ez_sql_mysql.php');
$db = new ezSQL_mysql($dbuser,$dbpass, $dbname, $dbhost);
/* Сотри includes/ в первых двух строках, если ты поместил файлы в корень.
Где $dbuser, $dbpass, $dbname, $dbhost это логин пользователя БД, его пароль, имя БД и адрес БД (по умолч. localhost). */

4. Теперь можно использовать класс ezSQL в твоем скрипте, в примере выше он представлен, как $db (хотя тут есть немного места для фантазии).

А использовать его нужно так:

Пример 1

// Сделать выборку нескольких записей из таблицы и вывести их
$users = $db->get_results('SELECT name, email FROM users');
foreach ( $users as $user )
{
// Вывести данные используя возможности ezSQL
echo $user->name;
echo $user->email;
}

Пример 2

// Вытащить из таблицы одну строку и вывести ее
$user = $db->get_row('SELECT name,email FROM users WHERE id = 4');
echo $user->name;
echo $user->email;

Пример 3

// Вытянуть из таблицы одно значение и вывести его
$var = $db->get_var('SELECT count(*) FROM users');
echo $var;
<h3><span style="font-size: medium;">Пример 4</span></h3>
// Добавить данные в таблице
$db->query("INSERT INTO users (id, name, email) VALUES (NULL,'lance','lance@gta.com')");
<h3><span style="font-size: medium;">Пример 5</span></h3>
// Обновить данные в таблице
$db->query("UPDATE users SET name = 'Lance' WHERE id = 2)");

Cпасибо тебе, Джастин.

После того как я переписал весь код используя ezSQL, общее кол-во строк уменьшилось на 27, а символов - на 822.

Edit: на тот момент это было около 8% от всего объема кода 🙂