имеем ссылку на руском при переходе на украинский создаетя ссылка но она работать не будет через uk/ его отключать не могу. что правельнее будет зделать? --- Добавлено, 29 июл 2018 --- В основном меню сделал прямую. но от футер напрягает. Плюс пока не понятно есть ли ещё другой способ перехода --- Добавлено, 29 июл 2018 --- PHP: <modification> <id>Adds product question form and general questions module</id> <version>1.1.5</version> <vqmver>2.3.2</vqmver> <author>bull5-i</author> <file name="admin/controller/common/header.php"> <operation> <search position="after"><![CDATA[ $this->data['text_review'] = $this->language->get('text_review'); ]]></search> <add><![CDATA[ $this->data['text_questions_and_answers'] = $this->language->get('text_questions_and_answers'); ]]></add> </operation> <operation> <search position="after"><![CDATA[ $this->data['review'] = $this->url->link('catalog/review', 'token=' . $this->session->data['token'], 'SSL'); ]]></search> <add><![CDATA[ if ($this->config->get('qap_status')) { $this->data['qap'] = $this->url->link('catalog/questions_and_answers', 'token=' . $this->session->data['token'], 'SSL'); } ]]></add> </operation> </file> <file name="admin/controller/common/home.php"> <operation> <search position="after"><![CDATA[ $this->data['text_total_review_approval'] = $this->language->get('text_total_review_approval'); ]]></search> <add><![CDATA[ $this->data['text_total_questions'] = $this->language->get('text_total_questions'); $this->data['text_total_unanswered_questions'] = $this->language->get('text_total_unanswered_questions'); $this->data['text_total_disabled_qas'] = $this->language->get('text_total_disabled_qas'); ]]></add> </operation> <operation> <search position="after"><![CDATA[ $this->data['total_review_approval'] = $this->model_catalog_review->getTotalReviewsAwaitingApproval(); ]]></search> <add><![CDATA[ if ($this->config->get('qap_status')) { $this->load->model('catalog/questions_and_answers'); $this->data['qap_total_questions'] = $this->model_catalog_questions_and_answers->getTotalQuestions(); $this->data['qap_total_unanswered_questions'] = $this->model_catalog_questions_and_answers->getTotalUnansweredQuestions(); $this->data['qap_total_disabled_qas'] = $this->model_catalog_questions_and_answers->getTotalDisabledQuestionsAndAnswers(); $this->data['qap_questions'] = $this->url->link('catalog/questions_and_answers', 'token=' . $this->session->data['token'], 'SSL'); $this->data['qap_unanswered_questions'] = $this->url->link('catalog/questions_and_answers', 'filter_answers=0&token=' . $this->session->data['token'], 'SSL'); $this->data['qap_disabled_qas'] = $this->url->link('catalog/questions_and_answers', 'filter_approval=1&token=' . $this->session->data['token'], 'SSL'); } ]]></add> </operation> </file> <file name="admin/language/english/common/header.php"> <operation> <search position="after"><![CDATA[ $_['text_review'] ]]></search> <add><![CDATA[$_['text_questions_and_answers'] = 'Q & A PRO'; ]]></add> </operation> </file> <file name="admin/language/english/common/home.php"> <operation> <search position="after"><![CDATA[ $_['text_total_review_approval'] ]]></search> <add><![CDATA[$_['text_total_questions'] = 'No. of Questions:';$_['text_total_unanswered_questions'] = 'Total Unanswered Questions:';$_['text_total_disabled_qas'] = 'Questions & Answers Awaiting Approval:'; ]]></add> </operation> </file> <file name="admin/view/template/common/header.tpl"> <operation> <search position="after"><![CDATA[ <li><a href="<?php echo $review; ?>"><?php echo $text_review; ?></a></li> ]]></search> <add><![CDATA[ <?php if(isset($qap)) { ?> <li><a href="<?php echo $qap; ?>"><?php echo $text_questions_and_answers; ?></a></li> <?php } ?> ]]></add> </operation> </file> <file name="admin/view/template/common/home.tpl"> <operation> <search position="after" offset="1"><![CDATA[ <td><?php echo $total_review_approval; ?></td> ]]></search> <add><![CDATA[ <?php if(isset($qap_total_questions)) { ?> <tr> <td><a href="<?php echo $qap_questions; ?>"><?php echo $text_total_questions; ?></a></td> <td align="right"><?php echo $qap_total_questions; ?></td> </tr> <tr> <td><a href="<?php echo $qap_unanswered_questions; ?>"><?php echo $text_total_unanswered_questions; ?></a></td> <td align="right"><?php echo $qap_total_unanswered_questions; ?></td> </tr> <tr> <td><a href="<?php echo $qap_disabled_qas; ?>"><?php echo $text_total_disabled_qas; ?></a></td> <td align="right"><?php echo $qap_total_disabled_qas; ?></td> </tr> <?php } ?> ]]></add> </operation> </file> <file name="catalog/controller/account/login.php"> <operation error="log"> <ignoreif><![CDATA[ // GET REQUEST REDIRECT ]]></ignoreif> <search position="before"><![CDATA[ } elseif (isset($this->session->data['redirect'])) { ]]></search> <add><![CDATA[ } elseif (isset($this->request->get['redirect'])) { // GET REQUEST REDIRECT if ($this->request->get['redirect'] == "1" && isset($this->request->server['HTTP_REFERER'])) { $this->data['redirect'] = $this->request->server['HTTP_REFERER']; } else if (strlen($this->request->get['redirect']) >= 5) { $this->data['redirect'] = $this->url->link($this->request->get['redirect'], '', 'SSL'); } ]]></add> </operation> </file> <file name="catalog/controller/common/seo_url.php"> <operation error="log"> <search position="before"><![CDATA[ return $this->forward($this->request->get['route']) ]]></search> <add><![CDATA[ if ($this->request->get['_route_'] == "faq") { $this->request->get['route'] = 'module/questions_and_answers/faq'; } ]]></add> </operation> <operation error="log"> <search position="before"><![CDATA[ } elseif ($key == 'path') { ]]></search> <add><![CDATA[ } elseif ($key == 'route' && $value == 'module/questions_and_answers/faq') { $url .= '/faq'; ]]></add> </operation> </file> <file name="catalog/controller/common/header.php"> <operation error="log"> <search position="after"><![CDATA[ $this->data['checkout'] ]]></search> <add><![CDATA[ $this->data['qap_status'] = (int)$this->config->get('qap_status') && (int)$this->config->get('qap_enable_general_questions'); $this->data['text_faq'] = $this->language->get('text_faq'); $this->data['qap_faq'] = $this->url->link('module/questions_and_answers/faq'); ]]></add> </operation> </file> <file name="catalog/controller/common/footer.php"> <operation error="log"> <search position="after"><![CDATA[ $this->data['newsletter'] ]]></search> <add><![CDATA[ $this->data['qap_status'] = (int)$this->config->get('qap_status') && (int)$this->config->get('qap_enable_general_questions'); $this->data['text_faq'] = $this->language->get('text_faq'); $this->data['qap_faq'] = $this->url->link('module/questions_and_answers/faq'); ]]></add> </operation> </file> <file name="catalog/controller/product/product.php"> <operation> <search position="after"><![CDATA[ if ($product_info) { ]]></search> <add><![CDATA[ // QAP start $modules = $this->config->get('questions_and_answers_module'); if (is_array($modules) && count($modules)) { $qap = $modules[0]; } else { $qap = null; } if ($this->config->get('qap_status') && isset($qap['status']) && (int)$qap['status'] && $qap['position'] == 'content_tab') { $this->data['qap_status'] = 1; $qap_module = $this->getChild('module/questions_and_answers', $qap); $this->data['tab_qap'] = $this->language->get('heading_title_module_product'); $this->data['qas'] = $qap_module; } else { $this->data['qap_status'] = 0; } // QAP end ]]></add> </operation> </file> <file name="catalog/language/english/common/header.php"> <operation> <search position="after"><![CDATA[ $_['text_home'] ]]></search> <add><![CDATA[$_['text_faq'] = 'FAQ'; ]]></add> </operation> </file> <file name="catalog/language/english/common/footer.php"> <operation> <search position="after"><![CDATA[ $_['text_information'] ]]></search> <add><![CDATA[$_['text_faq'] = 'FAQ'; ]]></add> </operation> </file> <file name="system/engine/loader.php"> <operation error="skip"> <!-- For OpenCart 1.5.1.0 - 1.5.2.1 --> <ignoreif><![CDATA[ public function helper($helper) ]]></ignoreif> <search position="before"><![CDATA[ public function model ]]></search> <add><![CDATA[ public function helper($helper) { $file = DIR_SYSTEM . 'helper/' . $helper . '.php'; if (file_exists($file)) { include_once($file); } else { trigger_error('Error: Could not load helper ' . $helper . '!'); exit(); } } ]]></add> </operation> </file> <!-- For custom theme integration duplicate the following block --> <!-- Copy: START --> <file name="catalog/view/theme/default/template/common/header.tpl"> <operation error="log"> <!-- This puts the FAQ link into the header links section (the default location is after the Checkout link). If you wish to change the tab location, then this is the place to do it. Note that custom templates can use different markup for the header links area. --> <search position="replace"><![CDATA[ <?php echo $text_checkout; ?></a> ]]></search> <add><![CDATA[<?php echo $text_checkout; ?></a><?php if ($qap_status) { ?><a href="<?php echo $qap_faq; ?>"><?php echo $text_faq; ?></a><?php } ?>]]></add> </operation> </file> <file name="catalog/view/theme/default/template/common/footer.tpl"> <operation error="log"> <!-- This puts the FAQ link into the footer Extras links section (the default location is after the Specials link). If you wish to change the tab location, then this is the place to do it. Note that custom templates can use different markup for the footer Extras links area. --> <search position="after"><![CDATA[ <li><a href="<?php echo $special; ?>"><?php echo $text_special; ?></a></li> ]]></search> <add><![CDATA[ <?php if ($qap_status) { ?><li><a href="<?php echo $qap_faq; ?>"><?php echo $text_faq; ?></a></li><?php } ?> ]]></add> </operation> </file> <file name="catalog/view/theme/default/template/product/product.tpl"> <operation> <!-- This puts the product questions tab name into its position (the default location is after the Specification tab). If you wish to change the tab location, then this is the place to do it. Note that custom templates can use different markup for the tabs. List items are one of the most common alternatives used. IMPORTANT! Do not change the link/anchor for the downloads tab, it must stay "tab-qap". It does not matter if your custom template is using a different naming scheme. --> <search position="after" offset="1"><![CDATA[ <a href="#tab-attribute"><?php echo $tab_attribute; ?></a> ]]></search> <add><![CDATA[ <?php if ($qap_status) { ?> <a href="#tab-qap"><?php echo $tab_qap; ?></a> <?php } ?> ]]></add> </operation> <operation> <!-- Partial match. This puts the product questions tab contents into place. The location is not that important, just make sure it is on the same level with the other tabs' content elements. IMPORTANT! Do not change the div ID attribute, it must be "tab-qap", otherwise the extension WILL NOT WORK. It does not matter if your custom template is using a different naming scheme. --> <search position="after"><![CDATA[ <div id="tab-description" ]]></search> <add><![CDATA[ <?php if ($qap_status) { ?> <div id="tab-qap" class="tab-content qap-ov" style="display:none;"><?php echo $qas; ?></div> <?php } ?> ]]></add> </operation> </file> <!-- Copy: END --></modification><!--<modification> - This is the highest level of the file and there can only be one<id> - This is the name of the mod. Format: Free form text. (Informational)<version> - This is the version of the mod. Format: Number and Decimal (1.0.0) (Informational)<author> - This is the author of the mod. Format: Free form text (Informational)<file> - This is the name of the file to modify. Requires attribute "name" as relative filename (catalog/controller/product/product.php). There can be multiple<operation> - This is the wrapper of the actual operation occuring. There can be multiple operations to the same file.<search> - This is the first required step of the operation. Uses an optional attribute "position" set to before|after|replace. replace is default. One per operation. Use CDATA tags to wrap code.<add> - This is the second required step of the operation. Uses an optional attribute "trim" set to true|false to trim away whitespace and linebreaks. false is default. One per operation. Location of added data depends on the position of the <search> command. Use CDATA tags to wrap code.<![CDATA[ ]]> - These are called CDATA tags and they are used by xml to specify that the data between should not be evaluated.--> [/HTML] --- Добавлено, 29 июл 2018 --- переменнная что в ответе text_faq --- Добавлено, 29 июл 2018 --- как ее заставить выдавать только 1 ссылку?
MGT1, надо модификаторы не этого модуля смотреть, а того, который язык в ссылки добавляет. И добавить там исключение для этого модуля. Либо наоборот - можно этот модуль заставить работать с языковыми ссылками, но для начала его надо заставить работать с SeoPro, ибо я вижу модификатор только для стандартного seo_url.
сео про у меня нет вообще) тут паладин комбайном стоит. В него вносить по-ходу будет дольше. Думал в тупую через редирект, но это будет плодить нежелательный переход. --- Добавлено, 30 июл 2018 --- А если в тупую пойти через 301 редирект? или это кощунство?)
А нельзя просто прописать что text_faq = такая-то ссылка? --- Добавлено, 30 июл 2018 --- Язык меняется в зависимость от включеного. Т.е. прописую название сайта/faq работает и на укр и на рус.
Так в меню же и так всё время выводится ссылка без языка. Проблема именно с ЧПУ: если переключаешь язык - редиректит на ссылку с языком и в ответ 404. И я заметил ещё один косяк, который касается сайта в целом: если я на украинской версии и переключаюсь на русский, то в адресе остаётся uk. Если же затем я переключаюсь обратно на украинский, то язык из адреса исчезает. То есть, обновление адреса страницы происходит с опозданием на один шаг. На саму смену языка это никак не влияет. Я заметил потому, что в случае с faq, на украинской версии языка в адресе нет и тут внезапно при переключении на русский в адресе появляется uk. В общем, через какой бы модуль сейчас не работало добавление языка в ссылку - на свалку его (либо на допил)!
Стоит паладин 4.9.0. Хрень редкая. Удалить не могу - нахер угробит весь сайт) он свои таблицы плодит везде. Опять же хрень. даже с опенкарта его убрали с продажи. Единственный вариант - попробовать обновить до версии 5.2.6. Но мляя нету ченджлога что-бы понять что там ещё поменяли) Да и братся за это никто не хочет. Завтра попробую протестировать вообще версию как работать будет.
Обновил до 5.2.6 Вопрос с переключением языка исправлено - UK меняется сразу же --- Добавлено, 5 авг 2018 --- Вопрос ссылки решил через переадресацию 404 на правильную (не знаю как поискоии на это реагируют)
Я по прежнему вижу проблему: если у меня открыта /faq и я переключаюсь с русского на украинский, то меня перенаправляет на /uk/faq и в ответ 404. Исчезла только проблема с запаздыванием на шаг добавления/удаления языка в адресе.