Ailk wrote:Накидал тут. Правда понятно будет для тех кто в пхп хоть немного понимает. Но все же.
Создаем новый кастом темлейт, например: category_block
в него пишем как есть:
Code: Select all
<ul>
<?php
if (!empty($GLOBALS['categories_abc'])) {
// попробуем достать кешированный блок. Ключ хранения в кеше: ctg_abc_block. Можно добавить префикс, чтоб кеш не пересекался с другими сайтами.
if (!$category_block = Cache::get('ctg_abc_block')) {
ob_start();
$lastFirstLetter = '';
foreach($GLOBALS['categories_abc'] as $_category) {
$currentFirstLetter = strtolower($_category['category_name'][0]);
// Выводится буква в верхнем регистре (функция ucfirst делает это)
if ($currentFirstLetter != $lastFirstLetter) {
echo '<li><span>' . ucfirst($currentFirstLetter) . '</span></li>'; // это сам шаб для буквы
}
// Это ссылка на категорию, предполагается что category_custom_name это слаг категории, а category_name соответственно ее имя.
echo '<li><a href="/' . $_category['category_custom_name'] . '/">' . (ucfirst(strtolower($_category['category_name']))) .'</a></li>';
$lastFirstLetter = $currentFirstLetter;
}
$category_block = ob_get_clean();
Cache::set('ctg_abc_block', $category_block, 3600); // кешируем блок на час, 3600 сек.
}
echo $category_block;
}
?>
</ul>
Затем подключаем темплейт где нам нада стандартным способом:
Code: Select all
<!--INCLUDE_TEMPLATE_category_block-->
я не профи в пхп, учусь потихоньку...
общий смысл понятен вроде!
вопрос по ключам, допустим у меня сидж на 6 языках то мне нужно сохранять кеш с 6 префиксами, верно?
т.е. получается что-то типа такого:
ru_ctg_abc_block
en_ctg_abc_block
de_ctg_abc_block
......
т.е. если я в самом начале объявлю переменную ключа кеша с языковым префиксом $c_key, а потом использую ее в Cache::get и Cache::set то должно быть все хорошо для мультиязычного сиджа?
Code: Select all
<ul>
<?php
$c_key = $_GET['force_lng'].'_ctg_abc_block';
if (!empty($GLOBALS['categories_abc'])) {
// попробуем достать кешированный блок. Ключ хранения в кеше: ctg_abc_block. Можно добавить префикс, чтоб кеш не пересекался с другими сайтами.
if (!$category_block = Cache::get($c_key)) {
ob_start();
$lastFirstLetter = '';
foreach($GLOBALS['categories_abc'] as $_category) {
$currentFirstLetter = strtolower($_category['category_name'][0]);
// Выводится буква в верхнем регистре (функция ucfirst делает это)
if ($currentFirstLetter != $lastFirstLetter) {
echo '<li><span>' . ucfirst($currentFirstLetter) . '</span></li>'; // это сам шаб для буквы
}
// Это ссылка на категорию, предполагается что category_custom_name это слаг категории, а category_name соответственно ее имя.
echo '<li><a href="/' . $_category['category_custom_name'] . '/">' . (ucfirst(strtolower($_category['category_name']))) .'</a></li>';
$lastFirstLetter = $currentFirstLetter;
}
$category_block = ob_get_clean();
Cache::set($c_key, $category_block, 3600); // кешируем блок на час, 3600 сек.
}
echo $category_block;
}
?>
</ul>
или нет?