0 Пользователей и 1 Гость просматривают эту тему.
  • 548 Ответов
  • 22809 Просмотров
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #390 : 06.11.2015, 22:12:21 »
необязательно это именно права пользователя.
попробуйте открыть любой материал любым другим способом, в обход этой ссылки, при этом отключив плагин SEF в системе, тогда в адресной строке будут более точные параметры (все, что после знака вопроса)
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #391 : 06.11.2015, 22:42:11 »
Всё, права мы выставили - ссылки на материалы активны и ведут на страницу с материалом! И права пользователя позволяют редактировать эту страницу! =)
УРА!
AlekVolsk, спасибо Вам огромное за то, что продолжаете нам помогать! С праздником нас всех! =)

Прикрепляем скрины того, что пока имеем:

*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #392 : 06.11.2015, 22:44:54 »
AlekVolsk, пока писали сообщение, пропустили то, что Вы написали. Нам нужно сделать то, что Вы написали - или это уже можно не делать?
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #393 : 06.11.2015, 22:47:27 »
уже нет, раз все получилось )
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #394 : 06.11.2015, 23:09:10 »
Это хорошо. =)
-------------------
Мы, когда по ссылкам прошли, аж подскочили от радости. Ходим сейчас по ним, любуемся, как всё работает. =)
-------------------
 ...Теперь, когда ссылки работают, мы займёмся оформлением нашего списка со сборниками - подумаем, как всё это можно красиво упаковать: оставить таким списком, который есть сейчас, изменив только шрифты, или всё-таки доработать таблицу с кнопками, которую для нас сделал автор b2z, или ещё как-то... В общем, сегодня определимся с этим.
-----------
По ходу тестирования компонента выявился такой косяк: если удалить сборник, то материалы, которые в нём находятся, пропадают из списка непонятно куда.
Мы вывели "список всех произведений пользователя" (с помощью стандартного функционала Джкмлы) на страницу - материал, который был в удалённом сборнике здесь отображается. Значит, он не удаляется автоматически с удалением сборника. Это хорошо. Но нам нужно, чтобы он с удалением сборника не пропадал, а перемещался в сборник "Материалы без сборника". Подскажите, пожалуйста, где нам нужно дорабатывать код, в модели? Или в плагине, который автоматически добавляет системный сборник "Материалы без сборника"?
« Последнее редактирование: 06.11.2015, 23:14:53 от mila_serdnaya »
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #395 : 06.11.2015, 23:26:47 »
Есть знакомый дизайнер, который благотворительно поможет простенько под место вам это отрисовать? лучше обратитесь к нему, а там и верстальщика найдете, который вам поможет все это превратить в конфетку, либо сами научитесь  :)
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #396 : 07.11.2015, 00:39:38 »
Если бы у нас был знакомый дизайнер или верстальщик, мы бы к нему обязательно обратились. Но его, к сожалению, нет. Поэтому приходится делать всё самим. Поэтому мы и пришли на этот форум за помощью.
Мы ценим вашу поддержку и благодарны за то, вы взялись нам помогать с компонентом - и до сих пор ведёте нас и не бросаете.
Спасибо вам всем большое за это!
----------------------------------
...А сейчас мы ушли разбираться с тем, как нам сделать кликабельными наши сборники: чтобы при нажатии на сборник открывался список материалов, которые в этот сборник входят. А при повторном нажатии на сборник - этот выпадающий список материалов закрывался.
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #397 : 07.11.2015, 02:11:42 »
...Мы нашли код, который показывает выпадающий текст при нажатии на ссылку. При повторном нажатии на ссылку текст "прячется" обратно.
Состоит код состоит из двух частей:
1. Скрипт, который нужно разместить на странице (у нас это файл default.php):
Спойлер
[свернуть]

2. Сам код, который размещается в том месте, где должна быть ссылка с выпадающим текстом (у нас это названия сборников):
Спойлер
[свернуть]

Мы вставили этот скрипт и код в файл default.php, чтобы проверить, как всё работает: при нажатии на ссылку "Текст ссылки",  она раскрывается и появляется текст "Текст текст текст текст". При повторном нажатии текст скрывается. Код рабочий.
----------------------------------
Теперь мы пробуем наш код, который выводит список сборников с материалами, соединить с найденным кодом.
Вот наш код:
Спойлер
[свернуть]

