Хак на заголовок модуля

Тема в разделе "Программирование", создана пользователем sergv2005, 19.08.2007.

  1. Offline

    sergv2005 Пользователь

    Регистрация:
    18.01.2006
    Сообщения:
    421
    Симпатии:
    20
    Пол:
    Мужской
    Вобщем такой вопрос. Сделал из двух модулей один, это было не сложно, а вот теперь надо его немного доработать, что у меня не всё получилось. Вобщем не разобрался в двух проблемах.

    1. Как получить ссылку на на выбранную категорию? В данном случае надо, чтобы переменной была присвоена ссылка на выбранную категорию из меню настроек модуля. Пока сделал ввод ссылки вручную, что не очень удобно.
    2. Полученную ссылку на категорию повесить на заголовок модуля, сделав заголовок ссылкой. Здесь я не нашёл как получить имя заголовка модуля, не говоря уже о том, как заголовок превратить в ссылку. Пока сделал отдельный заголовок в настройки модуля.

    Помогите разобраться с этим, модуль оч нужен, я из за него не как сайт доделать не могу.
     
  2.  
  3. Offline

    sergv2005 Пользователь

    Регистрация:
    18.01.2006
    Сообщения:
    421
    Симпатии:
    20
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    Ну что, не кто не знает, есть тут кто из программеров? Или хотябы подскажите где какой файл отвечает за первую(общую для всех модулей) часть настроек модуля.
     
  4. Jkr
    Offline

    Jkr Группа поддержки

    Регистрация:
    04.08.2006
    Сообщения:
    464
    Симпатии:
    27
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    По первому вопросу: тебе обязательно нужно в настройках модуля выбирать категорию? или достаточно указывать ее id?
    1) если id, то в xml модуля добавляешь <params></params>:
    Код (CODE):
    1. <param name="как_хочешь" type="text" default="" label="ID категории" description="ID категории для ссылки в модуле" />

    потом в php модуля в начале, где определяются переменные добавляешь:
    Код (CODE):
    1. $как_хочешь_1 = $params->def( 'как_хочешь', 0 );

    а в ссылку в стандартный макет добавляешь переменную $как_хочешь_1:
    Код (CODE):
    1. index.php?option=com_content&amp;task=blogcategory&amp;id=<?php echo $как_хочешь_1;>&amp;Itemid=9999


    2) если надо именно выпадающий список с категориями:
    в xml:
    Код (CODE):
    1. <param name="catid" type="mos_category" default="0" label="Категория" description="Категория содержимого" />

    в php в начало:
    Код (CODE):
    1. $catid = intval( $params->get( 'catid' ) );

    в ссылку как в пункте 1.

    По второму вопросу: заголовок у нас генерируются отдельно, если поменять эту функцию, то у всех шаблонов заголовки будут выводиться по-новому. Поэтому проще сделать хитрость: не трогать функцию вывода заголовка модуля, в настройках модуля поставить "не показывать заголовок", да еще и стиль вывода позиции модуля в шаблоне поставить "-1" (без всего) а в самом модуле сделать над основной частью вывод заголовка как надо (либо в <th>, либо в <h3 id="мой_модуль" + h3#мой_модуль {...} - в зависимости от того, как выводим). Если надо чтобы был как обычно (тот же фон под этим модулем, что и под другими), то стиль для заголовка делаем такой же. А сам текст просто заключаем в ссылку, получится что-то типа:
    Код (CODE):
    1. <table class="moduletable">
    2. <tr><th><a href="http://ла-ла-ла/index.php?option=com_content&amp;task=blogcategory&amp;id=<?php echo $как_хочешь_1;>&amp;Itemid=9999" class="выбирайте сами"></a></th></tr>
    3. <tr><td>вывод модуля</td></tr>
    4. </table>
    .

    Если же для всех модулей надо ссылку добавить в заголовок, то см. файл ../includes/frontend.html.php, в нем функция modoutput_table, там ссылку добавляете.
     
  5. Offline

    sergv2005 Пользователь

    Регистрация:
    18.01.2006
    Сообщения:
    421
    Симпатии:
    20
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    Jkr, я в общем то уже сделал модуль, просто сделав поле в настройках для заголовка-ссылки и поле для ввода адреса нужной страницы.
    С получением адреса я уже много раз пробовал, как получить ид я знаю, но ид это ещё не всё, так как там идет ещё Itemid, а вот до него я так и не добрался.
    По $catid мне не нужно делать выпадающий список, он уже и так есть, я думал выдрать из этой переменной ссылку чтобы присвоить её заголовку.

    По самому заголовку, я сделал в див контейнере заголовок, и настройка идет через суфикс модуля в шаблоне сайта. Ну и раз отдельно нельзя для модуля привязаться к заголовку модуля, то так и оставлю.

    Вобщем спасибо Jkr за ответ, жаль ток что это я и так всё знал, я надеялся узнать как всё же прямую ссылку получить для выбранной категории. Да ток неправильно вопрос сформулировал, вот и не узнал нечего что меня интересует. :( Но да ладно, ща попробую точней сформулировать.

    1. Имеется выпадающий список категорий, откуда берется содержимое для вывода в модуль. Что выбрано получает переменная $catid, и если правильно понял, то там по идее должна быть ссылка. Но вот как оказалось там ссылки вроде нет, во всяком случае получить мне её не удалось.
    Надыбал в файлах модулей такой код, который получает ссылку на статью:
    Код (CODE):
    1. $link = sefRelToAbs( 'index.php?option=com_content&amp;task=view&amp;id='. $row->id . $Itemid );

    пытался химичить с ней, заменив view на blogcategory, как в ссылке и должно было бы быть, но концовку, а именно &Itemid=ХХ так и не смог получить. Вобщем сделал только то, что просто подставлял номер Itemid.
    Пока так и оставил поле для полной ссылки. :(

    По второму вопросу, уже снимается, раз нельзя отдельно присвоить, то ладно, использую свой заголовок.

    Ах да, вот что хотел спросить ещё, как добавить в настройки модуля текстовое поле с ксс файлом в нём для редактирования. Тоесть я хочу сделать модулю дополнительный ксс для внутренних настроек модуля, чтобы можно было кое что прям в модуле настроить.
    Просто я попытался внедрить пхп код прям в стиль в самом файле модуля, но это сработало только для IE6, а лиса с оперой не приняли это. А делать внутренную структуру на таблице не очень хочется, чтобы кой какие параметры поменять. Поэтому хочу встроить редактор в настройки модуля, чтобы ксс править. Вобщем надо чтобы редактор считывал файл ксс, как это сделать?
     
    Последнее редактирование: 20.08.2007
  6. Jkr
    Offline

    Jkr Группа поддержки

    Регистрация:
    04.08.2006
    Сообщения:
    464
    Симпатии:
    27
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    что-то мне подсказывает, что itemid можно получить только через запрос в базу в таблицу с меню и там по $catid выдрать $itemid.
    css тебе нужен, чтобы в него писать что-то из переменных php? тогда тебе нужно вставлять его в php-файл в рамках <style></style>... может проще сделать поля для конкретных настроек (типа цвета рамки/фона), а в самом модуле выводить их через атрибут style="background-color: тут переменная"?
     
  7. Offline

    sergv2005 Пользователь

    Регистрация:
    18.01.2006
    Сообщения:
    421
    Симпатии:
    20
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    Jkr, по получению адреса ладно, потом разберусь, пока так оставлю как есть.
    Насчет стилей, ты не понял, я и так делал в рамках <style></style>..., в самом файле модуля. Проблема в том, что если я вместо параметра к примеру для бакгроунда вставляю переменную, то это работает только в IE6, а в лисе и опере не срабатывает. Другими словами, другие браузеры кроме IE6 не хотят принимать пхп код внутри <style></style>..., почему незнаю. Вчера раз десять пробовал для разных параметров, цвет, бордюр, фон и т.д., работает ток в осле. Пришлось сделать на таблице, и уже в саму таблицу вставлять пхп код.
    Вобщем для этого мне и нужен был встроенный редактор в модуль, для редактирования отдельного ксс для модуля. Ну да ладно, пока использую табличный вариант, тем более что мне всего то надо фон, бордюр и цвет для них.
     
  8. Jkr
    Offline

    Jkr Группа поддержки

    Регистрация:
    04.08.2006
    Сообщения:
    464
    Симпатии:
    27
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    php-код "применяет" сервер. браузеру достается только конечное значение переменной... покажи примеры пхп-кода...
     
  9. Offline

    sergv2005 Пользователь

    Регистрация:
    18.01.2006
    Сообщения:
    421
    Симпатии:
    20
    Пол:
    Мужской
    Ответ: Хак на заголовок модуля

    Jkr, знаю что сервер обрабатывает, да и зачем код, он стандартный, но да ладно, вот как делал:

    Код (CODE):
    1. $bkg_color = $params->get( 'backgr_color' );
    2.  
    3. <style tipe="text/css">
    4. .flash { background-color: <?php echo $bkg_color; ?>; margin: 0 0 4px 0; }
    5. .......
    6. </style>
    7.  
    8. <div class="flash">
    9. .........
    10. </div>
     
  10. Offline

    rbarom Недавно здесь

    Регистрация:
    21.11.2006
    Сообщения:
    48
    Симпатии:
    0
    Пол:
    Мужской
    Re: Ответ: Хак на заголовок модуля

    Интересует второй вопрос. Сделал, как в цитате, получил заголовок модуля в содержимом, но вот ссылкой он не становится. Как это в 1.5 сделать? У меня проще случай, мне надо просто прописать туда отдельно взятую ссылку, безо всяких переменных.
     

Поделиться этой страницей

Загрузка...