Перейти к содержанию

Рекомендуемые сообщения

Как дать выводимым на странице одинаковым модулям разные #id?

Например, есть модуль обратной связи.

Я го вывожу в левой колонке и в правой колонке.

Получается что-то вроде:

<div id="column-left">

<div class="feedback">{...}</div>

</div>

<div id="column-right">

<div class="feedback">{...}</div>

</div>

Задача сделать так:

<div id="column-left">

<div class="feedback" id="some-id">{...}</div>

</div>

<div id="column-right">

<div class="feedback" id="some-other-id">{...}</div>

</div>

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В админке - названия разные? Эти названия - транскрипция - в id.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Wadamir , вы не совсем поняли вопрос. Модуль один, я его вывожу из настроек модуля в 2 позиция в шаблоне. Мне надо, чтобы в итоге двух этих экземпляров модуля были разные id.

Сейчас просто яваскриптом добавляю attr(id, some-id), но, думаю, что может есть другой вариант...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, afinalux сказал:

Сейчас просто яваскриптом добавляю attr(id, some-id), но, думаю, что может есть другой вариант...

У родительского элемента всегда свой id. Зачем придумывать велосипед если к интересующей "копии" модуля всегда можно обратиться по "#id_родителя > .класс_модуля"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@iglin , к большому сожалению, в jquery dialog (всплывашка) не работает обращение по родителю, иначе я бы не занимался этой фигней.

Если у вас получится и вы покажете работоспособный вариант, я буду благодарен.

Изменено пользователем afinalux

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@afinalux Тогда самое простое, что мне приходит в голову, это в column_left.tpl, column_right.tpl и т.д. "оборачивать" все элементы массива $modules в блоки с определёнными id/

Что то вроде такого:

  <?php $nomer_modulia=1; //номер модуля по порядку ?> 
  <?php foreach ($modules as $module) { ?>
  <div id="left_<?php echo $nomer_modulia; ?>">
  <?php echo $module; ?>
  <div>
   <?php $nomer_modulia++; //увеличиваем номер модуля  ?> 
  <?php } ?>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, iglin сказал:

@afinalux Тогда самое простое, что мне приходит в голову, это в column_left.tpl, column_right.tpl и т.д. "оборачивать" все элементы массива $modules в блоки с определёнными id/

Что то вроде такого:


  <?php $nomer_modulia=1; //номер модуля по порядку ?> 
  <?php foreach ($modules as $module) { ?>
  <div id="left_<?php echo $nomer_modulia; ?>">
  <?php echo $module; ?>
  <div>
   <?php $nomer_modulia++; //увеличиваем номер модуля  ?> 
  <?php } ?>

 

Спасибо за наводку.

Единственная проблема, если изменится порядок модулей или добавится/удалится порядок модуля, все слетит.

Наверное, надо так:

<?php foreach ($modules as $module) { ?>
	<?php if(isset($module['name']) { ?>
  		<div id="left_<?php echo $module['name']; ?>">
   
  <?php echo $module; ?>
  <div>
     <?php } else { ?>
    
      <?php echo $module; ?>
   <?php } ?>
    
  <?php } ?>

Только придется озаботиться наличием $module['name'] в контроллере.

 

Спасибо за совет!

Изменено пользователем afinalux

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то мне у меня закрались сомнения, что моя конструкция заработает =)

Куда надо пихнуть $module['name'], подскажите, плз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
46 минут назад, afinalux сказал:

Что-то мне у меня закрались сомнения, что моя конструкция заработает =)

Куда надо пихнуть $module['name'], подскажите, плз.

Верно она у вас закралась) Чтобы озаботиться наличием ['name'] придётся копать сильно глубже. 

-----------cпустя полчаса раздумий-----------

Если для какого то определённого модуля эта штука требуется, то в голову вот такой костыль пришёл) :

1. В контроллера левой колонки и правой колонки if ($part[0]=='код модуля') то посылаем в функцию index контроллера модуля переменную с обозначением колонки

2. В контроллере модуля эту переданную переменную вписываем в $data['переменная_колонки']

3. В модуль.tpl  'id='.переменная_колонки.'_идентификатор_модуля'

Изменено пользователем iglin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@afinalux   

1.

 $part = explode('.', $module['code']);
        if ($part[0]=='category')  {
            if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
                $module_data = $this->load->controller('extension/module/' . $part[0], 'column_left');

                if ($module_data) {
                    $data['modules'][] = $module_data;
                }
            }
        } else {

2. 

public function index($column) {

...

$data['column'] = $column.'_cat';

3.

<div id="<?php echo $column; ?>">

 

Наверняка есть более элегантный и простой способ, но на скорую руку только такое в голову пришло))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После установки у в массиве $settings будет элемент  module_id

public function index($settings) 
{
	$data['module_id']  =  $settings['module_id'];
}

APL.ocmod.xml

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
42 минуты назад, iglin сказал:

Верно она у вас закралась) Чтобы озаботиться наличием ['name'] придётся копать сильно глубже. 

-----------cпустя полчаса раздумий-----------

Если для какого то определённого модуля эта штука требуется, то в голову вот такой костыль пришёл) :

1. В контроллера левой колонки и правой колонки if ($part[0]=='код модуля') то посылаем в функцию index контроллера модуля переменную с обозначением колонки

2. В контроллере модуля эту переданную переменную вписываем в $data['переменная_колонки']

 3. В модуль.tpl  'id='.переменная_колонки.'_идентификатор_модуля'

Уоу-уоу-уоу, палехче :D Я пока не настолько продвинут в php и opencart.

Прошу вас более детально описать действия, конкретно первый эта:

 if ($part[0]=='код модуля')   - не совсем понятно, что есть $part[0] и где взять 'код модуля' и как и послать их в контроллер =)

Остальное понятно.

 

P.S: в данном случае реализовать это требуется на ocStore 1.5.5.1.2, если это имеет значение.

Спасибо за уделенное время!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@iglin , да, вижу, что не зря указал версию, ибо ваш код, насколько вижу, подходит для версии 2+

 

@ArtemPitov , спасибо, но у меня ниже версия OC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@afinalux ocStore 1.5.5.1.2 у меня к сожалению нет под рукой, так что этот костыль для него написать не смогу)) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@iglin , ок, спасибо.

Буду пытаться адаптировать =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.