Скрипт размещается отдельно, поэтому с ним никаких вопросов нет. А вот соединить два кода у нас пока не получается.
Мы пока что сделали это так:

<?php foreach($this->items as $key=>$item){
echo '<div><a href="javascript:collapsElement('identifikator')" title="" rel="nofollow">'.$item->title.'</a></div>';
echo '<div id="identifikator" style="display: none">';
echo '<ul id="lvl1">';
foreach($item->articles as $article){
echo '<p><a href="'.JRoute::_('index.php?option=com_content&view=article&id='.$article->id).'">'.$article->title.'</a></p>';
echo '</div>';
 }
echo '</ul>';
echo '</div>';
}   
?>

Возникает ошибка в этом месте:     echo '<div id="identifikator" style="display: none">';
---------------
Мы разные варианты перестановки кода пробовали, но пока ни один не привёл к результату. Будем рады, если подскажете, на что нам нужно обратить внимание, где мы допустили ошибку.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #398 : 07.11.2015, 07:22:37 »
По ходу тестирования компонента выявился такой косяк: если удалить сборник, то материалы, которые в нём находятся, пропадают из списка непонятно куда.
Мы вывели "список всех произведений пользователя" (с помощью стандартного функционала Джкмлы) на страницу - материал, который был в удалённом сборнике здесь отображается. Значит, он не удаляется автоматически с удалением сборника. Это хорошо. Но нам нужно, чтобы он с удалением сборника не пропадал, а перемещался в сборник "Материалы без сборника". Подскажите, пожалуйста, где нам нужно дорабатывать код, в модели? Или в плагине, который автоматически добавляет системный сборник "Материалы без сборника"?

Это не косяк, все логично. Если Вы удаляет сборник, то теряется связь сборника и материала. Вам нужно в модели models/compilation.php изменить функцию public function delete($id) - перед удалением сборника $table->delete($id), поменять у всех связанных с ним материалов ID сборника на ID Вашего системого сборника.

Это запрос тип update:
UPDATE #__chmos_compilations_articles
SET compilation_id = ID вашего систмегого сборника
WHERE compilation_id = ID удаляемого сборника
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #399 : 07.11.2015, 13:40:20 »
Возникает ошибка в этом месте:     echo '<div id="identifikator" style="display: none">';
Вы почему-то поместили внутри цикла foreach закрывающий тэг </div> - сколько раз повторяется цикл, столько раз и будут закрываться предыдущие div'ы.
Еще одно замечание: бессмысленно выводить ul без li.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #400 : 07.11.2015, 16:51:58 »
robert, спасибо за ответ.
Мы исправили код согласно Вашим замечаниям.
Вот что у нас получилось:
Код
<?php foreach($this->items as $key=>$item){
echo '<div><a href="javascript:collapsElement('identifikator')" title="" rel="nofollow">'.$item->title.'</a>';
echo '<div id="identifikator" style="display: none">';
foreach($item->articles as $article){
echo '<p><a href="'.JRoute::_('index.php?option=com_content&view=article&id='.$article->id).'">'.$article->title.'</a></p>';
}
}
echo '</div>';
echo '</div>';
?>

Мы убрали <ul>, убрали  <li>, а также из циклов foreach убрали закрывающий тэг </div>.
Возникает ошибка Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' в этой строке:
echo '<div><a href="javascript:collapsElement('identifikator')" title="" rel="nofollow">'.$item->title.'</a>';

Ошибки не видим. Вроде, код по правилам составлен...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #401 : 07.11.2015, 16:55:43 »
Код: php-brief
echo '<div><a href="javascript:collapsElement(\'identifikator\')" title="" rel="nofollow">'.$item->title.'</a>';
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #402 : 07.11.2015, 19:01:39 »
robert, мы сделали, как вы написали. Не хочет код поддаваться. Ошибка исчезла,
но теперь вместо списка сборников с материалами отображается только кликабельное название первого сборника "Зебр". При нажатии на него, открывается материал "Полоски" (который содержится в этом сборнике) и сборник "Время".

....То есть сейчас мы видим вот это:

Зебр

