1

(3 ответов, оставленных в Проблемы и их решения)

<title><?=stripslashes($post['title']); ?></title>

если не поможет, то:

<title><?=str_replace('\','',$post['title']); ?> </title>

А откуда они вообще взялись экранированные кавычки в $post['title']? Вроде не должно там их быть.

solnce пишет:

от чтения на форуме никакой пользы все как-то туманно...

Надо просто запросы корректные давать, так как даже по вашему вопросу в форуме всё тоже "как-то туманно". Зачем, например, нам знать на чём вы сделали страницы и как там у вас всё устроено? Если бы вы сформулировали задачу, например, так: "как сделать, чтобы полная новость открывалась не на главной странице, а на той же самой, где нажали на ссылку "читать полностью"?", то все сразу бы всё поняли.

Итак, в шаблоне Default в файле active.tpl вместо:

<div class="full_link"><a href="<?=$tpl['post']['link']['post']; ?>">читать полностью</a></div>

напишите:

<div class="full_link"><a href="?id=<?=$tpl['post']['id']; ?>">читать полностью</a></div>

Поскольку шаблонная переменная <?=$tpl['post']['link']['post']; ?> динамически формирует ссылку вида:

http://сайт.ru/главная_страница_сайта.php?id=id_номер_новости

а нам для решения задачи нужно удалить из уравнения главную_страницу_сайта.php

cmd пишет:

но лучше включите Format Switcher и не морочьте голову...

Andrey_1cov ...и проанализируйте свой файл data/xfields-data.php, если он слишком большой, то "Format Switcher" действительно может тормозить.

Если вы не используете плагин "XFields" и не балуетесь особо разрешением/запрещением комментов для новостей, то содержимое файла data/xfields-data.php можно безболезненно очистить.

Если вы используете какой-нибудь визуальный редактор, например "FCKeditorPHP", то у вас все новости должны выводиться в формате "HTML", тогда плагин "Format Switcher" действительно не нужен, просто нужно установить формат "HTML" по умолчанию для всех новостей. А как обойтись без "Format Switcher" - поищите в форуме, где-то было.

А можно поменять штатный плагин "XFields" на "XFields для MySQL" (поищите в форуме "Дополнения: готовые"). Тогда и "Format Switcher" тормозить не будет и доп.поля можно спокойно использовать, и форматы новостей менять хоть через одну и комменты включать/отключать хоть для каждой новости.

Andrey_1cov, наверное у вас формат новости "HTML с переносом строк"? Включите (если не включен) плагин "Format Switcher" и выставьте для этой новости формат "HTML".

Ну и что улыбнуло:

как-то не подумал, что в файле шаблона сможет выполняться скрипт

А это по-вашему не скрипт?:

<? if ($tpl['post']['prev-next']['prev']['title']){ ?>
<small><a href="<?=$tpl['post']['prev-next']['prev']['link']; ?>">&laquo; <?=$tpl['post']['prev-next']['prev']['title']; ?></a></small>
<? } ?> 

(приведён фрагмент из шаблона Default/full.tpl)

Andrey_1cov, сумбурно как-то, давайте сначала:

1. Вы хотите вставить код в тело новости и нужно, чтобы он выводился только в шаблоне для печати? Следовательно, в обычном шаблоне этого кода быть не должно.

2. "Плагин для вставки php" - это, как я понимаю, либо "Eval" (выполнение php-кода в тексте новости), либо "Post Type" (тип поста "чистый php-код")? Однако, вас не интересует выполнение кода нигде, кроме шаблона печати.

Я приблизительно правильно понял?

Ну тогда вставьте ваш php-код в нужное место шаблона Print/full.tpl

6

(2 ответов, оставленных в Ваши сайты)

GuzElena, ок, но причём здесь Strawberry? Этот раздел для презентации сайтов сделанных только на нашем движке.

cmd пишет:

Вот такая нехитрая конструкция...

Большое человеческое спасибо!

8

(14 ответов, оставленных в Проблемы и их решения)

HumanQ, 1321963875time это:

1321963875 - реакция на echo time();

time - реакция на echo time; почему-то, хрен знает.

cmd, главное преимущество: если открывается полная новость, то выполняется только один запрос к таблице story с выбором одной записи. Ну и ещё несколько не столь очевидных преимуществ, таких, например, как: количество новостей в категории, "активные даты" календаря, "все статьи автора" и т.п.; то есть везде, где не нужны поля short и full, а достаточно только id, или заголовка новости, или даты создания, или наличия/отсутствия комментариев, или авторства и т.п.

10

(42 ответов, оставленных в Дополнения: хотелка)

olafsen, я редко предлагаю непроверенные решения, в-основном, когда оно (решение) интуитивно понятно и "вертится на кончике пера". В данном же случае, решение мне нихрена не понятно, выдрано мною из интернета и на моих сайтах отлично работает. Так что за него я ручаюсь. Может быть дело в версиях джей-куэри и прототайпа, в порядке их подключения и прочих нюансах? Не скажу, потому что сам не до конца разбираюсь.

11

(4 ответов, оставленных в Проблемы и их решения)

yukon и cmd, если внимательно пороетесь по форуму (не помню где, простите), то увидите, что я готовое решение уже давал.

Upd вспомнил: http://strawberry.goodgirl.ru/forum/topic/3921/

12

(42 ответов, оставленных в Дополнения: хотелка)

cmd пишет:

По статистике, более 50% сайтов используют jQuery

Я бы акцентировал: "намного более 50%"...

Лекарство: ставим в начале кода сразу после открывающего тега java-скрипта jQuery-функцию $.noConflict(); вот так:

<script type="text/javascript">
  $.noConflict();
  ...jQuery-функции...
</script>

и навсегда забываем о конфликтах jQuery с другими библиотеками (типа prototype и п.х.).

cmd пишет:

Не видел Quixplorer под Клубничку. Что это?

http://strawberry.goodgirl.ru/forum/topic/4000/

anubees, или в админке видны, а на сайте нет? Такое бывает, если для категории установлен какой-то несуществующий или нерабочий шаблон.

alek пишет:

Как быть?

Порыться по форуму.

meekoka, {rule=1.}

http://strawberry.goodgirl.ru/forum/topic/4071/

16

(7 ответов, оставленных в Проблемы и их решения)

yukon, пароли и явки - мне на мыло или в личку.

cmd, у меня нет конкретных замеров, только "на глазок", но с тех пор, как мой любимый хостинг произвёл некоторый апргейд своего железа и софта, я вообще повырубал кэш на всех сайтах, которые там находились. Результаты меня просто поразили.

Теперь конкретно: давайте не будем забывать, что "кэширование" - это запись некоторой информации в файл и последующее чтение её из файла. Два запроса к БД и чтение содержимого одного файла (пусть даже самого маленького) - величины совершенно несопоставимые. Десять, двадцать, пятьдесят запросов к БД по-любому менее ресурсоёмки, чем поиск в папке cashe одного из сотен и даже тысяч других файлов (т.е. операция идентификации файла по имени), чтение файла и его выгрузка через тот же поток, через который загружалась страница (ведь файлы кэша, движок, страницы, графика и п.х. находятся физически на одном сервере). А, с учётом того, что информация, находящаяся в кэше, может молниеносно устаревать (следовательно, вынуждена постоянно обновляться), то выигрыш в борьбе кэша против запросов вообще сводится к нулю... даже к отрицательным величинам.

По моему скромному мнению, кэширование в том виде, в котором оно представлено в Strawberry, - это историческая реликвия, оставшаяся от более ранних версий движка, когда [s]деревья были большими,[/s] сервера были слабыми, каналы узкими, интернет медленным, и даже txtSQL мог составить достойную конкуренцию майэскуэлю.

Zomb1e, если он именно это имел в виду, то ни в одном плагине или моде вы этого не найдёте. Для этого есть такие понятия как cute_get_rights и usergroups.

А что касается конкретно плагина keywords, то в админке: "Настройка - Группы пользователей - Разрешить установки поля "Добавить ключевые слова"" настраивается разрешение/запрет показа в режиме добавления/редактирования контейнера "Добавить ключевые слова" из функции keywords_AddEdit() плагина keywords.php:

<fieldset id="add_keywords">
...
</fieldset>

Данная функция, в свою очередь, запускается экшенами "new-advanced-options" и "edit-advanced-options" в режиме добавления/редактирования новостей.

Вот начало фрагмента кода из inc/mod/usergroups.mdu, который формирует этот список:

<td><b><?=t('Права на поля в добавить/редактировать новость'); ?></b>

<?
preg_match_all('/fieldset id="(.*?)"><legend>(.*?)<\/legend>/i', run_actions('new-advanced-options'), $fields['new']);
preg_match_all('/fieldset id="(.*?)"><legend>(.*?)<\/legend>/i', run_actions('edit-advanced-options'), $fields['edit']);

$fields[1] = array_merge($fields['new'][1], $fields['edit'][1]);
$fields[1] = array_unique($fields[1]);
$fields[2] = array_merge($fields['new'][2], $fields['edit'][2]);
$fields[2] = array_unique($fields[2]);

unset($fields[0], $fields['new'], $fields['edit']);

foreach ($fields[2] as $k => $field){
?>
и так далее...

И всё, и никаких секретов!

cmd и Zomb1e, проверка как раз есть. Проверяется, какой именно плагин запущен в админке:

if ($_GET['plugin'] == 'keywords'){

Постараюсь объяснить по-русски.

Когда активизируется любой экшн, например "plugins", то админка проверяет все функции, описанные в этом экшене, например:

add_action('plugins', 'keywords_CheckAdminOptions');
add_action('plugins', 'adepto_CheckAdminOptions');
add_action('plugins', 'xfields_CheckAdminOptions');
и так далее - все включенные плагины, в которых есть экшн "plugins"

Дело в том, что процедуре run_action('plugins'); совершенно пофигу какая именно нам функция нужна, она запускает их все по признаку экшена. Поэтому строка:

if ($_GET['plugin'] == 'имя_плагина'){

определяет - какой плагин запущен из командной строки, то есть в каком именно плагине мы в данный момент работаем. Остальные функции не сработают.

cmd, теперь "читаем" ваш фрагмент полностью:

function keywords_CheckAdminOptions(){

    //если работаем в плагине "keywords"
    if ($_GET['plugin'] == 'keywords'){
        
        //то, если включен экшн "add"
        if ($_GET['action'] == 'add'){
            keywords_ajax_add(); //запустить эту функцию

        //иначе, если включен экшн "remove"
        } elseif ($_GET['action'] == 'remove'){
            keywords_ajax_remove(); //запустить эту функцию
        }
    }
}

поскольку экшены "add" и "remove" есть и в других плагинах, то первая строка проверки очень даже полезна.

Лирическое отступление. В плагинах существует общий принцип именования функций:

Функции с суффиксом _CheckAdminOptions - это определение того, в каком плагине мы работаем
_AddToOptions - доступ к настройкам плагина в меню "Настройки"
_AdminOptions - сама функция обработки настроек

и т.д.

20

(14 ответов, оставленных в Мастерская)

mixerden, варианты:

1. В таблице стилей (фрагмент):

<style>
table.excel {
    border-style:ridge;
    border-width:1;
    border-color:#808080;
    border-collapse:collapse; 
    font-family:sans-serif;
    font-size:10pt;
    width:100%;
}

замените в параметре width значение 100% на нужную вам ширину.

2. Выводите функцию excel_view в контейнере с заданной шириной, например:

<div style="width:450px">
<? excel_view('sample.xls'); ?>
</div>

21

(2 ответов, оставленных в Проблемы и их решения)

Turned,

<link><?=htmlspecialchars('http://www.название_сайта.ru/index2.php?id='.$tpl['post']['id']); ?></link>

Amdi, вот здесь пост #30.

{rule=1.2.}

olafsen, попробуйте заменить в коде функцию strtoupper на mb_strtoupper (посмотрите в справочнике, как выглядят параметры mb_strtoupper). Если получится, то, скорее всего, версия php здесь не причём, виновата локаль. Для определения правильной локали вашего хоста поищите по слову "setlocale*" в форуме (без кавычек, естественно).

24

(7 ответов, оставленных в Проблемы и их решения)

olafsen, а что здесь неясного? Функция mysql_list_tables() устарела и в версии php 5.3.1 не используется. Поищите в гугле или в Яндексе как с этим бороться.

Но есть более дельный совет: один хрен "родной" бэкапер от Strawberry - отстой, лучше пользуйтесь каким-нибудь "сторонним" дампером. Вот например, Sypex Dumper - отличная вещь.

yukon,

$cat = str_replace(' ', '', $_GET['cat']); //Удаляем все пробелы из $_GET['cat']
$cat_m = explode(",", $cat); //Делаем из результата массив