...А при нажатии на "Зебр" видим вот это:

Зебр
Полоски

Время
---------------------------------------------------
А должны выводиться и быть кликабельными все названия сборников:
....То есть мы должны видеть вот это:

Зебр
Время
Победёныш

....А при нажатии на Зебр, к примеру, мы должны видеть это:
Зебр
Полоски

Время
Победёныш
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #403 : 07.11.2015, 19:07:04 »
Мы только что убрали из кода строку echo '<div id="identifikator" style="display: none">';- все сборники отображаются вместе с материалами в них, но функция сворачивания не работает...
------------------------
Попробовали вернуть строку echo '<div id="identifikator" style="display: none">';, добавив в неё \. Теперь она выглядит так:
echo '<div id="identifikator\" style="display: none">';. В этом варианте отображается только название первого сборника "Зебр". И при нажатии на него ничего не происходит.
------------------------
Изменили строку echo '<div id="identifikator" style="display: none">';, убрав из неё стиль. Сейчас строка выглядит так:
echo '<div id="identifikator" style="">';
В этом варианте при нажатии на материал "Зебр" выпадают все материалы, которые в нем содержатся, а также оставшиеся сборники с материалами. Кликабельный только первый сборник "Зебр". Если мы нажимаем на него второй раз, то всё собирается обратно и мы снова видим только сборник "Зебр".

Подскажите, пожалуйста, а как названия остальных сборников тоже сделать кликабельными?
...Может быть, у нас неподходящий скрипт для этого и, на самом деле, это как-то по-другому надо делать?
« Последнее редактирование: 07.11.2015, 19:25:31 от mila_serdnaya »
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #404 : 07.11.2015, 19:46:43 »
Мы убрали из кода один закрывающий тег </div>. Ситуация улучшилась. Теперь у код работает так, как надо, но только для первого сборника. То есть при нажатии на первый сборник "Зебр", выпадают материалы этого сборника ("Полоски"). При повторном нажатии на сборник материалы сборника скрываются.

Вот так код сейчас выглядит:
Код
<?php foreach($this->items as $key=>$item){
echo '<div><a href="javascript:collapsElement(\'identifikator\')" title="" rel="nofollow">'.$item->title.'</a>';
echo '<div id="identifikator" style="">';
foreach($item->articles as $article){
echo '<p><a href="'.JRoute::_('index.php?option=com_content&view=article&id='.$article->id).'">'.$article->title.'</a></p>';
}
echo '</div>';
}
?>

....Только что нужно сделать для того, чтобы оставшиеся сборники тоже стали раскрывающимися, мы пока не понимаем. У нас, вообще,  складывается ощущение, что найденный нами код нашу задачу решить не сможет...
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #405 : 07.11.2015, 20:04:59 »
Мы убрали из кода один закрывающий тег </div>.
У нас, вообще,  складывается ощущение, что найденный нами код нашу задачу решить не сможет...
Не нужно было его убирать. И найденный вами код работает. Не знаю, почему у вас отбражается только 1 категория. Выложите весь код файла default.php.
Вам пора освоить какие-то азы HTML, JavaScript, PHP, MySQL, чтобы понять, что вы пишете. Иначе это будет бесполезным копипастом. Время, Интернет и самое главное - желание, есть, правда? Я тоже самоучка с нуля, и что вы думаете? Уже 4-й год учусь. Вы потратили только месяц и уже получили такой результат - это очень круто.
И вообще, так и должна выглядеть работа кодера: написал за 15 минут, а отлаживал часами, иногда днями.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #406 : 07.11.2015, 20:08:36 »
robert, вот весь код файла default.php:
Спойлер
[свернуть]
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #407 : 07.11.2015, 20:27:08 »
Цитировать
Время, Интернет и самое главное - желание, есть, правда?

На этом, собственно, и держимся. =)

Цитировать
И вообще, так и должна выглядеть работа кодера: написал за 15 минут, а отлаживал часами, иногда днями.
Раньше мы бы в это не поверили. Подумали бы, что это просто красивые слова, за которыми стоит желание набить себе цену.
Теперь мы очень хорошо понимаем то, о чём Вы говорите. =)

-----------------
robert, мы из-за компьютера не вылезаем уже второй месяц. Мы не просто тупо копируем какие-то коды, - мы просиживаем кучу времени в интернете, изучая и HTML,  и PHP,  и MySQL. Въезжаем в курс по ходу решения наших задач. Учимся на практике, так сказать. А поскольку мы не программисты, и только чуть больше месяца назад начали знакомиться с программированием (до этого мы НИ РАЗУ не имели дело с кодами и программированием, с Joomla, с MySQL - всё это мы видим и слышим в первый раз), то мы и пришли сюда за помощью.
К сожалению, у нас нет возможности сделать сайт за деньги, поэтому мы исходим из той ситуации, в которой мы оказались, и делаем его сами.
Лишний раз спасибо вам всем за то, что не оставляете нас и продолжаете помогать.
И Вам, robert, в частности. =)

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #408 : 07.11.2015, 20:28:10 »
Код: php-brief
<?php 
foreach($this->items as $key=>$item){
echo '<div>';
echo '<a href="javascript:collapsElement(\'identifikator'.$key.'\')" title="" rel="nofollow">'.$item->title.'</a>';
echo '<div id="identifikator'.$key.'">';
foreach($item->articles as $article){
echo '<p><a href="'.JRoute::_('index.php?option=com_content&view=article&id='.$article->id).'">'.$article->title.'</a></p>';
}
echo '</div>';
echo '</div>';
}
?>
И скрипт не надо вставлять дважды.
Код: javascript
<script>
function collapsElement(id){
if ( document.getElementById(id).style.display!='none'){
document.getElementById(id).style.display='none';
}else {
document.getElementById(id).style.display='block';
}
}
</script>
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #409 : 07.11.2015, 20:52:00 »
robert, не совсем поняли про скрипт, который "не надо вставлять дважды".
Мы не увидели в коде повторяющихся скриптов...
-------------------------------------------------
Вставили Ваш код, пошли проверять - работает! =) Ура!
...Мда, до изменений, которые Вы внесли, мы бы точно долго додумывались. =)
Спасибо Вам огромное за помощь!

...Вопрос по ходу возник: сборники сразу с раскрытыми материалами показываются. А хотелось бы, чтобы сборники показывались с закрытыми материалами. Чтобы материалы раскрывались только при нажатии на сборники.
Может быть, вы знаете, где мы можем найти информацию на эту тему?
...Если вдруг Вы знаете сами, как это можно сделать, и можете этим поделиться - мы будем безмерно Вам благодарны за это. Если нет - мы ни в коем случае не настаиваем.
В любом случае хотим лишний раз хотим Вам сказать: спасибо! =)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Создание папок из фронтенда
« Ответ #410 : 07.11.2015, 21:00:39 »
robert, не совсем поняли про скрипт, который "не надо вставлять дважды".
Тот скрипт, который я чуть-чуть поправил, вставлен дважды: в начале файла и внизу.
...Вопрос по ходу возник: сборники сразу с раскрытыми материалами показываются. А хотелось бы, чтобы сборники показывались с закрытыми материалами. Чтобы материалы раскрывались только при нажатии на сборники.
Скрипт, который сворачивает и разворачивает категорию, у вас уже есть. Принцип тот же.
Правда, я бы использовал jQuery, раз он у вас подключен. Но это уже другая песьня.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #411 : 09.11.2015, 19:21:13 »
robert, спасибо, что сказали про  jQuery.
Автор b2z изначально написал код, который представляет список сборников в виде таблицы. Также можно изменять названия сборников, а также удалять их, - для этого есть соответствующие кнопки.
------------
Мы вчера и сегодня разбирались с правилами создания таблиц, а также со стилями CSS (на это нас натолкнуло Ваше, robert, упоминание о jQuery).
Мы поработали над нашей таблицей и вот так она теперь выглядит:
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #412 : 09.11.2015, 19:37:30 »
Мы не просто добавили произведения к сборникам, но и также поработали со стилями. И теперь, когда экран компьютера уменьшается (до размеров мобильного телефона), то таблица отображается корректно.
До того, как мы поработали с этим моментом, при уменьшении размеров экрана из таблицы пропадал весь текст и оставались только кнопки редактирования. Нам удалось это исправить, и мы этим даже немножечко гордимся. =)
Вот код default.php, который мы сейчас имеем:
Спойлер
[свернуть]
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #413 : 09.11.2015, 21:25:07 »
b2z, мы подумали над Вашими словами:
Цитировать
Это не косяк, все логично. Если Вы удаляет сборник, то теряется связь сборника и материала.

Действительно, логичнее, что при удалении сборника всё содержимое сборника тоже удаляется.
В нашем случае удаляется пока что только связь материала со сборником. Подскажите, пожалуйста, что нам нужно сделать для того, чтобы при удалении сборника удалялся и материал, который в нём содержится?
---------------------
Вот наши рассуждения:

Мы так понимаем, что нам нужно, как Вы и писали ранее, в модели models/compilation.php изменить функцию public function delete($id). Только вместо функции update перед удалением сборника $table->delete($id), нам нужно прописать что-то вроде:
все материалы, которые связаны с  ID удаляемого сборника, нужно удалить.

Таблица, в которой прописывается связь материала и сборника - это таблица  chmos_compilations_articles.
Таблица, из которой нужно удалять материал - это таблица content.

Получается, нам нужно, вроде как, обращаться к двум таблицам... Мы смогли додумались только до такого запроса (чувствуем, что в нём море оибок):

DELETE FROM #__content
WHERE id=content_id IN (SELECT content_id FROM #__chmos_compilations_articles WHERE compilation_id = content_id)

--------------------
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #414 : 10.11.2015, 10:21:35 »
А Вы точно уверены, что хотите удалить материалы? Логичнее им назначать системный сборник.
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #415 : 10.11.2015, 10:44:20 »
Я бы сделал 2 кнопки:
1) расформировать сборник - все материалы из него попадают в системный
2) удалить сборник - удаление сборника со всеми материалами, если в нем есть материалы - предложить их сначала переместить в системный
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #416 : 10.11.2015, 13:38:17 »
Цитировать
А Вы точно уверены, что хотите удалить материалы?

b2z, да мы хорошо подумали над этим вопросом. Мы хотим, чтобы при удалении сборника все материалы, которые в нём содержатся, тоже удалялись.
---------------
Перед удалением нужно, чтобы возникала табличка что-то вроде: "Вы уверены, что хотите удалить сборник? Все материалы, которые в нём содержатся, тоже будут удалены." И кнопки "Ок" и "Отмена".
Сейчас возникает табличка: "Are you sure that you want delete this item?". Мы так понимаем, что нам нужно будет просто в языковой файл компонента внести изменения?
*

mila_serdnaya

  • Захожу иногда
  • 432
  • 3 / 0
Re: Создание папок из фронтенда
« Ответ #417 : 10.11.2015, 13:42:26 »
AlekVolsk, мы тоже так сначала хотели. Но потом обдумали более тщательно этот момент и решили, что материалы нужно удалять без переопределения, - сразу вместе со сборником.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Создание папок из фронтенда
« Ответ #418 : 10.11.2015, 15:15:15 »
Ну тогда перед удалением нужно сделать выборку всех ID материалов, которые связаны с этим сборником, и удалить используя модель компонента com_content, чтобы корректно удалились записи из таблиц #__associations и #__assets
*

AlekVolsk

  • Гуру
  • 6915
  • 415 / 4
Re: Создание папок из фронтенда
« Ответ #419 : 10.11.2015, 15:42:46 »
b2z, она сама это однозначно не сделает =)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Создание релиза компонента средствами GitHub

Автор SkyAn

Ответов: 4
Просмотров: 716
Последний ответ 01.11.2019, 17:42:04
от Septdir
[Решено] Создание контент плагина

Автор IvanTopor

Ответов: 4
Просмотров: 1248
Последний ответ 26.02.2016, 13:10:37
от IvanTopor
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1454
Последний ответ 18.08.2015, 11:17:59
от b2z
Создание таблиц средствами компонента

Автор spirit1086

Ответов: 3
Просмотров: 1034
Последний ответ 18.08.2015, 10:17:09
от spirit1086
Создание изображений PHP и GD

Автор vita1971

Ответов: 6
Просмотров: 921
Последний ответ 10.05.2015, 13:10:38
от vita1971